<?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>115535</bug_id>
          
          <creation_ts>2013-05-02 16:31:33 -0700</creation_ts>
          <short_desc>Remove the Vector::append overload that takes a Vector</short_desc>
          <delta_ts>2013-05-06 09:17:56 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>884009</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 16:31:33 -0700</bug_when>
    <thetext>Remove the Vector::append overload that takes a Vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884012</commentid>
    <comment_count>1</comment_count>
      <attachid>200368</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 16:35:04 -0700</bug_when>
    <thetext>Created attachment 200368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884015</commentid>
    <comment_count>2</comment_count>
      <attachid>200370</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 16:43:23 -0700</bug_when>
    <thetext>Created attachment 200370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884021</commentid>
    <comment_count>3</comment_count>
      <attachid>200370</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 16:57:43 -0700</bug_when>
    <thetext>Comment on attachment 200370
Patch

Attachment 200370 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/393266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884022</commentid>
    <comment_count>4</comment_count>
      <attachid>200370</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-02 16:58:45 -0700</bug_when>
    <thetext>Comment on attachment 200370
Patch

Attachment 200370 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/393265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884026</commentid>
    <comment_count>5</comment_count>
      <attachid>200370</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 17:01:15 -0700</bug_when>
    <thetext>Comment on attachment 200370
Patch

Attachment 200370 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/393269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884028</commentid>
    <comment_count>6</comment_count>
      <attachid>200370</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-02 17:02:10 -0700</bug_when>
    <thetext>Comment on attachment 200370
Patch

Attachment 200370 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/384287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884033</commentid>
    <comment_count>7</comment_count>
      <attachid>200374</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 17:11:22 -0700</bug_when>
    <thetext>Created attachment 200374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884034</commentid>
    <comment_count>8</comment_count>
      <attachid>200375</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 17:19:02 -0700</bug_when>
    <thetext>Created attachment 200375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884038</commentid>
    <comment_count>9</comment_count>
      <attachid>200377</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-02 17:28:51 -0700</bug_when>
    <thetext>Created attachment 200377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884040</commentid>
    <comment_count>10</comment_count>
      <attachid>200377</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 17:42:19 -0700</bug_when>
    <thetext>Comment on attachment 200377
Patch

Attachment 200377 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/332288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884041</commentid>
    <comment_count>11</comment_count>
      <attachid>200377</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-02 17:49:26 -0700</bug_when>
    <thetext>Comment on attachment 200377
Patch

Attachment 200377 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/333340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884085</commentid>
    <comment_count>12</comment_count>
      <attachid>200377</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-02 22:57:15 -0700</bug_when>
    <thetext>Comment on attachment 200377
Patch

Attachment 200377 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/332355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884175</commentid>
    <comment_count>13</comment_count>
      <attachid>200420</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-03 09:37:48 -0700</bug_when>
    <thetext>Created attachment 200420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884182</commentid>
    <comment_count>14</comment_count>
      <attachid>200424</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-03 09:48:44 -0700</bug_when>
    <thetext>Created attachment 200424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884191</commentid>
    <comment_count>15</comment_count>
      <attachid>200428</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-03 09:59:27 -0700</bug_when>
    <thetext>Created attachment 200428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884205</commentid>
    <comment_count>16</comment_count>
      <attachid>200428</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 10:16:32 -0700</bug_when>
    <thetext>Comment on attachment 200428
Patch

Attachment 200428 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/360492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884207</commentid>
    <comment_count>17</comment_count>
      <attachid>200428</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 10:17:06 -0700</bug_when>
    <thetext>Comment on attachment 200428
Patch

Attachment 200428 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/343470</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884209</commentid>
    <comment_count>18</comment_count>
      <attachid>200436</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-03 10:22:27 -0700</bug_when>
    <thetext>Created attachment 200436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884217</commentid>
    <comment_count>19</comment_count>
      <attachid>200436</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 10:39:33 -0700</bug_when>
    <thetext>Comment on attachment 200436
Patch

Attachment 200436 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/392450</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884220</commentid>
    <comment_count>20</comment_count>
      <attachid>200436</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 10:44:04 -0700</bug_when>
    <thetext>Comment on attachment 200436
Patch

Attachment 200436 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/343477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884224</commentid>
    <comment_count>21</comment_count>
      <attachid>200438</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-03 10:49:00 -0700</bug_when>
    <thetext>Created attachment 200438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884235</commentid>
    <comment_count>22</comment_count>
      <attachid>200438</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 11:11:03 -0700</bug_when>
    <thetext>Comment on attachment 200438
Patch

Attachment 200438 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/332516</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884240</commentid>
    <comment_count>23</comment_count>
      <attachid>200438</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-03 11:23:08 -0700</bug_when>
    <thetext>Comment on attachment 200438
Patch

Attachment 200438 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/332521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884295</commentid>
    <comment_count>24</comment_count>
      <attachid>200438</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-03 12:40:48 -0700</bug_when>
    <thetext>Comment on attachment 200438
Patch

Attachment 200438 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/342020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884618</commentid>
    <comment_count>25</comment_count>
      <attachid>200438</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-04 18:23:21 -0700</bug_when>
    <thetext>Comment on attachment 200438
Patch

I think this is going in the wrong direction.

This:
   target.appendRange(v.begin(), b.end());
reads worse than
   target.appendContent(v);
IMHO.

The appendVector() in IDBLevelDBCoding.h is a bad sign.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884714</commentid>
    <comment_count>26</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 08:21:50 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 200438 [details])
&gt; I think this is going in the wrong direction.
&gt; 
&gt; This:
&gt;    target.appendRange(v.begin(), b.end());
&gt; reads worse than
&gt;    target.appendContent(v);
&gt; IMHO.

OK. (I&apos;ve been doing enough STL programming lately that I don&apos;t think it&apos;s worse). How about we keep appendVector around for now but get rid of the Vector::append overload.

&gt; 
&gt; The appendVector() in IDBLevelDBCoding.h is a bad sign.

IDBLevelDBCoding is a giant mess - it creates a gazillion of temporary vectors which makes the encoding algorithm essentially O(n2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884715</commentid>
    <comment_count>27</comment_count>
      <attachid>200590</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 09:44:28 -0700</bug_when>
    <thetext>Created attachment 200590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884716</commentid>
    <comment_count>28</comment_count>
      <attachid>200590</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-05 09:54:01 -0700</bug_when>
    <thetext>Comment on attachment 200590
Patch

Attachment 200590 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/408110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884717</commentid>
    <comment_count>29</comment_count>
      <attachid>200590</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-05 09:54:26 -0700</bug_when>
    <thetext>Comment on attachment 200590
Patch

Attachment 200590 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/412106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884718</commentid>
    <comment_count>30</comment_count>
      <attachid>200590</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-05 09:55:23 -0700</bug_when>
    <thetext>Comment on attachment 200590
Patch

Attachment 200590 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/401692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884719</commentid>
    <comment_count>31</comment_count>
      <attachid>200590</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-05 09:55:51 -0700</bug_when>
    <thetext>Comment on attachment 200590
Patch

Attachment 200590 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/419046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884720</commentid>
    <comment_count>32</comment_count>
      <attachid>200591</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 09:59:46 -0700</bug_when>
    <thetext>Created attachment 200591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884721</commentid>
    <comment_count>33</comment_count>
      <attachid>200591</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-05 10:09:14 -0700</bug_when>
    <thetext>Comment on attachment 200591
Patch

Attachment 200591 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/413102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884722</commentid>
    <comment_count>34</comment_count>
      <attachid>200591</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-05 10:11:38 -0700</bug_when>
    <thetext>Comment on attachment 200591
Patch

Attachment 200591 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/410089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884724</commentid>
    <comment_count>35</comment_count>
      <attachid>200591</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-05 10:12:26 -0700</bug_when>
    <thetext>Comment on attachment 200591
Patch

Attachment 200591 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/417079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884725</commentid>
    <comment_count>36</comment_count>
      <attachid>200592</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 10:13:56 -0700</bug_when>
    <thetext>Created attachment 200592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884727</commentid>
    <comment_count>37</comment_count>
      <attachid>200593</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 10:42:33 -0700</bug_when>
    <thetext>Created attachment 200593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884728</commentid>
    <comment_count>38</comment_count>
      <attachid>200594</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 10:52:23 -0700</bug_when>
    <thetext>Created attachment 200594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884730</commentid>
    <comment_count>39</comment_count>
      <attachid>200594</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-05 11:59:52 -0700</bug_when>
    <thetext>Comment on attachment 200594
Patch

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884731</commentid>
    <comment_count>40</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-05 12:03:12 -0700</bug_when>
    <thetext>Committed r149579: &lt;http://trac.webkit.org/changeset/149579&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885051</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-06 09:17:56 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I think this is going in the wrong direction.
&gt; 
&gt; This:
&gt;    target.appendRange(v.begin(), b.end());
&gt; reads worse than
&gt;    target.appendContent(v);
&gt; IMHO.
&gt; 
&gt; The appendVector() in IDBLevelDBCoding.h is a bad sign.

I agree with Ben and was glad to see this fixed. Passing begin/end pairs into functions just to do basic operations on containers is one of the awkward aspects of STL that I don’t want to replicate. I think there are better solutions in more-modern C++. Analogous to the new for loop, which hides the begin/end.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200368</attachid>
            <date>2013-05-02 16:35:04 -0700</date>
            <delta_ts>2013-05-02 16:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130502163416.patch</filename>
            <type>text/plain</type>
            <size>35921</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCmluZGV4IDA0NzI2NmViNzk0YjBlOGVkMGJmNTE2ZTNiNzUyZjZhNzgyY2Jj
NjIuLjYzZTVlZmMzNDUxNmMzN2UxMWI0ZmNmMDk1OGI0ODQxODY4YjE4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQogICAgIC8vIEF1ZGlvIHRocmVh
ZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0
J3MgZG8gaXQgb3Vyc2VsdmVzLgogICAgIGRvIHsKICAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMo
KTsKLSAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24pOworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOwogCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKIAogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRl
bGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuICAgIAogICAgIGlmIChtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKLSAgICAg
ICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
LmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAgICAgICAgIG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVk
dWxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggODY2NGFjNzRmZDhhZGJkZGYxZTAyMWQ4MzY2
ZjE4NWMwMTNjZWVhMy4uYzg2YTgzNTBiYzgwNDdmOTQ1NjhhNjc4YTU1MjI4NjNjYmZlNWNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZDo6YWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZQog
ICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKHJvdyk7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ct
PmNoaWxkcmVuKCkpOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJhbmdlKHJvdy0+Y2hpbGRy
ZW4oKS5iZWdpbigpLCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogCiAgICAgYXBwZW5kZWRSb3dz
LmFkZChyb3cpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDcxYWZhYjVkODdkNzk2MGI2
MDI1ZTQ3NWY0ZTQ2YWM1OTc5NjBiNjEuLmVmNWM3NTU1M2Y1YmVkOGMwOTUwNjQ2MWUxZTVjZGI0
ODc3NjljNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKQEAgLTQ2NywxMCArNDY3LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VGFibGU6OmNlbGxzKEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgaW50IG51
bVJvd3MgPSBtX3Jvd3Muc2l6ZSgpOwotICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJv
d3M7ICsrcm93KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dDaGls
ZHJlbiA9IG1fcm93c1tyb3ddLT5jaGlsZHJlbigpOwotICAgICAgICBjZWxscy5hcHBlbmQocm93
Q2hpbGRyZW4pOwotICAgIH0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyAr
K3JvdykKKyAgICAgICAgY2VsbHMuYXBwZW5kUmFuZ2UobV9yb3dzW3Jvd10tPmNoaWxkcmVuKCku
YmVnaW4oKSwgbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCkuZW5kKCkpOwogfQogICAgIAogdW5zaWdu
ZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmNwcAppbmRleCBkMDNiMDc0M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi44
YjQ1N2I0M2RjZDIwZjE4MTY3YmU3MTBmZDNlNmQyYzU2NzdiOWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlRmVhdHVyZS5jcHAKQEAgLTY1LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRk
KGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVs
ZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBvdGhlci5hdHRyc0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICBhdHRyc0luUnVsZXMuYWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChv
dGhlci5zaWJsaW5nUnVsZXMpOwotICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90
aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRSYW5n
ZShvdGhlci5zaWJsaW5nUnVsZXMuYmVnaW4oKSwgb3RoZXIuc2libGluZ1J1bGVzLmVuZCgpKTsK
KyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFJhbmdlKG90aGVyLnVuY29tbW9uQXR0
cmlidXRlUnVsZXMuYmVnaW4oKSwgb3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5lbmQoKSk7
CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90aGVyLnVz
ZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IHVzZXNCZWZvcmVB
ZnRlclJ1bGVzIHx8IG90aGVyLnVzZXNCZWZvcmVBZnRlclJ1bGVzOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY5NTI3OTNlN2UyMmFhNWVhMDM2NmM4NWQ4MmU3NGE0
NDlhNjRlMmMuLjU5MDQyMGQxNGIxZjA3ZmMzN2QzMGU2ZWRjYTYwOTUzNWVkOGU1MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSwgY29uc3QKIAogICAgIEFTU0VSVChoYXNoKTsKICAgICBNYXRjaGVkUHJvcGVy
dGllc0NhY2hlSXRlbSBjYWNoZUl0ZW07Ci0gICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVz
LmFwcGVuZChtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcyk7CisgICAgY2FjaGVJdGVtLm1h
dGNoZWRQcm9wZXJ0aWVzLmFwcGVuZFJhbmdlKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LmJlZ2luKCksIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmVuZCgpKTsKICAgICBjYWNo
ZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBk
b24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBm
dXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMg
cmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2Vk
IGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzljMTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2
MTcuLmViOTQ4ZDk4NmFlOGZjOWI5Y2Q4N2M3ODlhZTFjMDgxY2FkMzk4ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAg
LTQ0MSw3ICs0NDEsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNG
cm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVF
bGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElG
cmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVl
dHMgPSBzZWFtbGVzc1BhcmVudElGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rp
b24oKS0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBzaGVldHMuYXBwZW5kUmFuZ2Uo
YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYmVnaW4oKSwgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMu
ZW5kKCkpOwogfQogCiBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0NjQsOCBA
QCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hl
ZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhh
Y3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4g
YWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGlu
amVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBw
ZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVl
dHMuYXBwZW5kUmFuZ2UoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGluamVj
dGVkQXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMu
YXBwZW5kUmFuZ2UoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGRvY3VtZW50
QXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hl
ZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7
CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBh
Y3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJkNzEyOWQ4
MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3OWUuLmIwNzUwNmZmMTBhMGEzZmZiODM0NzU5NGRjYTQw
YWQ3YzJkNjk4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9p
ZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykg
Y29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFk
cyhlbGVtZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0
RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVudFF1
YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBl
bmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRSYW5nZShlbGVt
ZW50UXVhZHMuYmVnaW4oKSwgZWxlbWVudFF1YWRzLmVuZCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7CkBAIC0x
OTM5LDcgKzE5MzksNyBAQCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlclRleHQtPmFi
c29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwog
ICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9s
bEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0KTsKIAot
ICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAgICAgICAg
IHF1YWRzLmFwcGVuZFJhbmdlKHRleHRRdWFkcy5iZWdpbigpLCB0ZXh0UXVhZHMuZW5kKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3ZmI1OWJmMzBmOWE1ODQ3YjQ1YjNjNGZkMzBiNzAx
Li43NGJjOTdkOTQyZWRiMjk1NDJhMDQ0YzcwMTMyZWZkOTY1ZjAzMWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNTEwLDggKzUxMCwxMCBAQCBWZWN0b3I8U3Ry
aW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc3RhdAogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJuOwogICAgIFNhdmVkRm9y
bVN0YXRlTWFwIG1hcDsKICAgICBmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKHN0YXRlVmVjdG9y
LCBtYXApOwotICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgdG9SZXR1cm4uYXBw
ZW5kKGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpKTsKKyAgICBmb3IgKFNhdmVk
Rm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpLCBlbmQgPSBtYXAu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiByZWZlcmVu
Y2VkRmlsZVBhdGhzID0gaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisgICAg
ICAgIHRvUmV0dXJuLmFwcGVuZFJhbmdlKHJlZmVyZW5jZWRGaWxlUGF0aHMuYmVnaW4oKSwgcmVm
ZXJlbmNlZEZpbGVQYXRocy5lbmQoKSk7CisgICAgfQogICAgIHJldHVybiB0b1JldHVybjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKaW5kZXggMTliYzk1MGNhZDNiZGRhODkyYTRkZGQ3MDUxMTgwOTNmYThl
MDc4Yy4uOTkyZTRiNzA4ZGQ5MzQ3MTViMWU4ZDI4Mzk4ZGFiNzBlMWE2Y2JkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gpCiAgICAgLy8gU3BlYyByZXF1
aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gY29waWVzIHRoZSBkYXNoIGxpc3Qgd2hlbiB0
aGUKICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAgICAgaWYgKGRhc2guc2l6ZSgp
ICUgMikKLSAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmQoZGFzaCk7
CisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2guYXBwZW5kUmFuZ2UoZGFzaC5i
ZWdpbigpLCBkYXNoLmVuZCgpKTsKIAogICAgIGFwcGx5TGluZURhc2goKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5jcHAKaW5kZXggZjZmOWEyOGIxNGFhNzE3NDIyYmVkMTM4ODMyMjllMWEyNjBlMzAwMC4uNzg1
NzQzM2I2ZDZkOWNhODAxMTU5OTI3ZWQ4OWRjNzlmNjE5Yzc0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAK
QEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OnRyeVRv
RW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFja0l0ZQogICAgIGlmIChjYW5k
aWRhdGVzLnNpemUoKSA8IGtOb2Foc0Fya0NhcGFjaXR5KQogICAgICAgICByZXR1cm47IC8vIFRo
ZXJlJ3Mgcm9vbSBmb3IgdGhlIG5ldyBlbGVtZW50IGluIHRoZSBhcmsuIFRoZXJlJ3Mgbm8gbmVl
ZCB0byBjb3B5IG91dCB0aGUgcmVtYWluaW5nQ2FuZGlkYXRlcy4KIAotICAgIHJlbWFpbmluZ0Nh
bmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZXMpOworICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBw
ZW5kUmFuZ2UoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVzLmVuZCgpKTsKIH0KIAogdm9p
ZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRpdGlvbihIVE1M
U3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApp
bmRleCA1NDI0YmQxNDZjMGFhYmIyYjY5MGE5ZWFhYjAyMjlmOTdjMDhiMTIzLi5mOTQ4Zjk2YWQ0
MWIxNmY0NjJiYzA2YzM3YjJjM2E5MWI0NTFhOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW4uaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jdXJy
ZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CiAKLSAgICAg
ICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICAgICAgbV9kYXRhLmFwcGVu
ZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5lbmQoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQpAQCAtMzk4LDcgKzM5OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0
ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwotICAgICAg
ICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgICAgICBtX2RhdGEuYXBwZW5k
UmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVuZCgpKTsKICAgICB9CiAKICAg
ICAvKiBDb21tZW50IFRva2VucyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tl
bi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5MzFjMDZlNDg5NDcuLmZhN2Fm
M2Q2ZWE3YjBmN2MwNzliMTMwNDNjNWRkMTA0OTllZjRjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNoYXJhY3Rlcik7Ci0gICAgICAg
IG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgICAgIG1fZGF0YS5hcHBlbmRS
YW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5kKCkpOwogICAgIH0KIAogICAg
IHZvaWQgYmVnaW5FbXB0eVN0YXJ0VGFnKCkKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBpZiAoIW1f
Y2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNzZXMuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVyKTsKKyAgICAgICAgbV9jbGFz
c2VzLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigpLCBtX2N1cnJlbnRCdWZmZXIu
ZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIoKTsKICAgICB9CiAgICAgCkBA
IC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1fYW5ub3RhdGlvbi5jbGVhcigpOwotICAgICAg
ICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fYW5ub3Rh
dGlvbi5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4oKSwgbV9jdXJyZW50QnVmZmVy
LmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IDBmNDU3ZDEzNGU5NDRk
NWY5OTcxMDE2MTM2Y2Q1MzFhMTIyNTAyZGUuLmQyNjE0Yjg3MDI0YmY0MjZhOTRmODQxOGQxNTdh
NmUyY2MwZWE5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAg
LTEwMyw4ICsxMDMsOCBAQCBWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphY2Nl
cHRUeXBlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0VHlwZXM7CiAgICAg
YWNjZXB0VHlwZXMucmVzZXJ2ZUNhcGFjaXR5KGFjY2VwdE1JTUVUeXBlcy5zaXplKCkgKyBhY2Nl
cHRGaWxlRXh0ZW5zaW9ucy5zaXplKCkpOwotICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2NlcHRN
SU1FVHlwZXMpOwotICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2NlcHRGaWxlRXh0ZW5zaW9ucyk7
CisgICAgYWNjZXB0VHlwZXMuYXBwZW5kUmFuZ2UoYWNjZXB0TUlNRVR5cGVzLmJlZ2luKCksIGFj
Y2VwdE1JTUVUeXBlcy5lbmQoKSk7CisgICAgYWNjZXB0VHlwZXMuYXBwZW5kUmFuZ2UoYWNjZXB0
RmlsZUV4dGVuc2lvbnMuYmVnaW4oKSwgYWNjZXB0RmlsZUV4dGVuc2lvbnMuZW5kKCkpOwogICAg
IHJldHVybiBhY2NlcHRUeXBlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVkNzc2YWRkOGExYzNjMTg3NTNi
Njg5ZDY2NDk2MGQ1ZWIxYTk1YmIuLmNkY2M0OWRhMDk5NjViYTgzN2NkNDk5ZWNhNTFkMGI2NWRj
MGExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQK
ICAgICAgICAgICAgIG1fc2VwYXJhdG9ySW5kZXgrKzsKICAgICAgICAgICAgIGlmIChtX3NlcGFy
YXRvckluZGV4ID09IG1fc2VwYXJhdG9yLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGlmIChp
bmNsdWRlU2VwYXJhdG9yKQotICAgICAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBh
cmF0b3IpOworICAgICAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmRSYW5nZShtX3NlcGFyYXRv
ci5iZWdpbigpLCBtX3NlcGFyYXRvci5lbmQoKSk7CiAgICAgICAgICAgICAgICAgbV9zZXBhcmF0
b3JJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZi4uNWIxNDA1YTM2
MzBhNDk4MzI3MThhNmQ4NDRkNzZiMWMwNmJhZTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRl
cykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVT
aXRlczsKICAgICAgICAgZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0
ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMpOworICAgICAgICBzaXRlcy5h
cHBlbmRSYW5nZShlbmdpbmVTaXRlcy5iZWdpbigpLCBlbmdpbmVTaXRlcy5lbmQoKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlMDIyZmUyN2IwYzM0YzhiMDE3N2M5ZGFiYzc1YWI5
ZmI3YzZjZjI3Li4zZTZjNWVhZmQyMmU1NjA0OGYyODM4OWRjYjQ2OWNlZGUyYWYxOWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKQEAgLTEyODQsNyArMTI4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVTdWJsYXllckxpc3QoYm9vbCBtYXhMYXllckRlcHRoUmVhY2hlZCkKICAgICBQbGF0Zm9y
bUNBTGF5ZXJMaXN0JiBjaGlsZExpc3RGb3JTdWJsYXllcnMgPSBtX3N0cnVjdHVyYWxMYXllciA/
IHN0cnVjdHVyYWxMYXllckNoaWxkcmVuIDogcHJpbWFyeUxheWVyQ2hpbGRyZW47CiAKICAgICBp
ZiAoY3VzdG9tU3VibGF5ZXJzKQotICAgICAgICBwcmltYXJ5TGF5ZXJDaGlsZHJlbi5hcHBlbmQo
KmN1c3RvbVN1YmxheWVycyk7CisgICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZFJh
bmdlKGN1c3RvbVN1YmxheWVycy0+YmVnaW4oKSwgY3VzdG9tU3VibGF5ZXJzLT5lbmQoKSk7CiAK
ICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0
OGQzZWJhNTFkNGQ3NmFmNDZmN2Y0YWNmODYyYzI5NjkxOTMwNTZmLi4yZmM5Zjc1OTA4ZGY1ZWE2
NjM0YTk3ZTliZjk1ZjZjN2FjZjdhOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzKGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIGJv
b2wgcwogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+
IHdyaXRhYmxlVHlwZXNGb3JVUkwoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlw
ZXNGb3JVUkwoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIApAQCAtMTA2LDcg
KzEwNiw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBl
c0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICAKICAgICB0eXBlcy5h
cHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5cGUpKTsKLSAgICB0eXBlcy5hcHBlbmQod3JpdGFi
bGVUeXBlc0ZvclVSTCgpKTsKKyAgICBmb3IgKGNvbnN0IFN0cmluZyYgdHlwZTogd3JpdGFibGVU
eXBlc0ZvclVSTCgpKQorICAgICAgICB0eXBlcy5hcHBlbmQodHlwZSk7CiAgICAgdHlwZXMuYXBw
ZW5kKFN0cmluZyhOU1JURkRQYm9hcmRUeXBlKSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQpAQCAt
MTE0LDcgKzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFi
bGVUeXBlc0ZvckltYWdlKCkKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9y
SW1hZ2UoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHR5cGVzLmFwcGVuZChj
cmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSk7CisgICAgZm9yIChjb25zdCBTdHJpbmcmIHR5
cGU6IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpKQorICAgICAgICB0eXBlcy5hcHBlbmQo
dHlwZSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBAIC0xODcsNyArMTg5LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGIKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKICAgICBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiBjbGllbnREYXRhOwogICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNsaWVudFR5cGVzLCBjbGllbnREYXRhKTsK
LSAgICB0eXBlcy5hcHBlbmQoY2xpZW50VHlwZXMpOworICAgIHR5cGVzLmFwcGVuZFJhbmdlKGNs
aWVudFR5cGVzLmJlZ2luKCksIGNsaWVudFR5cGVzLmVuZCgpKTsKIAogICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDU2N2JkNjBiOTk3NDkyNzE0M2JlMmJk
YTIyMDM3OGNmNjk1N2U2OTMuLjk2NzAzY2RhNTE0NzA1OTE4YmNhM2E3YTRhNjQ2OGI0MWI3OGM1
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBWZWN0b3I8Y2hhcj4gRm9ybURhdGFCdWls
ZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCkKICAgICAgICAgcmFuZG9tQnl0ZXMu
YXBwZW5kKGFscGhhTnVtZXJpY0VuY29kaW5nTWFwW3JhbmRvbW5lc3MgJiAweDNGXSk7CiAgICAg
fQogCi0gICAgYm91bmRhcnkuYXBwZW5kKHJhbmRvbUJ5dGVzKTsKKyAgICBib3VuZGFyeS5hcHBl
bmRSYW5nZShyYW5kb21CeXRlcy5iZWdpbigpLCByYW5kb21CeXRlcy5lbmQoKSk7CiAgICAgYm91
bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAwIGF0IHRoZSBlbmQgc28gd2UgY2FuIHVzZSB0aGlz
IGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAgcmV0dXJuIGJvdW5kYXJ5OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA3
MDJjNGE3YTc0NGZhZjEzOTZiNTNjNDVmMDg3MDM5YjhiNmUxY2E2Li5lNmMxYzgyZWNlNTQ5OWFi
NmVhYjkwM2E4MjViYTQ4Yjk3YTM1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudChJbmxpbmVCaWRpUmVz
b2x2ZXImIHRvcFJlc29sdmVyLAogICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXJlZCBhbnkgbmVz
dGVkIGlzb2xhdGUgcnVucywganVzdCBtb3ZlIHRoZW0KICAgICAgICAgLy8gdG8gdGhlIHRvcCBy
ZXNvbHZlcidzIGxpc3QgZm9yIGxhdGVyIHByb2Nlc3NpbmcuCiAgICAgICAgIGlmICghaXNvbGF0
ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHRvcFJl
c29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZChpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVu
cygpKTsKKyAgICAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZFJhbmdl
KGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuYmVnaW4oKSwgaXNvbGF0ZWRSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKS5lbmQoKSk7CiAgICAgICAgICAgICBpc29sYXRlZFJlc29sdmVyLmlz
b2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5MTFj
M2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJjMjcuLjY5NmY5ODNmNDQ1OWRlZGVmMjFjNDE1
MzM3ODQ3NDNhNTE3NGU5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCiAgICAgewotICAgICAgICBtX292ZXJs
YXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBlbmQobV9vdmVybGFwU3RhY2su
bGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0g
Ml0uYXBwZW5kUmFuZ2UobV9vdmVybGFwU3RhY2subGFzdCgpLmJlZ2luKCksIG1fb3ZlcmxhcFN0
YWNrLmxhc3QoKS5lbmQoKSk7CiAgICAgICAgIG1fb3ZlcmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKaW5kZXggM2Q1MTI5M2QxMmMyYzg4ZTMwYjgzMGVhZmY4NmFhNzc5YmI4ZTkxYS4uZjVi
YjE3Y2ZlMjUyZTdmMjcwYWVjMWMwOWRjYTk3NGUzZWE0MzQzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIgPSBtX2dyaWRbcm93XS5yb3c7CiAgICAgICAg
IHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3QoKSk7CiAgICAgICAgIGlmIChyW3Bvc10uaGFz
Q2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3MgKyAxXS5jZWxscy5hcHBlbmQocltwb3NdLmNl
bGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kUmFuZ2Uocltwb3NdLmNl
bGxzLmJlZ2luKCksIHJbcG9zXS5jZWxscy5lbmQoKSk7CiAgICAgICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChj
ZWxsKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNv
bFNwYW4gPyAxdSA6IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2
NTkxZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQzODQ0Mi4uZWJjZmFjYTlkNzNlNDM1ZTRlODE4ODM2
YjY2N2U1YjMxN2E1YmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsx
MjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0g
Y3VycmVudExheWVyLT5nZXQoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5
cGhzKTsKKyAgICAgICAgICAgIGdseXBocy5hcHBlbmRSYW5nZShub2RlLT5nbHlwaHMuYmVnaW4o
KSwgbm9kZS0+Z2x5cGhzLmVuZCgpKTsKICAgICAgICAgICAgIGN1cnJlbnRMYXllciA9ICZub2Rl
LT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5n
dGgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2Rl
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMz
OGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAwYzM1OC4uMTA2ZTg1MDIyYzI1OTE2MmVlNjVhMTU4
NmIyYWZiZWJlZWM5NjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2Vs
ZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBpbiBpdCBhcmUgdW5pcXVlLgogICAgICAgICAg
ICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQogICAg
ICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBw
ZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2Rl
U2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVTZXQubV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZv
aWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVTZXQpIHsgbV9ub2Rlcy5hcHBlbmRSYW5nZShu
b2RlU2V0Lm1fbm9kZXMuYmVnaW4oKSwgbm9kZVNldC5tX25vZGVzLmVuZCgpKTsgfQogCiAgICAg
ICAgICAgICAvLyBSZXR1cm5zIHRoZSBzZXQncyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVy
LCBvciAwIGlmIHRoZSBzZXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2
ZDYwYTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjdkOGE1YzljM2YwYjM4Y2Y3YzM5YjYxOWE1ZTcxN2Mw
NjhjMzE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTUsOCArNTUsMTAgQEAg
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+ID4gc2FuZGJveEV4dGVuc2lvbnMgPSBuZXdTYW5kYm94RXh0ZW5zaW9uczsKICAgICBjb25z
dCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IGRhdGEtPml0ZW1zKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJsb2IpCi0gICAgICAgICAgICBz
YW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0u
dXJsLnN0cmluZygpKSk7CisgICAgICAgIGlmIChpdGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRl
bTo6QmxvYikgeworICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gbV9zYW5kYm94RXh0ZW5z
aW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMu
YXBwZW5kUmFuZ2UoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25zLmVuZCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGRh
dGEpOwpAQCAtMTA3LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVj
dGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9i
bG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1jb25zdCBWZWN0b3I8
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4
dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorVmVjdG9yPFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNp
b25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAppbmRleCA1MmQy
ZGY5YzE5ODkyOTNhMTAzNjViOTQ4NjQ1MWExYWQ4Njk3MWE1Li42N2QwY2NmZWNlZjA5OGUwNTM2
ZDYzNjU3OGFhNDJmODkxMjBiZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0
ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgfk5l
dHdvcmtCbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBhNWE3
NTZkYTZkYTAyYWY1Y2I1Li4wMmE3MDI4ZWQyYzZjYzliM2RlMzJlOTVjNDU4NjUyZDNkMzFkNDA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVM
b2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJs
ZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNvdW50
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gRm9ybURhdGFF
bGVtZW50OjplbmNvZGVkQmxvYikgewogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7Ci0gICAg
ICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChibG9iRWxl
bWVudEV4dGVuc2lvbnMpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9ucy5hcHBlbmRSYW5nZShibG9iRWxlbWVudEV4dGVuc2lvbnMuYmVnaW4oKSwgYmxvYkVs
ZW1lbnRFeHRlbnNpb25zLmVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIyZWQwNTUzZWI4NDkuLmJmZWFlMzE0OTM0ZmQx
OWU5NWY1Y2UxZGU3N2U2NzhlNDUxODg5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxv
d2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewog
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZXNU
b0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFj
ayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5
LmFwcGVuZFJhbmdlKG1lc3NhZ2VzVG9QdXRCYWNrLmJlZ2luKCksIG1lc3NhZ2VzVG9QdXRCYWNr
LmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAzMTJiOWQ3MDIyMzliYjllMTc1NTFhYjNjZGMzNzM5MjU3NzlmZGEx
Li42NTNlMjYwNDE4Y2EzNjIxNzNhZTNkYjliODI3YWM4MzYwNDIzZjZmIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0
b3I6OmFwcGVuZFJhbmdlIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBzdGFsZSBzY3JpcHQgZmlsZS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0KaW5kZXggMzUzZWE4ZDY3YzkzZDk2OTYzZDFhYWI0ODVhMmRhZWE0ZGZlNjUwNy4uMmI2
MjdiY2NmOWVhNDE3NTIwMmQ2Zjc2ZGQ4NWIyZjEyYjVjNDUzMyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE2
Miw3ICsxNjIsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNo
YXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVy
czp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOwor
ICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5l
bmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tCmluZGV4IDhhOTU1MWM4NWZhOGE4N2JkZTQwNWEzOTdhZjVlODAyMGU4Yjk5
MTYuLjk1Y2ZhZThjZjQ3M2JmNDI3ODVjNDIxYTBmOTJmZWYyMDU4NTljODggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0
YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBh
dHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIo
W3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRh
dGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVu
ZFJhbmdlKHZhbHVlQnVmZmVyLmJlZ2luKCksIHZhbHVlQnVmZmVyLmVuZCgpKTsKIAogICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200370</attachid>
            <date>2013-05-02 16:43:23 -0700</date>
            <delta_ts>2013-05-02 17:11:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130502164235.patch</filename>
            <type>text/plain</type>
            <size>37266</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCmluZGV4IDA0NzI2NmViNzk0YjBlOGVkMGJmNTE2ZTNiNzUyZjZhNzgyY2Jj
NjIuLjYzZTVlZmMzNDUxNmMzN2UxMWI0ZmNmMDk1OGI0ODQxODY4YjE4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQogICAgIC8vIEF1ZGlvIHRocmVh
ZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0
J3MgZG8gaXQgb3Vyc2VsdmVzLgogICAgIGRvIHsKICAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMo
KTsKLSAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24pOworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOwogCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKIAogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRl
bGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuICAgIAogICAgIGlmIChtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKLSAgICAg
ICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
LmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAgICAgICAgIG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVk
dWxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggODY2NGFjNzRmZDhhZGJkZGYxZTAyMWQ4MzY2
ZjE4NWMwMTNjZWVhMy4uYzg2YTgzNTBiYzgwNDdmOTQ1NjhhNjc4YTU1MjI4NjNjYmZlNWNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZDo6YWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZQog
ICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKHJvdyk7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ct
PmNoaWxkcmVuKCkpOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJhbmdlKHJvdy0+Y2hpbGRy
ZW4oKS5iZWdpbigpLCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogCiAgICAgYXBwZW5kZWRSb3dz
LmFkZChyb3cpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDcxYWZhYjVkODdkNzk2MGI2
MDI1ZTQ3NWY0ZTQ2YWM1OTc5NjBiNjEuLmVmNWM3NTU1M2Y1YmVkOGMwOTUwNjQ2MWUxZTVjZGI0
ODc3NjljNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKQEAgLTQ2NywxMCArNDY3LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VGFibGU6OmNlbGxzKEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgaW50IG51
bVJvd3MgPSBtX3Jvd3Muc2l6ZSgpOwotICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJv
d3M7ICsrcm93KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dDaGls
ZHJlbiA9IG1fcm93c1tyb3ddLT5jaGlsZHJlbigpOwotICAgICAgICBjZWxscy5hcHBlbmQocm93
Q2hpbGRyZW4pOwotICAgIH0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyAr
K3JvdykKKyAgICAgICAgY2VsbHMuYXBwZW5kUmFuZ2UobV9yb3dzW3Jvd10tPmNoaWxkcmVuKCku
YmVnaW4oKSwgbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCkuZW5kKCkpOwogfQogICAgIAogdW5zaWdu
ZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0
dXJlLmNwcAppbmRleCBkMDNiMDc0M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi44
YjQ1N2I0M2RjZDIwZjE4MTY3YmU3MTBmZDNlNmQyYzU2NzdiOWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlRmVhdHVyZS5jcHAKQEAgLTY1LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRk
KGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVs
ZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBvdGhlci5hdHRyc0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICBhdHRyc0luUnVsZXMuYWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChv
dGhlci5zaWJsaW5nUnVsZXMpOwotICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90
aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRSYW5n
ZShvdGhlci5zaWJsaW5nUnVsZXMuYmVnaW4oKSwgb3RoZXIuc2libGluZ1J1bGVzLmVuZCgpKTsK
KyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFJhbmdlKG90aGVyLnVuY29tbW9uQXR0
cmlidXRlUnVsZXMuYmVnaW4oKSwgb3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5lbmQoKSk7
CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90aGVyLnVz
ZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IHVzZXNCZWZvcmVB
ZnRlclJ1bGVzIHx8IG90aGVyLnVzZXNCZWZvcmVBZnRlclJ1bGVzOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY5NTI3OTNlN2UyMmFhNWVhMDM2NmM4NWQ4MmU3NGE0
NDlhNjRlMmMuLjU5MDQyMGQxNGIxZjA3ZmMzN2QzMGU2ZWRjYTYwOTUzNWVkOGU1MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSwgY29uc3QKIAogICAgIEFTU0VSVChoYXNoKTsKICAgICBNYXRjaGVkUHJvcGVy
dGllc0NhY2hlSXRlbSBjYWNoZUl0ZW07Ci0gICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVz
LmFwcGVuZChtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcyk7CisgICAgY2FjaGVJdGVtLm1h
dGNoZWRQcm9wZXJ0aWVzLmFwcGVuZFJhbmdlKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LmJlZ2luKCksIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmVuZCgpKTsKICAgICBjYWNo
ZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBk
b24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBm
dXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMg
cmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2Vk
IGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzljMTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2
MTcuLmViOTQ4ZDk4NmFlOGZjOWI5Y2Q4N2M3ODlhZTFjMDgxY2FkMzk4ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAg
LTQ0MSw3ICs0NDEsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNG
cm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVF
bGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElG
cmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKworICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVl
dHMgPSBzZWFtbGVzc1BhcmVudElGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rp
b24oKS0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBzaGVldHMuYXBwZW5kUmFuZ2Uo
YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYmVnaW4oKSwgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMu
ZW5kKCkpOwogfQogCiBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0NjQsOCBA
QCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hl
ZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhh
Y3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4g
YWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGlu
amVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBw
ZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVl
dHMuYXBwZW5kUmFuZ2UoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGluamVj
dGVkQXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMu
YXBwZW5kUmFuZ2UoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGRvY3VtZW50
QXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hl
ZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7
CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBh
Y3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJkNzEyOWQ4
MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3OWUuLmIwNzUwNmZmMTBhMGEzZmZiODM0NzU5NGRjYTQw
YWQ3YzJkNjk4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9p
ZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykg
Y29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFk
cyhlbGVtZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0
RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVudFF1
YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBl
bmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRSYW5nZShlbGVt
ZW50UXVhZHMuYmVnaW4oKSwgZWxlbWVudFF1YWRzLmVuZCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7CkBAIC0x
OTM5LDcgKzE5MzksNyBAQCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlclRleHQtPmFi
c29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwog
ICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9s
bEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0KTsKIAot
ICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAgICAgICAg
IHF1YWRzLmFwcGVuZFJhbmdlKHRleHRRdWFkcy5iZWdpbigpLCB0ZXh0UXVhZHMuZW5kKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDA5Y2MyODc0NDE4MTAzOTA5ODExODM0Mzky
ODQ1MzRhMzI1ZDJiNjMuLjc1ODkzYTU1MmYyODBhZjhmYzFlMGQ2MDhlMDZmNGE1NmU0YWYxNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTY4MSw3ICs2ODEsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZwogICAgICAgICBpZiAocmVz
dWx0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHRzLnN3YXAoc3BlbGxpbmdSZXN1bHQp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzcGVsbGluZ1Jlc3Vs
dCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZFJhbmdlKHNwZWxsaW5nUmVzdWx0LmJlZ2lu
KCksIHNwZWxsaW5nUmVzdWx0LmVuZCgpKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggOGE4YWYwNWE5N2ZiNTliZjMwZjlhNTg0N2I0
NWIzYzRmZDMwYjcwMS4uNzRiYzk3ZDk0MmVkYjI5NTQyYTA0NGM3MDEzMmVmZDk2NWYwMzFkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTUxMCw4ICs1MTAsMTAg
QEAgVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXQKICAgICBWZWN0b3I8U3RyaW5nPiB0b1JldHVybjsK
ICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBtYXA7CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3Rv
cihzdGF0ZVZlY3RvciwgbWFwKTsKLSAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBtYXAuZW5kKCk7ICsraXQpCi0gICAgICAg
IHRvUmV0dXJuLmFwcGVuZChpdC0+dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7Cisg
ICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4o
KSwgZW5kID0gbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgVmVjdG9yPFN0
cmluZz4gcmVmZXJlbmNlZEZpbGVQYXRocyA9IGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocygpOworICAgICAgICB0b1JldHVybi5hcHBlbmRSYW5nZShyZWZlcmVuY2VkRmlsZVBhdGhz
LmJlZ2luKCksIHJlZmVyZW5jZWRGaWxlUGF0aHMuZW5kKCkpOworICAgIH0KICAgICByZXR1cm4g
dG9SZXR1cm47CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDE5YmM5NTBjYWQzYmRkYTg5MmE0ZGRk
NzA1MTE4MDkzZmE4ZTA3OGMuLjk5MmU0YjcwOGRkOTM0NzE1YjFlOGQyODM5OGRhYjcwZTFhNmNi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRMaW5lRGFzaChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBkYXNoKQogICAg
IC8vIFNwZWMgcmVxdWlyZXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIGNvcGllcyB0aGUgZGFz
aCBsaXN0IHdoZW4gdGhlCiAgICAgLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGlzIG9kZAogICAgIGlm
IChkYXNoLnNpemUoKSAlIDIpCi0gICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2gu
YXBwZW5kKGRhc2gpOworICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNoLmFwcGVu
ZFJhbmdlKGRhc2guYmVnaW4oKSwgZGFzaC5lbmQoKSk7CiAKICAgICBhcHBseUxpbmVEYXNoKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGY2ZjlhMjhiMTRhYTcxNzQyMmJlZDEzODgzMjI5ZTFh
MjYwZTMwMDAuLjc4NTc0MzNiNmQ2ZDljYTgwMTE1OTkyN2VkODlkYzc5ZjYxOWM3NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3RhY2tJdGUK
ICAgICBpZiAoY2FuZGlkYXRlcy5zaXplKCkgPCBrTm9haHNBcmtDYXBhY2l0eSkKICAgICAgICAg
cmV0dXJuOyAvLyBUaGVyZSdzIHJvb20gZm9yIHRoZSBuZXcgZWxlbWVudCBpbiB0aGUgYXJrLiBU
aGVyZSdzIG5vIG5lZWQgdG8gY29weSBvdXQgdGhlIHJlbWFpbmluZ0NhbmRpZGF0ZXMuCiAKLSAg
ICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsKKyAgICByZW1haW5pbmdD
YW5kaWRhdGVzLmFwcGVuZFJhbmdlKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlkYXRlcy5lbmQo
KSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtD
b25kaXRpb24oSFRNTFN0YWNrSXRlbSogbmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRva2VuLmgKaW5kZXggNTQyNGJkMTQ2YzBhYWJiMmI2OTBhOWVhYWIwMjI5Zjk3YzA4YjEy
My4uZjk0OGY5NmFkNDFiMTZmNDYyYmMwNmMzN2IyYzNhOTFiNDUxYTk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVh
cigpOwogCi0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgICAg
IG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5kKCkp
OwogICAgIH0KIAogICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKQEAgLTM5OCw3ICszOTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENoYXIs
IDMyPiYgY2hhcmFjdGVycykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFj
dGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICAgICAg
bV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5lbmQoKSk7
CiAgICAgfQogCiAgICAgLyogQ29tbWVudCBUb2tlbnMgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZmODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2
ZTQ4OTQ3Li5mYTdhZjNkNmVhN2IwZjdjMDc5YjEzMDQzYzVkZDEwNDk5ZWY0YzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCkBAIC05OSw3ICs5OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBj
aGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpDaGFyYWN0
ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgICAgICBt
X2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVuZCgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGJlZ2luRW1wdHlTdGFydFRhZygpCkBAIC0xNDksNyArMTQ5LDcg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlN0YXJ0VGFnKTsKICAg
ICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9jbGFzc2VzLmFw
cGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7Cisg
ICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4oKSwgbV9j
dXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAg
ICAgfQogICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24uY2xl
YXIoKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAg
ICAgICBtX2Fubm90YXRpb24uYXBwZW5kUmFuZ2UobV9jdXJyZW50QnVmZmVyLmJlZ2luKCksIG1f
Y3VycmVudEJ1ZmZlci5lbmQoKSk7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlci5jbGVhcigpOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCAw
ZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUwMmRlLi5kMjYxNGI4NzAyNGJmNDI2
YTk0Zjg0MThkMTU3YTZlMmNjMGVhOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJT
ZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IGFjY2Vw
dFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBhY2l0eShhY2NlcHRNSU1FVHlwZXMu
c2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBhY2NlcHRUeXBlcy5h
cHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0Rmls
ZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFJhbmdlKGFjY2VwdE1JTUVUeXBl
cy5iZWdpbigpLCBhY2NlcHRNSU1FVHlwZXMuZW5kKCkpOworICAgIGFjY2VwdFR5cGVzLmFwcGVu
ZFJhbmdlKGFjY2VwdEZpbGVFeHRlbnNpb25zLmJlZ2luKCksIGFjY2VwdEZpbGVFeHRlbnNpb25z
LmVuZCgpKTsKICAgICByZXR1cm4gYWNjZXB0VHlwZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCA1ZDc3NmFk
ZDhhMWMzYzE4NzUzYjY4OWQ2NjQ5NjBkNWViMWE5NWJiLi5jZGNjNDlkYTA5OTY1YmE4MzdjZDQ5
OWVjYTUxZDBiNjVkYzBhMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGlu
Y2x1ZGVTZXBhcmF0CiAgICAgICAgICAgICBtX3NlcGFyYXRvckluZGV4Kys7CiAgICAgICAgICAg
ICBpZiAobV9zZXBhcmF0b3JJbmRleCA9PSBtX3NlcGFyYXRvci5zaXplKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoaW5jbHVkZVNlcGFyYXRvcikKLSAgICAgICAgICAgICAgICAgICAgY2h1bmsu
YXBwZW5kKG1fc2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kUmFu
Z2UobV9zZXBhcmF0b3IuYmVnaW4oKSwgbV9zZXBhcmF0b3IuZW5kKCkpOwogICAgICAgICAgICAg
ICAgIG1fc2VwYXJhdG9ySW5kZXggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IGM1MjM4NTgwYjkxOWZkYmE5NWQ1NTI0Y2VhZWI1YjE3NDZiN2Q4
Y2YuLjViMTQwNWEzNjMwYTQ5ODMyNzE4YTZkODQ0ZDc2YjFjMDZiYWU2OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkwMiw3
ICs5MDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8
U3RyaW5nPiYgc2l0ZXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgVmVjdG9yPFN0
cmluZz4gZW5naW5lU2l0ZXM7CiAgICAgICAgIGVuZ2luZXNbaV0tPmdldFNpdGVzSW5NZWRpYUNh
Y2hlKGVuZ2luZVNpdGVzKTsKLSAgICAgICAgc2l0ZXMuYXBwZW5kKGVuZ2luZVNpdGVzKTsKKyAg
ICAgICAgc2l0ZXMuYXBwZW5kUmFuZ2UoZW5naW5lU2l0ZXMuYmVnaW4oKSwgZW5naW5lU2l0ZXMu
ZW5kKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZlMjdiMGMzNGM4YjAx
NzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uM2U2YzVlYWZkMjJlNTYwNDhmMjgzODlkY2I0NjljZWRl
MmFmMTliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJlYWNoZWQp
CiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5ZXJzID0gbV9zdHJ1
Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1hcnlMYXllckNoaWxk
cmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJpbWFyeUxheWVyQ2hp
bGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmltYXJ5TGF5ZXJDaGls
ZHJlbi5hcHBlbmRSYW5nZShjdXN0b21TdWJsYXllcnMtPmJlZ2luKCksIGN1c3RvbVN1YmxheWVy
cy0+ZW5kKCkpOwogCiAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CiAgICAgICAgIGlmICht
X3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZhZjQ2ZjdmNGFjZjg2MmMyOTY5MTkzMDU2Zi4uMmZj
OWY3NTkwOGRmNWVhNjYzNGE5N2U5YmY5NWY2YzdhY2Y3YTk3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhib29sIGNhblNtYXJ0Q29w
eU9yRGVsZXRlLCBib29sIHMKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBW
ZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKK3N0YXRpYyBWZWN0b3I8U3RyaW5n
PiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAg
ICAKQEAgLTEwNiw3ICsxMDYsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+IGNyZWF0
ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAg
CiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1RJRkZQYm9hcmRUeXBlKSk7Ci0gICAgdHlwZXMu
YXBwZW5kKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CisgICAgZm9yIChjb25zdCBTdHJpbmcmIHR5
cGU6IHdyaXRhYmxlVHlwZXNGb3JVUkwoKSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKHR5cGUpOwog
ICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNSVEZEUGJvYXJkVHlwZSkpOwogICAgIHJldHVybiB0
eXBlczsKIH0KQEAgLTExNCw3ICsxMTUsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+
IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4gd3Jp
dGFibGVUeXBlc0ZvckltYWdlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICB0
eXBlcy5hcHBlbmQoY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkpOworICAgIGZvciAoY29u
c3QgU3RyaW5nJiB0eXBlOiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSkKKyAgICAgICAg
dHlwZXMuYXBwZW5kKHR5cGUpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3LDcgKzE4
OSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50
VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywg
Y2xpZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0eXBlcy5h
cHBlbmRSYW5nZShjbGllbnRUeXBlcy5iZWdpbigpLCBjbGllbnRUeXBlcy5lbmQoKSk7CiAKICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5cGVzKHR5
cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5k
aWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCA1NjdiZDYwYjk5
NzQ5MjcxNDNiZTJiZGEyMjAzNzhjZjY5NTdlNjkzLi45NjcwM2NkYTUxNDcwNTkxOGJjYTNhN2E0
YTY0NjhiNDFiNzhjNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgVmVjdG9yPGNoYXI+
IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVCb3VuZGFyeVN0cmluZygpCiAgICAgICAg
IHJhbmRvbUJ5dGVzLmFwcGVuZChhbHBoYU51bWVyaWNFbmNvZGluZ01hcFtyYW5kb21uZXNzICYg
MHgzRl0pOwogICAgIH0KIAotICAgIGJvdW5kYXJ5LmFwcGVuZChyYW5kb21CeXRlcyk7CisgICAg
Ym91bmRhcnkuYXBwZW5kUmFuZ2UocmFuZG9tQnl0ZXMuYmVnaW4oKSwgcmFuZG9tQnl0ZXMuZW5k
KCkpOwogICAgIGJvdW5kYXJ5LmFwcGVuZCgwKTsgLy8gQWRkIGEgMCBhdCB0aGUgZW5kIHNvIHdl
IGNhbiB1c2UgdGhpcyBhcyBhIEMtc3R5bGUgc3RyaW5nLgogICAgIHJldHVybiBib3VuZGFyeTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAKaW5kZXggNzAyYzRhN2E3NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uZTZj
MWM4MmVjZTU0OTlhYjZlYWI5MDNhODI1YmE0OGI5N2EzNTdiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyAr
MTM0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQo
SW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3Vu
dGVyZWQgYW55IG5lc3RlZCBpc29sYXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8v
IHRvIHRoZSB0b3AgcmVzb2x2ZXIncyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAg
ICBpZiAoIWlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKSk7CisgICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMo
KS5hcHBlbmRSYW5nZShpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmJlZ2luKCksIGlz
b2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuZW5kKCkpOwogICAgICAgICAgICAgaXNvbGF0
ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApp
bmRleCBhM2E0OTExYzNhOTUxMDY2MzliZDY0ZDU3NjZhNDIyYTU0NTYyYzI3Li42OTZmOTgzZjQ0
NTlkZWRlZjIxYzQxNTMzNzg0NzQzYTUxNzRlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQogICAgIHsKLSAg
ICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kKG1f
b3ZlcmxhcFN0YWNrLmxhc3QoKSk7CisgICAgICAgIG1fb3ZlcmxhcFN0YWNrW21fb3ZlcmxhcFN0
YWNrLnNpemUoKSAtIDJdLmFwcGVuZFJhbmdlKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5iZWdpbigp
LCBtX292ZXJsYXBTdGFjay5sYXN0KCkuZW5kKCkpOwogICAgICAgICBtX292ZXJsYXBTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDNkNTEyOTNkMTJjMmM4OGUzMGI4MzBlYWZmODZhYTc3
OWJiOGU5MWEuLmY1YmIxN2NmZTI1MmU3ZjI3MGFlYzFjMDlkY2E5NzRlM2VhNDM0M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0x
MzIyLDcgKzEzMjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1bW4odW5z
aWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlkW3Jvd10u
cm93OwogICAgICAgICByLmluc2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAgICAgICBp
ZiAocltwb3NdLmhhc0NlbGxzKCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBw
ZW5kKHJbcG9zXS5jZWxscyk7CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFwcGVuZFJh
bmdlKHJbcG9zXS5jZWxscy5iZWdpbigpLCByW3Bvc10uY2VsbHMuZW5kKCkpOwogICAgICAgICAg
ICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gcltwb3NdLnByaW1hcnlDZWxsKCk7CiAgICAgICAg
ICAgICBBU1NFUlQoY2VsbCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+Y29sU3BhbigpID49
IChyW3Bvc10uaW5Db2xTcGFuID8gMXUgOiAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCmlu
ZGV4IDkyOTQ1MjY5NjU5MWQ3YTcwYjRiMWE3N2ViMDQ2N2M3MmRkMzg0NDIuLmViY2ZhY2E5ZDcz
ZTQzNWU0ZTgxODgzNmI2NjdlNWIzMTdhNWJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5o
CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEdseXBoTWFw
Tm9kZT4gbm9kZSA9IGN1cnJlbnRMYXllci0+Z2V0KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBnbHlwaHMuYXBw
ZW5kKG5vZGUtPmdseXBocyk7CisgICAgICAgICAgICBnbHlwaHMuYXBwZW5kUmFuZ2Uobm9kZS0+
Z2x5cGhzLmJlZ2luKCksIG5vZGUtPmdseXBocy5lbmQoKSk7CiAgICAgICAgICAgICBjdXJyZW50
TGF5ZXIgPSAmbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0b3IuYWR2YW5j
ZShjbHVzdGVyTGVuZ3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoTm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCmlu
ZGV4IGJjNzY3ZDVjMzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjEwNmU4NTAyMmMy
NTkxNjJlZTY1YTE1ODZiMmFmYmViZWVjOTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0
LmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLy8g
Tm9kZVNldCBpdHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJlIHVuaXF1
ZS4KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rlcy5hcHBlbmQo
bm9kZSk7IH0KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkg
eyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
Tm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9kZXMpOyB9Cisg
ICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMu
YXBwZW5kUmFuZ2Uobm9kZVNldC5tX25vZGVzLmJlZ2luKCksIG5vZGVTZXQubV9ub2Rlcy5lbmQo
KSk7IH0KIAogICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2V0J3MgZmlyc3Qgbm9kZSBpbiBk
b2N1bWVudCBvcmRlciwgb3IgMCBpZiB0aGUgc2V0IGlzIGVtcHR5LgogICAgICAgICAgICAgTm9k
ZSogZmlyc3ROb2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAyZTMw
YmNiNzg3ZTI2MjE1NmQ2MGE5OWQzNzllOTM4YTE1MjJhNzg1Li43ZDhhNWM5YzNmMGIzOGNmN2Mz
OWI2MTlhNWU3MTdjMDY4YzMxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTU1
LDggKzU1LDEwIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zID0gbmV3U2FuZGJveEV4dGVuc2lv
bnM7CiAgICAgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMgPSBkYXRhLT5pdGVtcygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGl0ZW1zLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpCbG9iKQot
ICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKG1fc2FuZGJveEV4dGVuc2lvbnMu
Z2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSkpOworICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9
PSBCbG9iRGF0YUl0ZW06OkJsb2IpIHsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IG1f
c2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSk7CisgICAgICAgICAg
ICBleHRlbnNpb25zLmFwcGVuZFJhbmdlKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5l
bmQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwodXJsLCBkYXRhKTsKQEAgLTEwNyw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVn
aXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUAogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uKTsKIH0KIAot
Y29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1ZlY3RvcjxS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRl
bnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
YW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKaW5kZXggNTJkMmRmOWMxOTg5MjkzYTEwMzY1Yjk0ODY0NTFhMWFkODY5NzFhNS4uNjdkMGNj
ZmVjZWYwOThlMDUzNmQ2MzY1NzhhYTQyZjg5MTIwYmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBzYW5kYm94RXh0ZW5zaW9ucyhj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKaW5kZXggOWQ0NmY3NDhiZjRj
MjBmYzY5ZjYwYTVhNzU2ZGE2ZGEwMmFmNWNiNS4uMDJhNzAyOGVkMmM2Y2M5YjNkZTMyZTk1YzQ1
ODY1MmQzZDMxZDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
U2NoZWR1bGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1NjaGVkdWxhYmxlTG9hZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTY2hlZHVsYWJsZUxvYWRl
cjo6U2NoZWR1bGFibGVMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IHBhcmFtZQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXpl
KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBl
ID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsKICAgICAgICAgICAgICAgICBWZWN0
b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gYmxvYkVsZW1lbnRFeHRlbnNpb25zID0gTmV0
d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkuc2FuZGJveEV4dGVuc2lvbnMoZWxlbWVudHNbaV0u
bV91cmwpOwotICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5h
cHBlbmQoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RC
b2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoYmxvYkVsZW1lbnRFeHRlbnNpb25zLmJl
Z2luKCksIGJsb2JFbGVtZW50RXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmNwcAppbmRleCA3YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2ViODQ5Li5i
ZmVhZTMxNDkzNGZkMTllOTVmNWNlMWRlNzdlNjc4ZTQ1MTg4OThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoQ29u
bmVjdGlvbiogYWxsb3dlZENvbm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0QmFjay5p
c0VtcHR5KCkpIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAg
ICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQobWVz
c2FnZXNUb1B1dEJhY2spOworICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGlu
Z0ZvclN5bmNSZXBseS5hcHBlbmRSYW5nZShtZXNzYWdlc1RvUHV0QmFjay5iZWdpbigpLCBtZXNz
YWdlc1RvUHV0QmFjay5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNw
cAppbmRleCBkNGM5ZWMyYzVmMmU1MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi40NzMzMmYw
Zjk0YzVhYWQyOWY3Yjk0YmFiMTRiYzlmYTlkNTJlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5p
eC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpw
bHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0
KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmQocGF0aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UocGF0
aHMuYmVnaW4oKSwgcGF0aHMuZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzEyYjlk
NzAyMjM5YmI5ZTE3NTUxYWIzY2RjMzczOTI1Nzc5ZmRhMS4uNjUzZTI2MDQxOGNhMzYyMTczYWUz
ZGI5YjgyN2FjODM2MDQyM2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFw
cGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFk
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW06CisgICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToK
KwogMjAxMy0wNS0wMiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIGEgc3RhbGUgc2NyaXB0IGZpbGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDM1M2VhOGQ2N2M5
M2Q5Njk2M2QxYWFiNDg1YTJkYWVhNGRmZTY1MDcuLjJiNjI3YmNjZjllYTQxNzUyMDJkNmY3NmRk
ODViMmYxMmI1YzQ1MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIEpT
U3RyaW5nUmVmIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0
ZSwgTlNTdHJpbmcqIHYKIAogICAgIFZlY3RvcjxVbmlDaGFyPiB2YWx1ZUJ1ZmZlcihbdmFsdWUg
bGVuZ3RoXSk7CiAgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFsdWVCdWZmZXIuZGF0YSgpXTsK
LSAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKyAgICBidWZmZXIuYXBwZW5kUmFuZ2Uo
dmFsdWVCdWZmZXIuYmVnaW4oKSwgdmFsdWVCdWZmZXIuZW5kKCkpOwogCiAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4YTk1
NTFjODVmYThhODdiZGU0MDVhMzk3YWY1ZTgwMjBlOGI5OTE2Li45NWNmYWU4Y2Y0NzNiZjQyNzg1
YzQyMWEwZjkyZmVmMjA1ODU5Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgog
CiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBb
dmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBl
bmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdp
bigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200374</attachid>
            <date>2013-05-02 17:11:22 -0700</date>
            <delta_ts>2013-05-02 17:18:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130502171034.patch</filename>
            <type>text/plain</type>
            <size>47418</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uY2MxN2M1MmJmNjE3NzBjMjc4MTI2MGVmN2M5MDRmNGJiZDc1ZjU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
aW5kZXggNzI0MDU1MmIxNmQzYzM4MmY1ZDBjZDA0MzExYTIzNmJiYjk5Y2IxYy4uZTI3OGZiNzIx
NWE3MDQ3OWU1MWRmOGEyM2QwNGFjYzRlZGRlYjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE3MCw2ICsx
NzAsMTEgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5kZXhOYW1lc0tleVR5cGVCeXRl
ID0gMjAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSA9IDI1NTsKIAorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxjaGFyPiYg
ZGVzdCwgY29uc3QgVmVjdG9yPGNoYXI+JiBzcmMpCit7CisgICAgZGVzdC5hcHBlbmRSYW5nZShz
cmMuYmVnaW4oKSwgc3JjLmVuZCgpKTsKK30KKwogVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5z
aWduZWQgY2hhciBjKQogewogICAgIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT4gdjsKQEAgLTMyNiw3ICszMzEsNyBAQCBTdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IGVuY29kZVZh
ckludChzLmxlbmd0aCgpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZyhzKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nKHMpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC00MTksNyArNDI0LDcgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXks
IFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElE
QktleTo6SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktl
eU51bGxUeXBlQnl0ZSkpOworICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlQnl0ZShJ
REJLZXlOdWxsVHlwZUJ5dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpB
cnJheVR5cGU6IHsKICAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5
cGVCeXRlKSk7CkBAIC00NDEsOCArNDQ2LDggQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURC
S2V5JiBrZXksIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlvdXNT
aXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6
Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsK
LSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOworICAgICAg
ICBhcHBlbmRWZWN0b3IoaW5mbywgZW5jb2RlQnl0ZShJREJLZXlOdW1iZXJUeXBlQnl0ZSkpOwor
ICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgLSBwcmV2aW91
c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTM1LDIxICsxMTQwLDIx
IEBAIEtleVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+
IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1h
VmVyc2lvblR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShTY2hl
bWFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4g
TWF4RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5
UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShNYXhEYXRh
YmFzZUlkVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE1heERh
dGFiYXNlSWRUeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5UHJl
Zml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTg1LDggQEAg
Y29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0
LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5
OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFi
YXNlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFi
YXNlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChkYXRhYmFz
ZUlkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTIyNyw5ICsxMjMyLDkgQEAgY29uc3Qg
Y2hhciogRGF0YWJhc2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGxpbWl0LCBEYXRhYmEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBw
ZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVu
Y29kZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0IGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
U3RyaW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBA
IC0xMjU1LDcgKzEyNjAsNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlIG1ldGFEYQogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4g
cmV0OwogfQogCkBAIC0xMjk0LDkgKzEyOTksOSBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAog
ewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJl
dCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3Rv
cmVNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0
U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAg
ICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0
ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICBy
ZXR1cm4gcmV0OwogfQogCkBAIC0xMzY5LDEwICsxMzc0LDEwIEBAIFZlY3RvcjxjaGFyPiBJbmRl
eE1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJ
bmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmpl
Y3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rv
cihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVC
eXRlKG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQz
Nyw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVj
dG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBh
cHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJldHVy
biByZXQ7CiB9CiAKQEAgLTE0ODksOSArMTQ5NCw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleEZyZWVM
aXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4g
cmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleEZy
ZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9y
ZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOworICAgIGFwcGVu
ZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRW
ZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE1NDUsOCArMTU1MCw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4
LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlw
ZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3Rv
cmVOYW1lKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5h
bWVzVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKG9iamVjdFN0b3JlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1ODgsOSAr
MTU5Myw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleE5hbWVzS2V5OjplbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvCiB7CiAgICAgS2V5UHJlZml4IHByZWZp
eChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwot
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlwZUJ5dGUpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQs
IGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE2MjAsNyArMTYyNSw3IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsK
KyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVkVXNlcktleSk7CiAKICAgICByZXR1cm4gcmV0
OwogfQpAQCAtMTY2Miw3ICsxNjY3LDcgQEAgVmVjdG9yPGNoYXI+IEV4aXN0c0VudHJ5S2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGMKIHsKICAg
ICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZEtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IApAQCAtMTczMyw5ICsxNzM4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQKIHsKICAgICBL
ZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIp
KTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5S2V5KTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVkVXNlcktleSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50
KHNlcXVlbmNlTnVtYmVyKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFByaW1hcnlL
ZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcyNjZlYjc5NGIwZThlZDBiZjUxNmUz
Yjc1MmY2YTc4MmNiYzYyLi42M2U1ZWZjMzQ1MTZjMzdlMTFiNGZjZjA5NThiNDg0MTg2OGIxOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKICAgICAv
LyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlv
biBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAgICBkbyB7CiAgICAgICAgIGRlbGV0
ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01h
cmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24u
ZW5kKCkpOwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9
IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1
cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBp
ZiAobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1
bGVkKSB7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRl
bGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uZW5kKCkpOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLmM4NmE4MzUwYmM4MDQ3Zjk0NTY4YTY3OGE1NTIy
ODYzY2JmZTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRSYW5n
ZShyb3ctPmNoaWxkcmVuKCkuYmVnaW4oKSwgcm93LT5jaGlsZHJlbigpLmVuZCgpKTsKIAogICAg
IGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFm
YWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3OTYwYjYxLi5lMzk0YWZkZGI1MDg3ODA3ZTg5
ZWQwODlhZWFkYmFiMmY3ODdmMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAg
ICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFuZ2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCks
IHJvdy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93
cy5hZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY3LDEwICs0NjcsOCBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJgogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBp
bnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwg
bnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJv
d0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFwcGVu
ZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJv
d3M7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRSYW5nZShtX3Jvd3Nbcm93XS0+Y2hpbGRy
ZW4oKS5iZWdpbigpLCBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKS5lbmQoKSk7CiB9CiAgICAgCiB1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZUZlYXR1cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2
ZTAuLjhiNDU3YjQzZGNkMjBmMTgxNjdiZTcxMGZkM2U2ZDJjNTY3N2I5ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIGVuZCA9IG90aGVyLmF0dHJz
SW5SdWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBw
ZW5kKG90aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBl
bmQob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisgICAgc2libGluZ1J1bGVzLmFwcGVu
ZFJhbmdlKG90aGVyLnNpYmxpbmdSdWxlcy5iZWdpbigpLCBvdGhlci5zaWJsaW5nUnVsZXMuZW5k
KCkpOworICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kUmFuZ2Uob3RoZXIudW5jb21t
b25BdHRyaWJ1dGVSdWxlcy5iZWdpbigpLCBvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmVu
ZCgpKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3Ro
ZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdXNlc0Jl
Zm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjk1Mjc5M2U3ZTIyYWE1ZWEwMzY2Yzg1ZDgy
ZTc0YTQ0OWE2NGUyYy4uNTkwNDIwZDE0YjFmMDdmYzM3ZDMwZTZlZGNhNjA5NTM1ZWQ4ZTUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3ICsxODI3LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwogICAgIE1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3Bl
cnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKKyAgICBjYWNoZUl0
ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kUmFuZ2UobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3Bl
cnRpZXMuYmVnaW4oKSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuZW5kKCkpOwogICAg
IGNhY2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5
IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNo
ZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVy
IHVzZWQgYXMtaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMwMWM5MjI0YWIwMTgwY2VmY2I5
M2FhYTYxNy4uZWI5NDhkOTg2YWU4ZmM5YjljZDg3Yzc4OWFlMWMwODFjYWQzOThlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cApAQCAtNDQxLDcgKzQ0MSw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNo
ZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsCiAgICAgSFRNTElG
cmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1sZXNzUGFy
ZW50SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNoZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCkt
PnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworCisg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cyA9IHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29s
bGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOworICAgIHNoZWV0cy5hcHBlbmRS
YW5nZShhY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5iZWdpbigpLCBhY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5lbmQoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBk
YXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQpAQCAtNDYyLDggKzQ2
NCw4IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBl
bmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0
cy5hcHBlbmQoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBhY3RpdmVDU1NTdHls
ZVNoZWV0cy5hcHBlbmRSYW5nZShpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwg
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKKyAgICBhY3RpdmVDU1NTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwgZG9j
dW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5
bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3Vt
ZW50KTsKICAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVl
dHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNmQ4Y2Q2MmQ3
MTI5ZDgyMmU2OTJhNTkzZDUzNDcyN2JhOGQ3MTc5ZS4uYjA3NTA2ZmYxMGEwYTNmZmI4MzQ3NTk0
ZGNhNDBhZDdjMmQ2OThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xOTI3LDcgKzE5MjcsNyBA
QCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0
ZVF1YWRzKGVsZW1lbnRRdWFkcyk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5h
ZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShlbGVt
ZW50UXVhZHMsIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRz
LmFwcGVuZChlbGVtZW50UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFJhbmdl
KGVsZW1lbnRRdWFkcy5iZWdpbigpLCBlbGVtZW50UXVhZHMuZW5kKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0b1RleHQobm9kZSktPnJlbmRlcmVyKCkpIHsK
QEAgLTE5MzksNyArMTkzOSw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVuZGVyVGV4
dC0+YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5hZGp1c3RGbG9hdFF1YWRzRm9y
U2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSh0ZXh0UXVhZHMsIHJlbmRlclRleHQp
OwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHRleHRRdWFkcyk7CisgICAgICAgICAg
ICAgICAgcXVhZHMuYXBwZW5kUmFuZ2UodGV4dFF1YWRzLmJlZ2luKCksIHRleHRRdWFkcy5lbmQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDljYzI4NzQ0MTgxMDM5MDk4MTE4
MzQzOTI4NDUzNGEzMjVkMmI2My4uNzU4OTNhNTUyZjI4MGFmOGZjMWUwZDYwOGUwNmY0YTU2ZTRh
ZjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cApAQCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNr
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5nCiAgICAgICAgIGlm
IChyZXN1bHRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdHMuc3dhcChzcGVsbGluZ1Jl
c3VsdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNwZWxsaW5n
UmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kUmFuZ2Uoc3BlbGxpbmdSZXN1bHQu
YmVnaW4oKSwgc3BlbGxpbmdSZXN1bHQuZW5kKCkpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3ZmI1OWJmMzBmOWE1
ODQ3YjQ1YjNjNGZkMzBiNzAxLi43NGJjOTdkOTQyZWRiMjk1NDJhMDQ0YzcwMTMyZWZkOTY1ZjAz
MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNTEwLDggKzUx
MCwxMCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdAogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0
dXJuOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKICAgICBmb3JtU3RhdGVzRnJvbVN0YXRl
VmVjdG9yKHN0YXRlVmVjdG9yLCBtYXApOwotICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAg
ICAgICAgdG9SZXR1cm4uYXBwZW5kKGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
KTsKKyAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5i
ZWdpbigpLCBlbmQgPSBtYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZWZlcmVuY2VkRmlsZVBhdGhzID0gaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZFJhbmdlKHJlZmVyZW5jZWRGaWxl
UGF0aHMuYmVnaW4oKSwgcmVmZXJlbmNlZEZpbGVQYXRocy5lbmQoKSk7CisgICAgfQogICAgIHJl
dHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTliYzk1MGNhZDNiZGRhODky
YTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uOTkyZTRiNzA4ZGQ5MzQ3MTViMWU4ZDI4Mzk4ZGFiNzBl
MWE2Y2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gp
CiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gY29waWVzIHRo
ZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAg
ICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5l
RGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2gu
YXBwZW5kUmFuZ2UoZGFzaC5iZWdpbigpLCBkYXNoLmVuZCgpKTsKIAogICAgIGFwcGx5TGluZURh
c2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKaW5kZXggZjZmOWEyOGIxNGFhNzE3NDIyYmVkMTM4ODMy
MjllMWEyNjBlMzAwMC4uNzg1NzQzM2I2ZDZkOWNhODAxMTU5OTI3ZWQ4OWRjNzlmNjE5Yzc0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFj
a0l0ZQogICAgIGlmIChjYW5kaWRhdGVzLnNpemUoKSA8IGtOb2Foc0Fya0NhcGFjaXR5KQogICAg
ICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgcm9vbSBmb3IgdGhlIG5ldyBlbGVtZW50IGluIHRoZSBh
cmsuIFRoZXJlJ3Mgbm8gbmVlZCB0byBjb3B5IG91dCB0aGUgcmVtYWluaW5nQ2FuZGlkYXRlcy4K
IAotICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZXMpOworICAgIHJlbWFp
bmluZ0NhbmRpZGF0ZXMuYXBwZW5kUmFuZ2UoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVz
LmVuZCgpKTsKIH0KIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAppbmRleCA1NDI0YmQxNDZjMGFhYmIyYjY5MGE5ZWFhYjAyMjlmOTdj
MDhiMTIzLi5mOTQ4Zjk2YWQ0MWIxNmY0NjJiYzA2YzM3YjJjM2E5MWI0NTFhOTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CiAKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5l
bmQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQpAQCAtMzk4LDcgKzM5
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxM
Q2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBD
aGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVu
ZCgpKTsKICAgICB9CiAKICAgICAvKiBDb21tZW50IFRva2VucyAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5
MzFjMDZlNDg5NDcuLmZhN2FmM2Q2ZWE3YjBmN2MwNzliMTMwNDNjNWRkMTA0OTllZjRjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAz
Mj4mIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNo
YXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAg
ICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5k
KCkpOwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5FbXB0eVN0YXJ0VGFnKCkKQEAgLTE0OSw3ICsx
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcp
OwogICAgICAgICBpZiAoIW1fY2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNz
ZXMuYXBwZW5kKCcgJyk7Ci0gICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVy
KTsKKyAgICAgICAgbV9jbGFzc2VzLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigp
LCBtX2N1cnJlbnRCdWZmZXIuZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIo
KTsKICAgICB9CiAgICAgCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1fYW5ub3RhdGlv
bi5jbGVhcigpOwotICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7
CisgICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4o
KSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmlu
ZGV4IDBmNDU3ZDEzNGU5NDRkNWY5OTcxMDE2MTM2Y2Q1MzFhMTIyNTAyZGUuLmQyNjE0Yjg3MDI0
YmY0MjZhOTRmODQxOGQxNTdhNmUyY2MwZWE5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKQEAgLTEwMyw4ICsxMDMsOCBAQCBWZWN0b3I8U3RyaW5nPiBGaWxlQ2hv
b3NlclNldHRpbmdzOjphY2NlcHRUeXBlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWNjZXB0VHlwZXM7CiAgICAgYWNjZXB0VHlwZXMucmVzZXJ2ZUNhcGFjaXR5KGFjY2VwdE1JTUVU
eXBlcy5zaXplKCkgKyBhY2NlcHRGaWxlRXh0ZW5zaW9ucy5zaXplKCkpOwotICAgIGFjY2VwdFR5
cGVzLmFwcGVuZChhY2NlcHRNSU1FVHlwZXMpOwotICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2Nl
cHRGaWxlRXh0ZW5zaW9ucyk7CisgICAgYWNjZXB0VHlwZXMuYXBwZW5kUmFuZ2UoYWNjZXB0TUlN
RVR5cGVzLmJlZ2luKCksIGFjY2VwdE1JTUVUeXBlcy5lbmQoKSk7CisgICAgYWNjZXB0VHlwZXMu
YXBwZW5kUmFuZ2UoYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKSwgYWNjZXB0RmlsZUV4dGVu
c2lvbnMuZW5kKCkpOwogICAgIHJldHVybiBhY2NlcHRUeXBlczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVk
Nzc2YWRkOGExYzNjMTg3NTNiNjg5ZDY2NDk2MGQ1ZWIxYTk1YmIuLmNkY2M0OWRhMDk5NjViYTgz
N2NkNDk5ZWNhNTFkMGI2NWRjMGExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJv
b2wgaW5jbHVkZVNlcGFyYXQKICAgICAgICAgICAgIG1fc2VwYXJhdG9ySW5kZXgrKzsKICAgICAg
ICAgICAgIGlmIChtX3NlcGFyYXRvckluZGV4ID09IG1fc2VwYXJhdG9yLnNpemUoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChpbmNsdWRlU2VwYXJhdG9yKQotICAgICAgICAgICAgICAgICAgICBj
aHVuay5hcHBlbmQobV9zZXBhcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBjaHVuay5hcHBl
bmRSYW5nZShtX3NlcGFyYXRvci5iZWdpbigpLCBtX3NlcGFyYXRvci5lbmQoKSk7CiAgICAgICAg
ICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKaW5kZXggYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0
NmI3ZDhjZi4uNWIxNDA1YTM2MzBhNDk4MzI3MThhNmQ4NDRkNzZiMWMwNmJhZTY5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAt
OTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZl
Y3RvcjxTdHJpbmc+JiBzaXRlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKICAgICAgICAgZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMp
OworICAgICAgICBzaXRlcy5hcHBlbmRSYW5nZShlbmdpbmVTaXRlcy5iZWdpbigpLCBlbmdpbmVT
aXRlcy5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTJhNDc4OWM4OWE0Y2Fm
MDU0MzY3N2M4MzRjNDFlZDQyYWNhMWMyMy4uOTgwOWI3OGFjN2YwZmRjY2I1NWVmMjg3OGQ4YzI5
NzlkYmZhMzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKICAgICB1bnNpZ25lZCBzaXplID0gZGly
dHlUaWxlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikg
ewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gcGFpbnRlZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+
dXBkYXRlQmFja0J1ZmZlcigpOwotICAgICAgICBwYWludGVkQXJlYS5hcHBlbmQocGFpbnRlZFJl
Y3RzKTsKKyAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kUmFuZ2UocGFpbnRlZFJlY3RzLmJlZ2lu
KCksIHBhaW50ZWRSZWN0cy5lbmQoKSk7CiAgICAgICAgIGRpcnR5VGlsZXNbbl0tPnN3YXBCYWNr
QnVmZmVyVG9Gcm9udCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZlMjdiMGMz
NGM4YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uM2U2YzVlYWZkMjJlNTYwNDhmMjgzODlkY2I0
NjljZWRlMmFmMTliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJl
YWNoZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5ZXJzID0g
bV9zdHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1hcnlMYXll
ckNoaWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJpbWFyeUxh
eWVyQ2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmltYXJ5TGF5
ZXJDaGlsZHJlbi5hcHBlbmRSYW5nZShjdXN0b21TdWJsYXllcnMtPmJlZ2luKCksIGN1c3RvbVN1
YmxheWVycy0+ZW5kKCkpOwogCiAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CiAgICAgICAg
IGlmIChtX3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZhZjQ2ZjdmNGFjZjg2MmMyOTY5MTkzMDU2
Zi4uMmZjOWY3NTkwOGRmNWVhNjYzNGE5N2U5YmY5NWY2YzdhY2Y3YTk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAg
c3RhdGljIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhib29sIGNhblNt
YXJ0Q29weU9yRGVsZXRlLCBib29sIHMKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKK3N0YXRpYyBWZWN0b3I8
U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
czsKICAgICAKQEAgLTEwNiw3ICsxMDYsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+
IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgCiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1RJRkZQYm9hcmRUeXBlKSk7Ci0gICAg
dHlwZXMuYXBwZW5kKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CisgICAgZm9yIChjb25zdCBTdHJp
bmcmIHR5cGU6IHdyaXRhYmxlVHlwZXNGb3JVUkwoKSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKHR5
cGUpOwogICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNSVEZEUGJvYXJkVHlwZSkpOwogICAgIHJl
dHVybiB0eXBlczsKIH0KQEAgLTExNCw3ICsxMTUsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxT
dHJpbmc+IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gd3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICB0eXBlcy5hcHBlbmQoY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkpOworICAgIGZv
ciAoY29uc3QgU3RyaW5nJiB0eXBlOiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSkKKyAg
ICAgICAgdHlwZXMuYXBwZW5kKHR5cGUpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3
LDcgKzE4OSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0
YTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRU
eXBlcywgY2xpZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0
eXBlcy5hcHBlbmRSYW5nZShjbGllbnRUeXBlcy5iZWdpbigpLCBjbGllbnRUeXBlcy5lbmQoKSk7
CiAKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVu
dCgpLT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCA1Njdi
ZDYwYjk5NzQ5MjcxNDNiZTJiZGEyMjAzNzhjZjY5NTdlNjkzLi45NjcwM2NkYTUxNDcwNTkxOGJj
YTNhN2E0YTY0NjhiNDFiNzhjNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgVmVjdG9y
PGNoYXI+IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVCb3VuZGFyeVN0cmluZygpCiAg
ICAgICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChhbHBoYU51bWVyaWNFbmNvZGluZ01hcFtyYW5kb21u
ZXNzICYgMHgzRl0pOwogICAgIH0KIAotICAgIGJvdW5kYXJ5LmFwcGVuZChyYW5kb21CeXRlcyk7
CisgICAgYm91bmRhcnkuYXBwZW5kUmFuZ2UocmFuZG9tQnl0ZXMuYmVnaW4oKSwgcmFuZG9tQnl0
ZXMuZW5kKCkpOwogICAgIGJvdW5kYXJ5LmFwcGVuZCgwKTsgLy8gQWRkIGEgMCBhdCB0aGUgZW5k
IHNvIHdlIGNhbiB1c2UgdGhpcyBhcyBhIEMtc3R5bGUgc3RyaW5nLgogICAgIHJldHVybiBib3Vu
ZGFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKaW5kZXggNzAyYzRhN2E3NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNh
Ni4uZTZjMWM4MmVjZTU0OTlhYjZlYWI5MDNhODI1YmE0OGI5N2EzNTdiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEz
NDksNyArMTM0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNl
Z21lbnQoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2Ug
ZW5jb3VudGVyZWQgYW55IG5lc3RlZCBpc29sYXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAg
ICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2ZXIncyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgog
ICAgICAgICBpZiAoIWlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRS
ZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7CisgICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRl
ZFJ1bnMoKS5hcHBlbmRSYW5nZShpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmJlZ2lu
KCksIGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuZW5kKCkpOwogICAgICAgICAgICAg
aXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAppbmRleCBhM2E0OTExYzNhOTUxMDY2MzliZDY0ZDU3NjZhNDIyYTU0NTYyYzI3Li42OTZm
OTgzZjQ0NTlkZWRlZjIxYzQxNTMzNzg0NzQzYTUxNzRlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQogICAg
IHsKLSAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBw
ZW5kKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CisgICAgICAgIG1fb3ZlcmxhcFN0YWNrW21fb3Zl
cmxhcFN0YWNrLnNpemUoKSAtIDJdLmFwcGVuZFJhbmdlKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5i
ZWdpbigpLCBtX292ZXJsYXBTdGFjay5sYXN0KCkuZW5kKCkpOwogICAgICAgICBtX292ZXJsYXBT
dGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDNkNTEyOTNkMTJjMmM4OGUzMGI4MzBlYWZm
ODZhYTc3OWJiOGU5MWEuLmY1YmIxN2NmZTI1MmU3ZjI3MGFlYzFjMDlkY2E5NzRlM2VhNDM0M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1
bW4odW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlk
W3Jvd10ucm93OwogICAgICAgICByLmluc2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAg
ICAgICBpZiAocltwb3NdLmhhc0NlbGxzKCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2Vs
bHMuYXBwZW5kKHJbcG9zXS5jZWxscyk7CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFw
cGVuZFJhbmdlKHJbcG9zXS5jZWxscy5iZWdpbigpLCByW3Bvc10uY2VsbHMuZW5kKCkpOwogICAg
ICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gcltwb3NdLnByaW1hcnlDZWxsKCk7CiAg
ICAgICAgICAgICBBU1NFUlQoY2VsbCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+Y29sU3Bh
bigpID49IChyW3Bvc10uaW5Db2xTcGFuID8gMXUgOiAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1h
cC5oCmluZGV4IDkyOTQ1MjY5NjU5MWQ3YTcwYjRiMWE3N2ViMDQ2N2M3MmRkMzg0NDIuLmViY2Zh
Y2E5ZDczZTQzNWU0ZTgxODgzNmI2NjdlNWIzMTdhNWJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aE1hcC5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEds
eXBoTWFwTm9kZT4gbm9kZSA9IGN1cnJlbnRMYXllci0+Z2V0KGNoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBnbHlw
aHMuYXBwZW5kKG5vZGUtPmdseXBocyk7CisgICAgICAgICAgICBnbHlwaHMuYXBwZW5kUmFuZ2Uo
bm9kZS0+Z2x5cGhzLmJlZ2luKCksIG5vZGUtPmdseXBocy5lbmQoKSk7CiAgICAgICAgICAgICBj
dXJyZW50TGF5ZXIgPSAmbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0b3Iu
YWR2YW5jZShjbHVzdGVyTGVuZ3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoTm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNl
dC5oCmluZGV4IGJjNzY3ZDVjMzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjEwNmU4
NTAyMmMyNTkxNjJlZTY1YTE1ODZiMmFmYmViZWVjOTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhO
b2RlU2V0LmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgLy8gTm9kZVNldCBpdHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJl
IHVuaXF1ZS4KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rlcy5h
cHBlbmQobm9kZSk7IH0KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSkgeyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBlbmQo
Y29uc3QgTm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9kZXMp
OyB9CisgICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1f
bm9kZXMuYXBwZW5kUmFuZ2Uobm9kZVNldC5tX25vZGVzLmJlZ2luKCksIG5vZGVTZXQubV9ub2Rl
cy5lbmQoKSk7IH0KIAogICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2V0J3MgZmlyc3Qgbm9k
ZSBpbiBkb2N1bWVudCBvcmRlciwgb3IgMCBpZiB0aGUgc2V0IGlzIGVtcHR5LgogICAgICAgICAg
ICAgTm9kZSogZmlyc3ROb2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRl
eCAyZTMwYmNiNzg3ZTI2MjE1NmQ2MGE5OWQzNzllOTM4YTE1MjJhNzg1Li43ZDhhNWM5YzNmMGIz
OGNmN2MzOWI2MTlhNWU3MTdjMDY4YzMxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
QEAgLTU1LDggKzU1LDEwIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgVmVjdG9yPFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zID0gbmV3U2FuZGJveEV4
dGVuc2lvbnM7CiAgICAgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMgPSBkYXRhLT5pdGVt
cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGl0ZW1zLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpIHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpC
bG9iKQotICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKG1fc2FuZGJveEV4dGVu
c2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSkpOworICAgICAgICBpZiAoaXRlbXNbaV0u
dHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJsb2IpIHsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9u
cyA9IG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSk7CisgICAg
ICAgICAgICBleHRlbnNpb25zLmFwcGVuZFJhbmdlKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5z
aW9ucy5lbmQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwodXJsLCBkYXRhKTsKQEAgLTEwNyw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUAogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uKTsK
IH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1Zl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKaW5kZXggNTJkMmRmOWMxOTg5MjkzYTEwMzY1Yjk0ODY0NTFhMWFkODY5NzFhNS4u
NjdkMGNjZmVjZWYwOThlMDUzNmQ2MzY1NzhhYTQyZjg5MTIwYmZjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9u
VG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAot
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBzYW5kYm94RXh0ZW5z
aW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPj4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKaW5kZXggOWQ0NmY3
NDhiZjRjMjBmYzY5ZjYwYTVhNzU2ZGE2ZGEwMmFmNWNiNS4uMDJhNzAyOGVkMmM2Y2M5YjNkZTMy
ZTk1YzQ1ODY1MmQzZDMxZDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTY2hlZHVsYWJs
ZUxvYWRlcjo6U2NoZWR1bGFibGVMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmIHBhcmFtZQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50
cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0u
bV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gYmxvYkVsZW1lbnRFeHRlbnNpb25z
ID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkuc2FuZGJveEV4dGVuc2lvbnMoZWxlbWVu
dHNbaV0ubV91cmwpOwotICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5z
aW9ucy5hcHBlbmQoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKKyAgICAgICAgICAgICAgICBtX3Jl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoYmxvYkVsZW1lbnRFeHRlbnNp
b25zLmJlZ2luKCksIGJsb2JFbGVtZW50RXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmNwcAppbmRleCA3YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2Vi
ODQ5Li5iZmVhZTMxNDkzNGZkMTllOTVmNWNlMWRlNzdlNjc4ZTQ1MTg4OThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsx
OTAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2Fn
ZXMoQ29ubmVjdGlvbiogYWxsb3dlZENvbm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0
QmFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwot
ICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBl
bmQobWVzc2FnZXNUb1B1dEJhY2spOworICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxl
V2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmRSYW5nZShtZXNzYWdlc1RvUHV0QmFjay5iZWdpbigp
LCBtZXNzYWdlc1RvUHV0QmFjay5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVV
bml4LmNwcAppbmRleCBkNGM5ZWMyYzVmMmU1MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi40
NzMzMmYwZjk0YzVhYWQyOWY3Yjk0YmFiMTRiYzlmYTlkNTJlMDA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0
b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHko
KSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhz
LnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGF0aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kUmFu
Z2UocGF0aHMuYmVnaW4oKSwgcGF0aHMuZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MzEyYjlkNzAyMjM5YmI5ZTE3NTUxYWIzY2RjMzczOTI1Nzc5ZmRhMS4uNjUzZTI2MDQxOGNhMzYy
MTczYWUzZGI5YjgyN2FjODM2MDQyM2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAyICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0
b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBp
bnN0ZWFkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZh
bHVlKToKKwogMjAxMy0wNS0wMiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIGEgc3RhbGUgc2NyaXB0IGZpbGUuCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDM1M2Vh
OGQ2N2M5M2Q5Njk2M2QxYWFiNDg1YTJkYWVhNGRmZTY1MDcuLjJiNjI3YmNjZjllYTQxNzUyMDJk
NmY3NmRkODViMmYxMmI1YzQ1MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgc3Rh
dGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0
dHJpYnV0ZSwgTlNTdHJpbmcqIHYKIAogICAgIFZlY3RvcjxVbmlDaGFyPiB2YWx1ZUJ1ZmZlcihb
dmFsdWUgbGVuZ3RoXSk7CiAgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFsdWVCdWZmZXIuZGF0
YSgpXTsKLSAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKyAgICBidWZmZXIuYXBwZW5k
UmFuZ2UodmFsdWVCdWZmZXIuYmVnaW4oKSwgdmFsdWVCdWZmZXIuZW5kKCkpOwogCiAgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRl
eCA4YTk1NTFjODVmYThhODdiZGU0MDVhMzk3YWY1ZTgwMjBlOGI5OTE2Li45NWNmYWU4Y2Y0NzNi
ZjQyNzg1YzQyMWEwZjkyZmVmMjA1ODU5Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYg
Y29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmlu
ZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsK
ICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZl
ci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZl
ci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200375</attachid>
            <date>2013-05-02 17:19:02 -0700</date>
            <delta_ts>2013-05-02 17:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130502171814.patch</filename>
            <type>text/plain</type>
            <size>48167</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uY2MxN2M1MmJmNjE3NzBjMjc4MTI2MGVmN2M5MDRmNGJiZDc1ZjU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
aW5kZXggNzI0MDU1MmIxNmQzYzM4MmY1ZDBjZDA0MzExYTIzNmJiYjk5Y2IxYy4uZTI3OGZiNzIx
NWE3MDQ3OWU1MWRmOGEyM2QwNGFjYzRlZGRlYjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE3MCw2ICsx
NzAsMTEgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5kZXhOYW1lc0tleVR5cGVCeXRl
ID0gMjAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSA9IDI1NTsKIAorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxjaGFyPiYg
ZGVzdCwgY29uc3QgVmVjdG9yPGNoYXI+JiBzcmMpCit7CisgICAgZGVzdC5hcHBlbmRSYW5nZShz
cmMuYmVnaW4oKSwgc3JjLmVuZCgpKTsKK30KKwogVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5z
aWduZWQgY2hhciBjKQogewogICAgIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT4gdjsKQEAgLTMyNiw3ICszMzEsNyBAQCBTdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IGVuY29kZVZh
ckludChzLmxlbmd0aCgpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZyhzKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nKHMpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC00MTksNyArNDI0LDcgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXks
IFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElE
QktleTo6SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktl
eU51bGxUeXBlQnl0ZSkpOworICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlQnl0ZShJ
REJLZXlOdWxsVHlwZUJ5dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpB
cnJheVR5cGU6IHsKICAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5
cGVCeXRlKSk7CkBAIC00NDEsOCArNDQ2LDggQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURC
S2V5JiBrZXksIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlvdXNT
aXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6
Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsK
LSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOworICAgICAg
ICBhcHBlbmRWZWN0b3IoaW5mbywgZW5jb2RlQnl0ZShJREJLZXlOdW1iZXJUeXBlQnl0ZSkpOwor
ICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgLSBwcmV2aW91
c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTM1LDIxICsxMTQwLDIx
IEBAIEtleVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+
IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1h
VmVyc2lvblR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShTY2hl
bWFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4g
TWF4RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5
UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShNYXhEYXRh
YmFzZUlkVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE1heERh
dGFiYXNlSWRUeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5UHJl
Zml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTg1LDggQEAg
Y29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0
LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5
OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFi
YXNlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFi
YXNlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChkYXRhYmFz
ZUlkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTIyNyw5ICsxMjMyLDkgQEAgY29uc3Qg
Y2hhciogRGF0YWJhc2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGxpbWl0LCBEYXRhYmEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBw
ZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVu
Y29kZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0IGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
U3RyaW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBA
IC0xMjU1LDcgKzEyNjAsNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlIG1ldGFEYQogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4g
cmV0OwogfQogCkBAIC0xMjk0LDkgKzEyOTksOSBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAog
ewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJl
dCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3Rv
cmVNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0
U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAg
ICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0
ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICBy
ZXR1cm4gcmV0OwogfQogCkBAIC0xMzY5LDEwICsxMzc0LDEwIEBAIFZlY3RvcjxjaGFyPiBJbmRl
eE1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJ
bmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmpl
Y3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rv
cihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVC
eXRlKG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQz
Nyw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVj
dG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBh
cHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJldHVy
biByZXQ7CiB9CiAKQEAgLTE0ODksOSArMTQ5NCw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleEZyZWVM
aXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4g
cmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleEZy
ZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9y
ZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOworICAgIGFwcGVu
ZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRW
ZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE1NDUsOCArMTU1MCw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4
LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlw
ZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3Rv
cmVOYW1lKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5h
bWVzVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKG9iamVjdFN0b3JlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1ODgsOSAr
MTU5Myw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleE5hbWVzS2V5OjplbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvCiB7CiAgICAgS2V5UHJlZml4IHByZWZp
eChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwot
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlwZUJ5dGUpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQs
IGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE2MjAsNyArMTYyNSw3IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsK
KyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVkVXNlcktleSk7CiAKICAgICByZXR1cm4gcmV0
OwogfQpAQCAtMTY2Miw3ICsxNjY3LDcgQEAgVmVjdG9yPGNoYXI+IEV4aXN0c0VudHJ5S2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGMKIHsKICAg
ICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZEtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IApAQCAtMTczMyw5ICsxNzM4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQKIHsKICAgICBL
ZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIp
KTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5S2V5KTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVkVXNlcktleSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50
KHNlcXVlbmNlTnVtYmVyKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFByaW1hcnlL
ZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcyNjZlYjc5NGIwZThlZDBiZjUxNmUz
Yjc1MmY2YTc4MmNiYzYyLi42M2U1ZWZjMzQ1MTZjMzdlMTFiNGZjZjA5NThiNDg0MTg2OGIxOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKICAgICAv
LyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlv
biBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAgICBkbyB7CiAgICAgICAgIGRlbGV0
ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01h
cmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24u
ZW5kKCkpOwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9
IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1
cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBp
ZiAobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1
bGVkKSB7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRl
bGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uZW5kKCkpOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLmM4NmE4MzUwYmM4MDQ3Zjk0NTY4YTY3OGE1NTIy
ODYzY2JmZTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRSYW5n
ZShyb3ctPmNoaWxkcmVuKCkuYmVnaW4oKSwgcm93LT5jaGlsZHJlbigpLmVuZCgpKTsKIAogICAg
IGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFm
YWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3OTYwYjYxLi5lMzk0YWZkZGI1MDg3ODA3ZTg5
ZWQwODlhZWFkYmFiMmY3ODdmMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAg
ICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFuZ2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCks
IHJvdy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93
cy5hZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY3LDEwICs0NjcsOCBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJgogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBp
bnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwg
bnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJv
d0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFwcGVu
ZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJv
d3M7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRSYW5nZShtX3Jvd3Nbcm93XS0+Y2hpbGRy
ZW4oKS5iZWdpbigpLCBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKS5lbmQoKSk7CiB9CiAgICAgCiB1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZUZlYXR1cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2
ZTAuLjhiNDU3YjQzZGNkMjBmMTgxNjdiZTcxMGZkM2U2ZDJjNTY3N2I5ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIGVuZCA9IG90aGVyLmF0dHJz
SW5SdWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBw
ZW5kKG90aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBl
bmQob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisgICAgc2libGluZ1J1bGVzLmFwcGVu
ZFJhbmdlKG90aGVyLnNpYmxpbmdSdWxlcy5iZWdpbigpLCBvdGhlci5zaWJsaW5nUnVsZXMuZW5k
KCkpOworICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kUmFuZ2Uob3RoZXIudW5jb21t
b25BdHRyaWJ1dGVSdWxlcy5iZWdpbigpLCBvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmVu
ZCgpKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3Ro
ZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdXNlc0Jl
Zm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjk1Mjc5M2U3ZTIyYWE1ZWEwMzY2Yzg1ZDgy
ZTc0YTQ0OWE2NGUyYy4uNTkwNDIwZDE0YjFmMDdmYzM3ZDMwZTZlZGNhNjA5NTM1ZWQ4ZTUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3ICsxODI3LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwogICAgIE1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3Bl
cnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKKyAgICBjYWNoZUl0
ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kUmFuZ2UobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3Bl
cnRpZXMuYmVnaW4oKSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuZW5kKCkpOwogICAg
IGNhY2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5
IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNo
ZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVy
IHVzZWQgYXMtaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMwMWM5MjI0YWIwMTgwY2VmY2I5
M2FhYTYxNy4uZWI5NDhkOTg2YWU4ZmM5YjljZDg3Yzc4OWFlMWMwODFjYWQzOThlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cApAQCAtNDQxLDcgKzQ0MSw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNo
ZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsCiAgICAgSFRNTElG
cmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1sZXNzUGFy
ZW50SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNoZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCkt
PnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworCisg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cyA9IHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29s
bGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOworICAgIHNoZWV0cy5hcHBlbmRS
YW5nZShhY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5iZWdpbigpLCBhY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5lbmQoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBk
YXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQpAQCAtNDYyLDggKzQ2
NCw4IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBl
bmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0
cy5hcHBlbmQoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBhY3RpdmVDU1NTdHls
ZVNoZWV0cy5hcHBlbmRSYW5nZShpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwg
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKKyAgICBhY3RpdmVDU1NTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwgZG9j
dW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5
bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3Vt
ZW50KTsKICAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVl
dHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNmQ4Y2Q2MmQ3
MTI5ZDgyMmU2OTJhNTkzZDUzNDcyN2JhOGQ3MTc5ZS4uYjA3NTA2ZmYxMGEwYTNmZmI4MzQ3NTk0
ZGNhNDBhZDdjMmQ2OThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xOTI3LDcgKzE5MjcsNyBA
QCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0
ZVF1YWRzKGVsZW1lbnRRdWFkcyk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5h
ZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShlbGVt
ZW50UXVhZHMsIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRz
LmFwcGVuZChlbGVtZW50UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFJhbmdl
KGVsZW1lbnRRdWFkcy5iZWdpbigpLCBlbGVtZW50UXVhZHMuZW5kKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0b1RleHQobm9kZSktPnJlbmRlcmVyKCkpIHsK
QEAgLTE5MzksNyArMTkzOSw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVuZGVyVGV4
dC0+YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5hZGp1c3RGbG9hdFF1YWRzRm9y
U2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSh0ZXh0UXVhZHMsIHJlbmRlclRleHQp
OwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHRleHRRdWFkcyk7CisgICAgICAgICAg
ICAgICAgcXVhZHMuYXBwZW5kUmFuZ2UodGV4dFF1YWRzLmJlZ2luKCksIHRleHRRdWFkcy5lbmQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDljYzI4NzQ0MTgxMDM5MDk4MTE4
MzQzOTI4NDUzNGEzMjVkMmI2My4uNzU4OTNhNTUyZjI4MGFmOGZjMWUwZDYwOGUwNmY0YTU2ZTRh
ZjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cApAQCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNr
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5nCiAgICAgICAgIGlm
IChyZXN1bHRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdHMuc3dhcChzcGVsbGluZ1Jl
c3VsdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNwZWxsaW5n
UmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kUmFuZ2Uoc3BlbGxpbmdSZXN1bHQu
YmVnaW4oKSwgc3BlbGxpbmdSZXN1bHQuZW5kKCkpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3ZmI1OWJmMzBmOWE1
ODQ3YjQ1YjNjNGZkMzBiNzAxLi43NGJjOTdkOTQyZWRiMjk1NDJhMDQ0YzcwMTMyZWZkOTY1ZjAz
MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNTEwLDggKzUx
MCwxMCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdAogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0
dXJuOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKICAgICBmb3JtU3RhdGVzRnJvbVN0YXRl
VmVjdG9yKHN0YXRlVmVjdG9yLCBtYXApOwotICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAg
ICAgICAgdG9SZXR1cm4uYXBwZW5kKGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
KTsKKyAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5i
ZWdpbigpLCBlbmQgPSBtYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZWZlcmVuY2VkRmlsZVBhdGhzID0gaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZFJhbmdlKHJlZmVyZW5jZWRGaWxl
UGF0aHMuYmVnaW4oKSwgcmVmZXJlbmNlZEZpbGVQYXRocy5lbmQoKSk7CisgICAgfQogICAgIHJl
dHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTliYzk1MGNhZDNiZGRhODky
YTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uOTkyZTRiNzA4ZGQ5MzQ3MTViMWU4ZDI4Mzk4ZGFiNzBl
MWE2Y2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gp
CiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gY29waWVzIHRo
ZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAg
ICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5l
RGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2gu
YXBwZW5kUmFuZ2UoZGFzaC5iZWdpbigpLCBkYXNoLmVuZCgpKTsKIAogICAgIGFwcGx5TGluZURh
c2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKaW5kZXggZjZmOWEyOGIxNGFhNzE3NDIyYmVkMTM4ODMy
MjllMWEyNjBlMzAwMC4uNzg1NzQzM2I2ZDZkOWNhODAxMTU5OTI3ZWQ4OWRjNzlmNjE5Yzc0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFj
a0l0ZQogICAgIGlmIChjYW5kaWRhdGVzLnNpemUoKSA8IGtOb2Foc0Fya0NhcGFjaXR5KQogICAg
ICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgcm9vbSBmb3IgdGhlIG5ldyBlbGVtZW50IGluIHRoZSBh
cmsuIFRoZXJlJ3Mgbm8gbmVlZCB0byBjb3B5IG91dCB0aGUgcmVtYWluaW5nQ2FuZGlkYXRlcy4K
IAotICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZXMpOworICAgIHJlbWFp
bmluZ0NhbmRpZGF0ZXMuYXBwZW5kUmFuZ2UoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVz
LmVuZCgpKTsKIH0KIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAppbmRleCA1NDI0YmQxNDZjMGFhYmIyYjY5MGE5ZWFhYjAyMjlmOTdj
MDhiMTIzLi5mOTQ4Zjk2YWQ0MWIxNmY0NjJiYzA2YzM3YjJjM2E5MWI0NTFhOTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CiAKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5l
bmQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQpAQCAtMzk4LDcgKzM5
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxM
Q2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBD
aGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVu
ZCgpKTsKICAgICB9CiAKICAgICAvKiBDb21tZW50IFRva2VucyAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5
MzFjMDZlNDg5NDcuLmZhN2FmM2Q2ZWE3YjBmN2MwNzliMTMwNDNjNWRkMTA0OTllZjRjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAz
Mj4mIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNo
YXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAg
ICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5k
KCkpOwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5FbXB0eVN0YXJ0VGFnKCkKQEAgLTE0OSw3ICsx
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcp
OwogICAgICAgICBpZiAoIW1fY2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNz
ZXMuYXBwZW5kKCcgJyk7Ci0gICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVy
KTsKKyAgICAgICAgbV9jbGFzc2VzLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigp
LCBtX2N1cnJlbnRCdWZmZXIuZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIo
KTsKICAgICB9CiAgICAgCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1fYW5ub3RhdGlv
bi5jbGVhcigpOwotICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7
CisgICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4o
KSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmlu
ZGV4IDBmNDU3ZDEzNGU5NDRkNWY5OTcxMDE2MTM2Y2Q1MzFhMTIyNTAyZGUuLmQyNjE0Yjg3MDI0
YmY0MjZhOTRmODQxOGQxNTdhNmUyY2MwZWE5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKQEAgLTEwMyw4ICsxMDMsOCBAQCBWZWN0b3I8U3RyaW5nPiBGaWxlQ2hv
b3NlclNldHRpbmdzOjphY2NlcHRUeXBlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
YWNjZXB0VHlwZXM7CiAgICAgYWNjZXB0VHlwZXMucmVzZXJ2ZUNhcGFjaXR5KGFjY2VwdE1JTUVU
eXBlcy5zaXplKCkgKyBhY2NlcHRGaWxlRXh0ZW5zaW9ucy5zaXplKCkpOwotICAgIGFjY2VwdFR5
cGVzLmFwcGVuZChhY2NlcHRNSU1FVHlwZXMpOwotICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2Nl
cHRGaWxlRXh0ZW5zaW9ucyk7CisgICAgYWNjZXB0VHlwZXMuYXBwZW5kUmFuZ2UoYWNjZXB0TUlN
RVR5cGVzLmJlZ2luKCksIGFjY2VwdE1JTUVUeXBlcy5lbmQoKSk7CisgICAgYWNjZXB0VHlwZXMu
YXBwZW5kUmFuZ2UoYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKSwgYWNjZXB0RmlsZUV4dGVu
c2lvbnMuZW5kKCkpOwogICAgIHJldHVybiBhY2NlcHRUeXBlczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVk
Nzc2YWRkOGExYzNjMTg3NTNiNjg5ZDY2NDk2MGQ1ZWIxYTk1YmIuLmNkY2M0OWRhMDk5NjViYTgz
N2NkNDk5ZWNhNTFkMGI2NWRjMGExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYgY2h1bmssIGJv
b2wgaW5jbHVkZVNlcGFyYXQKICAgICAgICAgICAgIG1fc2VwYXJhdG9ySW5kZXgrKzsKICAgICAg
ICAgICAgIGlmIChtX3NlcGFyYXRvckluZGV4ID09IG1fc2VwYXJhdG9yLnNpemUoKSkgewogICAg
ICAgICAgICAgICAgIGlmIChpbmNsdWRlU2VwYXJhdG9yKQotICAgICAgICAgICAgICAgICAgICBj
aHVuay5hcHBlbmQobV9zZXBhcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBjaHVuay5hcHBl
bmRSYW5nZShtX3NlcGFyYXRvci5iZWdpbigpLCBtX3NlcGFyYXRvci5lbmQoKSk7CiAgICAgICAg
ICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKaW5kZXggYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0
NmI3ZDhjZi4uNWIxNDA1YTM2MzBhNDk4MzI3MThhNmQ4NDRkNzZiMWMwNmJhZTY5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAt
OTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZl
Y3RvcjxTdHJpbmc+JiBzaXRlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0
b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKICAgICAgICAgZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMp
OworICAgICAgICBzaXRlcy5hcHBlbmRSYW5nZShlbmdpbmVTaXRlcy5iZWdpbigpLCBlbmdpbmVT
aXRlcy5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTJhNDc4OWM4OWE0Y2Fm
MDU0MzY3N2M4MzRjNDFlZDQyYWNhMWMyMy4uOTgwOWI3OGFjN2YwZmRjY2I1NWVmMjg3OGQ4YzI5
NzlkYmZhMzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgVGlsZWRC
YWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKICAgICB1bnNpZ25lZCBzaXplID0gZGly
dHlUaWxlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNpemU7ICsrbikg
ewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gcGFpbnRlZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+
dXBkYXRlQmFja0J1ZmZlcigpOwotICAgICAgICBwYWludGVkQXJlYS5hcHBlbmQocGFpbnRlZFJl
Y3RzKTsKKyAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kUmFuZ2UocGFpbnRlZFJlY3RzLmJlZ2lu
KCksIHBhaW50ZWRSZWN0cy5lbmQoKSk7CiAgICAgICAgIGRpcnR5VGlsZXNbbl0tPnN3YXBCYWNr
QnVmZmVyVG9Gcm9udCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZlMjdiMGMz
NGM4YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uM2U2YzVlYWZkMjJlNTYwNDhmMjgzODlkY2I0
NjljZWRlMmFmMTliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJl
YWNoZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5ZXJzID0g
bV9zdHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1hcnlMYXll
ckNoaWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJpbWFyeUxh
eWVyQ2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmltYXJ5TGF5
ZXJDaGlsZHJlbi5hcHBlbmRSYW5nZShjdXN0b21TdWJsYXllcnMtPmJlZ2luKCksIGN1c3RvbVN1
YmxheWVycy0+ZW5kKCkpOwogCiAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CiAgICAgICAg
IGlmIChtX3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZhZjQ2ZjdmNGFjZjg2MmMyOTY5MTkzMDU2
Zi4uMmZjOWY3NTkwOGRmNWVhNjYzNGE5N2U5YmY5NWY2YzdhY2Y3YTk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAg
c3RhdGljIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhib29sIGNhblNt
YXJ0Q29weU9yRGVsZXRlLCBib29sIHMKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKK3N0YXRpYyBWZWN0b3I8
U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
czsKICAgICAKQEAgLTEwNiw3ICsxMDYsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+
IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgCiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1RJRkZQYm9hcmRUeXBlKSk7Ci0gICAg
dHlwZXMuYXBwZW5kKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CisgICAgZm9yIChjb25zdCBTdHJp
bmcmIHR5cGU6IHdyaXRhYmxlVHlwZXNGb3JVUkwoKSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKHR5
cGUpOwogICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNSVEZEUGJvYXJkVHlwZSkpOwogICAgIHJl
dHVybiB0eXBlczsKIH0KQEAgLTExNCw3ICsxMTUsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxT
dHJpbmc+IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gd3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICB0eXBlcy5hcHBlbmQoY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkpOworICAgIGZv
ciAoY29uc3QgU3RyaW5nJiB0eXBlOiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSkKKyAg
ICAgICAgdHlwZXMuYXBwZW5kKHR5cGUpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3
LDcgKzE4OSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0
YTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRU
eXBlcywgY2xpZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0
eXBlcy5hcHBlbmRSYW5nZShjbGllbnRUeXBlcy5iZWdpbigpLCBjbGllbnRUeXBlcy5lbmQoKSk7
CiAKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVu
dCgpLT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCA1Njdi
ZDYwYjk5NzQ5MjcxNDNiZTJiZGEyMjAzNzhjZjY5NTdlNjkzLi45NjcwM2NkYTUxNDcwNTkxOGJj
YTNhN2E0YTY0NjhiNDFiNzhjNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgVmVjdG9y
PGNoYXI+IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVCb3VuZGFyeVN0cmluZygpCiAg
ICAgICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChhbHBoYU51bWVyaWNFbmNvZGluZ01hcFtyYW5kb21u
ZXNzICYgMHgzRl0pOwogICAgIH0KIAotICAgIGJvdW5kYXJ5LmFwcGVuZChyYW5kb21CeXRlcyk7
CisgICAgYm91bmRhcnkuYXBwZW5kUmFuZ2UocmFuZG9tQnl0ZXMuYmVnaW4oKSwgcmFuZG9tQnl0
ZXMuZW5kKCkpOwogICAgIGJvdW5kYXJ5LmFwcGVuZCgwKTsgLy8gQWRkIGEgMCBhdCB0aGUgZW5k
IHNvIHdlIGNhbiB1c2UgdGhpcyBhcyBhIEMtc3R5bGUgc3RyaW5nLgogICAgIHJldHVybiBib3Vu
ZGFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXgg
NGQwZmZiZWMzZjEwZGUyODQ5NmY4NmQwMjEyY2UzMTA4MGM4NzRhYi4uMTQyOWNhZDFlNTk3NzJl
NDY5YTM3YzIwMzI2ZDY0YmFhYjgxYjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5E
YXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBt
b3pQYXRoczsKICAgICBTdHJpbmcgbW96UGF0aChnZXRlbnYoIk1PWl9QTFVHSU5fUEFUSCIpKTsK
ICAgICBtb3pQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZh
bHNlLCBtb3pQYXRocyk7Ci0gICAgcGF0aHMuYXBwZW5kKG1velBhdGhzKTsKKyAgICBwYXRocy5h
cHBlbmRSYW5nZShtb3pQYXRocy5iZWdpbigpLCBtb3pQYXRocy5lbmQoKSk7CiAjZWxpZiBkZWZp
bmVkKFhQX01BQ09TWCkKICAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0b3J5
UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRoLmFwcGVuZChTdHJpbmcoIi9MaWJyYXJ5L0ludGVy
bmV0IFBsdWctSW5zIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA3MDJjNGE3YTc0NGZhZjEzOTZiNTNjNDVmMDg3MDM5
YjhiNmUxY2E2Li5lNmMxYzgyZWNlNTQ5OWFiNmVhYjkwM2E4MjViYTQ4Yjk3YTM1N2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlS
dW5zRm9yU2VnbWVudChJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLAogICAgICAgICAv
LyBJZiB3ZSBlbmNvdW50ZXJlZCBhbnkgbmVzdGVkIGlzb2xhdGUgcnVucywganVzdCBtb3ZlIHRo
ZW0KICAgICAgICAgLy8gdG8gdGhlIHRvcCByZXNvbHZlcidzIGxpc3QgZm9yIGxhdGVyIHByb2Nl
c3NpbmcuCiAgICAgICAgIGlmICghaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZChp
c29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpKTsKKyAgICAgICAgICAgIHRvcFJlc29sdmVy
Lmlzb2xhdGVkUnVucygpLmFwcGVuZFJhbmdlKGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5z
KCkuYmVnaW4oKSwgaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5lbmQoKSk7CiAgICAg
ICAgICAgICBpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5MTFjM2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJj
MjcuLjY5NmY5ODNmNDQ1OWRlZGVmMjFjNDE1MzM3ODQ3NDNhNTE3NGU5YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0x
MzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5l
cigpCiAgICAgewotICAgICAgICBtX292ZXJsYXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkg
LSAyXS5hcHBlbmQobV9vdmVybGFwU3RhY2subGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3Rh
Y2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kUmFuZ2UobV9vdmVybGFwU3RhY2su
bGFzdCgpLmJlZ2luKCksIG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5lbmQoKSk7CiAgICAgICAgIG1f
b3ZlcmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggM2Q1MTI5M2QxMmMyYzg4ZTMw
YjgzMGVhZmY4NmFhNzc5YmI4ZTkxYS4uZjViYjE3Y2ZlMjUyZTdmMjcwYWVjMWMwOWRjYTk3NGUz
ZWE0MzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpz
cGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIg
PSBtX2dyaWRbcm93XS5yb3c7CiAgICAgICAgIHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3Qo
KSk7CiAgICAgICAgIGlmIChyW3Bvc10uaGFzQ2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3Mg
KyAxXS5jZWxscy5hcHBlbmQocltwb3NdLmNlbGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0u
Y2VsbHMuYXBwZW5kUmFuZ2Uocltwb3NdLmNlbGxzLmJlZ2luKCksIHJbcG9zXS5jZWxscy5lbmQo
KSk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNl
bGwoKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxs
LT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNvbFNwYW4gPyAxdSA6IDApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2NTkxZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQzODQ0
Mi4uZWJjZmFjYTlkNzNlNDM1ZTRlODE4ODM2YjY2N2U1YjMxN2E1YmFhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBS
ZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0gY3VycmVudExheWVyLT5nZXQoY2hhcmFjdGVyKTsK
ICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5cGhzKTsKKyAgICAgICAgICAgIGdseXBocy5hcHBl
bmRSYW5nZShub2RlLT5nbHlwaHMuYmVnaW4oKSwgbm9kZS0+Z2x5cGhzLmVuZCgpKTsKICAgICAg
ICAgICAgIGN1cnJlbnRMYXllciA9ICZub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRleHRJ
dGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMzOGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAwYzM1
OC4uMTA2ZTg1MDIyYzI1OTE2MmVlNjVhMTU4NmIyYWZiZWJlZWM5NjVjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBp
biBpdCBhcmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBt
X25vZGVzLmFwcGVuZChub2RlKTsgfQogICAgICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0
cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2b2lk
IGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVTZXQu
bV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVT
ZXQpIHsgbV9ub2Rlcy5hcHBlbmRSYW5nZShub2RlU2V0Lm1fbm9kZXMuYmVnaW4oKSwgbm9kZVNl
dC5tX25vZGVzLmVuZCgpKTsgfQogCiAgICAgICAgICAgICAvLyBSZXR1cm5zIHRoZSBzZXQncyBm
aXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVyLCBvciAwIGlmIHRoZSBzZXQgaXMgZW1wdHkuCiAg
ICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2ZDYwYTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjdkOGE1
YzljM2YwYjM4Y2Y3YzM5YjYxOWE1ZTcxN2MwNjhjMzE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmNwcApAQCAtNTUsOCArNTUsMTAgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBW
ZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gc2FuZGJveEV4dGVuc2lvbnMgPSBuZXdT
YW5kYm94RXh0ZW5zaW9uczsKICAgICBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IGRh
dGEtPml0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0
YUl0ZW06OkJsb2IpCi0gICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9zYW5k
Ym94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKSk7CisgICAgICAgIGlmIChp
dGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRlbTo6QmxvYikgeworICAgICAgICAgICAgYXV0byBl
eHRlbnNpb25zID0gbV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygp
KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoZXh0ZW5zaW9ucy5iZWdpbigp
LCBleHRlbnNpb25zLmVuZCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGRhdGEpOwpAQCAtMTA3LDcgKzEwOSw3IEBAIHZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5l
Y3Rpb24pOwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gTmV0
d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsKQorVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAogewog
ICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuaAppbmRleCA1MmQyZGY5YzE5ODkyOTNhMTAzNjViOTQ4NjQ1MWExYWQ4
Njk3MWE1Li42N2QwY2NmZWNlZjA5OGUwNTM2ZDYzNjU3OGFhNDJmODkxMjBiZmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJikg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgfk5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRl
eCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBhNWE3NTZkYTZkYTAyYWY1Y2I1Li4wMmE3MDI4ZWQyYzZj
YzliM2RlMzJlOTVjNDU4NjUyZDNkMzFkNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNj
aGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9
IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChlbGVt
ZW50c1tpXS5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYikgewogICAgICAg
ICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4
dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9u
cyhlbGVtZW50c1tpXS5tX3VybCk7Ci0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRi
b3hFeHRlbnNpb25zLmFwcGVuZChibG9iRWxlbWVudEV4dGVuc2lvbnMpOworICAgICAgICAgICAg
ICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmRSYW5nZShibG9iRWxlbWVu
dEV4dGVuc2lvbnMuYmVnaW4oKSwgYmxvYkVsZW1lbnRFeHRlbnNpb25zLmVuZCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIy
ZWQwNTUzZWI4NDkuLmJmZWFlMzE0OTM0ZmQxOWU5NWY1Y2UxZGU3N2U2NzhlNDUxODg5OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAt
MTkwLDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0
Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3Nh
Z2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1Jl
cGx5LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFjayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3Bh
dGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZFJhbmdlKG1lc3NhZ2VzVG9QdXRCYWNr
LmJlZ2luKCksIG1lc3NhZ2VzVG9QdXRCYWNrLmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3Jl
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbklu
Zm9TdG9yZVVuaXguY3BwCmluZGV4IGQ0YzllYzJjNWYyZTUyZmYwYWNhNDU5YmU3NDI2YzMxYTlm
YTNlNGMuLjQ3MzMyZjBmOTRjNWFhZDI5ZjdiOTRiYWIxNGJjOWZhOWQ1MmUwMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3Jl
VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5JbmZvU3RvcmVVbml4LmNwcApAQCAtNzIsNyArNzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVn
aW5JbmZvU3RvcmU6OnBsdWdpbnNEaXJlY3RvcmllcygpCiAgICAgaWYgKCFtb3ppbGxhUGF0aHMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogICAgICAgICBtb3pp
bGxhUGF0aHMuc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2Us
IHBhdGhzKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChwYXRocyk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmRSYW5nZShwYXRocy5iZWdpbigpLCBwYXRocy5lbmQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzMTJiOWQ3MDIyMzliYjllMTc1NTFhYjNjZGMzNzM5MjU3NzlmZGExLi42NTNlMjYw
NDE4Y2EzNjIxNzNhZTNkYjliODI3YWM4MzYwNDIzZjZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDUtMDIg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
dGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVu
ZFJhbmdlIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBzdGFsZSBzY3JpcHQgZmlsZS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggMzUzZWE4ZDY3YzkzZDk2OTYzZDFhYWI0ODVhMmRhZWE0ZGZlNjUwNy4uMmI2MjdiY2NmOWVh
NDE3NTIwMmQ2Zjc2ZGQ4NWIyZjEyYjVjNDUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE2Miw3ICsxNjIs
NyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0
cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVl
QnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1
ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZl
ci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7CiAK
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCmluZGV4IDhhOTU1MWM4NWZhOGE4N2JkZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjk1Y2Zh
ZThjZjQ3M2JmNDI3ODVjNDIxYTBmOTJmZWYyMDU4NTljODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1N0
cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUs
IE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxl
bmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0g
ICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVuZFJhbmdlKHZh
bHVlQnVmZmVyLmJlZ2luKCksIHZhbHVlQnVmZmVyLmVuZCgpKTsKIAogICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200377</attachid>
            <date>2013-05-02 17:28:51 -0700</date>
            <delta_ts>2013-05-03 09:37:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130502172803.patch</filename>
            <type>text/plain</type>
            <size>49139</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uY2MxN2M1MmJmNjE3NzBjMjc4MTI2MGVmN2M5MDRmNGJiZDc1ZjU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
aW5kZXggNzI0MDU1MmIxNmQzYzM4MmY1ZDBjZDA0MzExYTIzNmJiYjk5Y2IxYy4uZTI3OGZiNzIx
NWE3MDQ3OWU1MWRmOGEyM2QwNGFjYzRlZGRlYjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE3MCw2ICsx
NzAsMTEgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5kZXhOYW1lc0tleVR5cGVCeXRl
ID0gMjAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSA9IDI1NTsKIAorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxjaGFyPiYg
ZGVzdCwgY29uc3QgVmVjdG9yPGNoYXI+JiBzcmMpCit7CisgICAgZGVzdC5hcHBlbmRSYW5nZShz
cmMuYmVnaW4oKSwgc3JjLmVuZCgpKTsKK30KKwogVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5z
aWduZWQgY2hhciBjKQogewogICAgIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT4gdjsKQEAgLTMyNiw3ICszMzEsNyBAQCBTdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IGVuY29kZVZh
ckludChzLmxlbmd0aCgpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZyhzKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nKHMpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC00MTksNyArNDI0LDcgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXks
IFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElE
QktleTo6SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktl
eU51bGxUeXBlQnl0ZSkpOworICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlQnl0ZShJ
REJLZXlOdWxsVHlwZUJ5dGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpB
cnJheVR5cGU6IHsKICAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5
cGVCeXRlKSk7CkBAIC00NDEsOCArNDQ2LDggQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURC
S2V5JiBrZXksIFZlY3RvcjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlvdXNT
aXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6
Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsK
LSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOworICAgICAg
ICBhcHBlbmRWZWN0b3IoaW5mbywgZW5jb2RlQnl0ZShJREJLZXlOdW1iZXJUeXBlQnl0ZSkpOwor
ICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlRG91YmxlKGtleS5udW1iZXIoKSkpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgLSBwcmV2aW91
c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTM1LDIxICsxMTQwLDIx
IEBAIEtleVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+
IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1h
VmVyc2lvblR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShTY2hl
bWFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4g
TWF4RGF0YWJhc2VJZEtleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5
UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShNYXhEYXRh
YmFzZUlkVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE1heERh
dGFiYXNlSWRUeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBE
YXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5UHJl
Zml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhVmVyc2lv
blR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTg1LDggQEAg
Y29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0
LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5
OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFi
YXNlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFi
YXNlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChkYXRhYmFz
ZUlkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTIyNyw5ICsxMjMyLDkgQEAgY29uc3Qg
Y2hhciogRGF0YWJhc2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGxpbWl0LCBEYXRhYmEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBw
ZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVu
Y29kZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0IGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
U3RyaW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBA
IC0xMjU1LDcgKzEyNjAsNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlIG1ldGFEYQogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4g
cmV0OwogfQogCkBAIC0xMjk0LDkgKzEyOTksOSBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAog
ewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJl
dCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3Rv
cmVNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0
U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAg
ICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0
ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICBy
ZXR1cm4gcmV0OwogfQogCkBAIC0xMzY5LDEwICsxMzc0LDEwIEBAIFZlY3RvcjxjaGFyPiBJbmRl
eE1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJ
bmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmpl
Y3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rv
cihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVC
eXRlKG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQz
Nyw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVj
dG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBh
cHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJldHVy
biByZXQ7CiB9CiAKQEAgLTE0ODksOSArMTQ5NCw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleEZyZWVM
aXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4g
cmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleEZy
ZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9y
ZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOworICAgIGFwcGVu
ZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRW
ZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE1NDUsOCArMTU1MCw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4
LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlw
ZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3Rv
cmVOYW1lKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5h
bWVzVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKG9iamVjdFN0b3JlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1ODgsOSAr
MTU5Myw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleE5hbWVzS2V5OjplbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvCiB7CiAgICAgS2V5UHJlZml4IHByZWZp
eChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwot
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlwZUJ5dGUpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQs
IGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE2MjAsNyArMTYyNSw3IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsK
KyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVkVXNlcktleSk7CiAKICAgICByZXR1cm4gcmV0
OwogfQpAQCAtMTY2Miw3ICsxNjY3LDcgQEAgVmVjdG9yPGNoYXI+IEV4aXN0c0VudHJ5S2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGMKIHsKICAg
ICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZEtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IApAQCAtMTczMyw5ICsxNzM4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2Rl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQKIHsKICAgICBL
ZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIp
KTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5S2V5KTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVkVXNlcktleSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50
KHNlcXVlbmNlTnVtYmVyKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFByaW1hcnlL
ZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcyNjZlYjc5NGIwZThlZDBiZjUxNmUz
Yjc1MmY2YTc4MmNiYzYyLi42M2U1ZWZjMzQ1MTZjMzdlMTFiNGZjZjA5NThiNDg0MTg2OGIxOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKICAgICAv
LyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlv
biBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAgICBkbyB7CiAgICAgICAgIGRlbGV0
ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01h
cmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24u
ZW5kKCkpOwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9
IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1
cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBp
ZiAobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1
bGVkKSB7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRl
bGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uZW5kKCkpOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLmM4NmE4MzUwYmM4MDQ3Zjk0NTY4YTY3OGE1NTIy
ODYzY2JmZTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRSYW5n
ZShyb3ctPmNoaWxkcmVuKCkuYmVnaW4oKSwgcm93LT5jaGlsZHJlbigpLmVuZCgpKTsKIAogICAg
IGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFm
YWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3OTYwYjYxLi5lMzk0YWZkZGI1MDg3ODA3ZTg5
ZWQwODlhZWFkYmFiMmY3ODdmMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAg
ICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFuZ2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCks
IHJvdy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93
cy5hZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY3LDEwICs0NjcsOCBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJgogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBp
bnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwg
bnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJv
d0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFwcGVu
ZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJv
d3M7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRSYW5nZShtX3Jvd3Nbcm93XS0+Y2hpbGRy
ZW4oKS5iZWdpbigpLCBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKS5lbmQoKSk7CiB9CiAgICAgCiB1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZUZlYXR1cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2
ZTAuLjhiNDU3YjQzZGNkMjBmMTgxNjdiZTcxMGZkM2U2ZDJjNTY3N2I5ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIGVuZCA9IG90aGVyLmF0dHJz
SW5SdWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBw
ZW5kKG90aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBl
bmQob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisgICAgc2libGluZ1J1bGVzLmFwcGVu
ZFJhbmdlKG90aGVyLnNpYmxpbmdSdWxlcy5iZWdpbigpLCBvdGhlci5zaWJsaW5nUnVsZXMuZW5k
KCkpOworICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kUmFuZ2Uob3RoZXIudW5jb21t
b25BdHRyaWJ1dGVSdWxlcy5iZWdpbigpLCBvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmVu
ZCgpKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3Ro
ZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdXNlc0Jl
Zm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjk1Mjc5M2U3ZTIyYWE1ZWEwMzY2Yzg1ZDgy
ZTc0YTQ0OWE2NGUyYy4uNTkwNDIwZDE0YjFmMDdmYzM3ZDMwZTZlZGNhNjA5NTM1ZWQ4ZTUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3ICsxODI3LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwogICAgIE1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3Bl
cnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKKyAgICBjYWNoZUl0
ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kUmFuZ2UobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3Bl
cnRpZXMuYmVnaW4oKSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuZW5kKCkpOwogICAg
IGNhY2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5
IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNo
ZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVy
IHVzZWQgYXMtaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMwMWM5MjI0YWIwMTgwY2VmY2I5
M2FhYTYxNy4uZWI5NDhkOTg2YWU4ZmM5YjljZDg3Yzc4OWFlMWMwODFjYWQzOThlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cApAQCAtNDQxLDcgKzQ0MSw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNo
ZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsCiAgICAgSFRNTElG
cmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1sZXNzUGFy
ZW50SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNoZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCkt
PnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworCisg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cyA9IHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29s
bGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOworICAgIHNoZWV0cy5hcHBlbmRS
YW5nZShhY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5iZWdpbigpLCBhY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5lbmQoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBk
YXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQpAQCAtNDYyLDggKzQ2
NCw4IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBl
bmQoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0
cy5hcHBlbmQoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBhY3RpdmVDU1NTdHls
ZVNoZWV0cy5hcHBlbmRSYW5nZShpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwg
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKKyAgICBhY3RpdmVDU1NTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwgZG9j
dW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5
bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3Vt
ZW50KTsKICAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVl
dHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNmQ4Y2Q2MmQ3
MTI5ZDgyMmU2OTJhNTkzZDUzNDcyN2JhOGQ3MTc5ZS4uYjA3NTA2ZmYxMGEwYTNmZmI4MzQ3NTk0
ZGNhNDBhZDdjMmQ2OThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xOTI3LDcgKzE5MjcsNyBA
QCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1
YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0
ZVF1YWRzKGVsZW1lbnRRdWFkcyk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5h
ZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShlbGVt
ZW50UXVhZHMsIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRz
LmFwcGVuZChlbGVtZW50UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFJhbmdl
KGVsZW1lbnRRdWFkcy5iZWdpbigpLCBlbGVtZW50UXVhZHMuZW5kKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0b1RleHQobm9kZSktPnJlbmRlcmVyKCkpIHsK
QEAgLTE5MzksNyArMTkzOSw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVuZGVyVGV4
dC0+YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5hZGp1c3RGbG9hdFF1YWRzRm9y
U2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSh0ZXh0UXVhZHMsIHJlbmRlclRleHQp
OwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHRleHRRdWFkcyk7CisgICAgICAgICAg
ICAgICAgcXVhZHMuYXBwZW5kUmFuZ2UodGV4dFF1YWRzLmJlZ2luKCksIHRleHRRdWFkcy5lbmQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDljYzI4NzQ0MTgxMDM5MDk4MTE4
MzQzOTI4NDUzNGEzMjVkMmI2My4uNzU4OTNhNTUyZjI4MGFmOGZjMWUwZDYwOGUwNmY0YTU2ZTRh
ZjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cApAQCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNr
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5nCiAgICAgICAgIGlm
IChyZXN1bHRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdHMuc3dhcChzcGVsbGluZ1Jl
c3VsdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNwZWxsaW5n
UmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kUmFuZ2Uoc3BlbGxpbmdSZXN1bHQu
YmVnaW4oKSwgc3BlbGxpbmdSZXN1bHQuZW5kKCkpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3ZmI1OWJmMzBmOWE1
ODQ3YjQ1YjNjNGZkMzBiNzAxLi43NGJjOTdkOTQyZWRiMjk1NDJhMDQ0YzcwMTMyZWZkOTY1ZjAz
MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNTEwLDggKzUx
MCwxMCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdAogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0
dXJuOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKICAgICBmb3JtU3RhdGVzRnJvbVN0YXRl
VmVjdG9yKHN0YXRlVmVjdG9yLCBtYXApOwotICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAg
ICAgICAgdG9SZXR1cm4uYXBwZW5kKGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygp
KTsKKyAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5i
ZWdpbigpLCBlbmQgPSBtYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZWZlcmVuY2VkRmlsZVBhdGhzID0gaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZFJhbmdlKHJlZmVyZW5jZWRGaWxl
UGF0aHMuYmVnaW4oKSwgcmVmZXJlbmNlZEZpbGVQYXRocy5lbmQoKSk7CisgICAgfQogICAgIHJl
dHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTliYzk1MGNhZDNiZGRhODky
YTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uOTkyZTRiNzA4ZGQ5MzQ3MTViMWU4ZDI4Mzk4ZGFiNzBl
MWE2Y2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gp
CiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gY29waWVzIHRo
ZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAg
ICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5l
RGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2gu
YXBwZW5kUmFuZ2UoZGFzaC5iZWdpbigpLCBkYXNoLmVuZCgpKTsKIAogICAgIGFwcGx5TGluZURh
c2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKaW5kZXggZjZmOWEyOGIxNGFhNzE3NDIyYmVkMTM4ODMy
MjllMWEyNjBlMzAwMC4uNzg1NzQzM2I2ZDZkOWNhODAxMTU5OTI3ZWQ4OWRjNzlmNjE5Yzc0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFj
a0l0ZQogICAgIGlmIChjYW5kaWRhdGVzLnNpemUoKSA8IGtOb2Foc0Fya0NhcGFjaXR5KQogICAg
ICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgcm9vbSBmb3IgdGhlIG5ldyBlbGVtZW50IGluIHRoZSBh
cmsuIFRoZXJlJ3Mgbm8gbmVlZCB0byBjb3B5IG91dCB0aGUgcmVtYWluaW5nQ2FuZGlkYXRlcy4K
IAotICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZXMpOworICAgIHJlbWFp
bmluZ0NhbmRpZGF0ZXMuYXBwZW5kUmFuZ2UoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVz
LmVuZCgpKTsKIH0KIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Fo
c0Fya0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAppbmRleCA1NDI0YmQxNDZjMGFhYmIyYjY5MGE5ZWFhYjAyMjlmOTdj
MDhiMTIzLi5mOTQ4Zjk2YWQ0MWIxNmY0NjJiYzA2YzM3YjJjM2E5MWI0NTFhOTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CiAKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5l
bmQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQpAQCAtMzk4LDcgKzM5
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxM
Q2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBD
aGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVu
ZCgpKTsKICAgICB9CiAKICAgICAvKiBDb21tZW50IFRva2VucyAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5
MzFjMDZlNDg5NDcuLmZhN2FmM2Q2ZWE3YjBmN2MwNzliMTMwNDNjNWRkMTA0OTllZjRjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTk5LDcgKzk5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAz
Mj4mIGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNo
YXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAg
ICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5k
KCkpOwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5FbXB0eVN0YXJ0VGFnKCkKQEAgLTE0OSw3ICsx
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcp
OwogICAgICAgICBpZiAoIW1fY2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNz
ZXMuYXBwZW5kKCcgJyk7Ci0gICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVy
KTsKKyAgICAgICAgbV9jbGFzc2VzLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigp
LCBtX2N1cnJlbnRCdWZmZXIuZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIo
KTsKICAgICB9CiAgICAgCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1fYW5ub3RhdGlv
bi5jbGVhcigpOwotICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7
CisgICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4o
KSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlM
aXN0LmNwcAppbmRleCAwYThjYzZhYjk5OWYzY2QxZTZiMWNmYWUwYWViMjNjZDhhZTM2OTQ3Li45
Nzg1NTk3Mjg2ZmZmZmU2MGY5NGI0OGQ5YjM4ZDNjNDQ3ZDYzNWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lk
IFBlcmZvcm1hbmNlRW50cnlMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxQZXJmb3JtYW5jZUVudHJ5
PiBlbnRyeSkKIAogdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5kQWxsKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiYgZW50cmllcykKIHsKLSAgICBtX2VudHJp
ZXMuYXBwZW5kKGVudHJpZXMpOworICAgIG1fZW50cmllcy5hcHBlbmRSYW5nZShlbnRyaWVzLmJl
Z2luKCksIGVudHJpZXMuZW5kKCkpOwogfQogCiB2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0Ojpz
b3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCAwZjQ1N2Qx
MzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUwMmRlLi5kMjYxNGI4NzAyNGJmNDI2YTk0Zjg0
MThkMTU3YTZlMmNjMGVhOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5n
czo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdFR5cGVz
OwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBhY2l0eShhY2NlcHRNSU1FVHlwZXMuc2l6ZSgp
ICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQo
YWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0RmlsZUV4dGVu
c2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFJhbmdlKGFjY2VwdE1JTUVUeXBlcy5iZWdp
bigpLCBhY2NlcHRNSU1FVHlwZXMuZW5kKCkpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFJhbmdl
KGFjY2VwdEZpbGVFeHRlbnNpb25zLmJlZ2luKCksIGFjY2VwdEZpbGVFeHRlbnNpb25zLmVuZCgp
KTsKICAgICByZXR1cm4gYWNjZXB0VHlwZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCA1ZDc3NmFkZDhhMWMz
YzE4NzUzYjY4OWQ2NjQ5NjBkNWViMWE5NWJiLi5jZGNjNDlkYTA5OTY1YmE4MzdjZDQ5OWVjYTUx
ZDBiNjVkYzBhMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVT
ZXBhcmF0CiAgICAgICAgICAgICBtX3NlcGFyYXRvckluZGV4Kys7CiAgICAgICAgICAgICBpZiAo
bV9zZXBhcmF0b3JJbmRleCA9PSBtX3NlcGFyYXRvci5zaXplKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaW5jbHVkZVNlcGFyYXRvcikKLSAgICAgICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5k
KG1fc2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kUmFuZ2UobV9z
ZXBhcmF0b3IuYmVnaW4oKSwgbV9zZXBhcmF0b3IuZW5kKCkpOwogICAgICAgICAgICAgICAgIG1f
c2VwYXJhdG9ySW5kZXggPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCmluZGV4IGM1MjM4NTgwYjkxOWZkYmE5NWQ1NTI0Y2VhZWI1YjE3NDZiN2Q4Y2YuLjVi
MTQwNWEzNjMwYTQ5ODMyNzE4YTZkODQ0ZDc2YjFjMDZiYWU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTkwMiw3ICs5MDIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5n
PiYgc2l0ZXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZW5naW5lU2l0ZXM7CiAgICAgICAgIGVuZ2luZXNbaV0tPmdldFNpdGVzSW5NZWRpYUNhY2hlKGVu
Z2luZVNpdGVzKTsKLSAgICAgICAgc2l0ZXMuYXBwZW5kKGVuZ2luZVNpdGVzKTsKKyAgICAgICAg
c2l0ZXMuYXBwZW5kUmFuZ2UoZW5naW5lU2l0ZXMuYmVnaW4oKSwgZW5naW5lU2l0ZXMuZW5kKCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEyYTQ3ODljODlhNGNhZjA1NDM2NzdjODM0
YzQxZWQ0MmFjYTFjMjMuLjk4MDliNzhhYzdmMGZkY2NiNTVlZjI4NzhkOGMyOTc5ZGJmYTMwM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
Ojp1cGRhdGVUaWxlQnVmZmVycygpCiAgICAgdW5zaWduZWQgc2l6ZSA9IGRpcnR5VGlsZXMuc2l6
ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBzaXplOyArK24pIHsKICAgICAgICAg
VmVjdG9yPEludFJlY3Q+IHBhaW50ZWRSZWN0cyA9IGRpcnR5VGlsZXNbbl0tPnVwZGF0ZUJhY2tC
dWZmZXIoKTsKLSAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kKHBhaW50ZWRSZWN0cyk7CisgICAg
ICAgIHBhaW50ZWRBcmVhLmFwcGVuZFJhbmdlKHBhaW50ZWRSZWN0cy5iZWdpbigpLCBwYWludGVk
UmVjdHMuZW5kKCkpOwogICAgICAgICBkaXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJv
bnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGUwMjJmZTI3YjBjMzRjOGIwMTc3Yzlk
YWJjNzVhYjlmYjdjNmNmMjcuLjNlNmM1ZWFmZDIyZTU2MDQ4ZjI4Mzg5ZGNiNDY5Y2VkZTJhZjE5
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdChib29sIG1heExheWVyRGVwdGhSZWFjaGVkKQogICAg
IFBsYXRmb3JtQ0FMYXllckxpc3QmIGNoaWxkTGlzdEZvclN1YmxheWVycyA9IG1fc3RydWN0dXJh
bExheWVyID8gc3RydWN0dXJhbExheWVyQ2hpbGRyZW4gOiBwcmltYXJ5TGF5ZXJDaGlsZHJlbjsK
IAogICAgIGlmIChjdXN0b21TdWJsYXllcnMpCi0gICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVu
LmFwcGVuZCgqY3VzdG9tU3VibGF5ZXJzKTsKKyAgICAgICAgcHJpbWFyeUxheWVyQ2hpbGRyZW4u
YXBwZW5kUmFuZ2UoY3VzdG9tU3VibGF5ZXJzLT5iZWdpbigpLCBjdXN0b21TdWJsYXllcnMtPmVu
ZCgpKTsKIAogICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewogICAgICAgICBpZiAobV9yZXBs
aWNhTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDQ4ZDNlYmE1MWQ0ZDc2YWY0NmY3ZjRhY2Y4NjJjMjk2OTE5MzA1NmYuLjJmYzlmNzU5
MDhkZjVlYTY2MzRhOTdlOWJmOTVmNmM3YWNmN2E5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBzZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXMoYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZSwgYm9vbCBzCiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9y
PFN0cmluZz4gd3JpdGFibGVUeXBlc0ZvclVSTCgpCitzdGF0aWMgVmVjdG9yPFN0cmluZz4gd3Jp
dGFibGVUeXBlc0ZvclVSTCgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgCkBA
IC0xMDYsNyArMTA2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0
YWJsZVR5cGVzRm9ySW1hZ2UoKQogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIAogICAg
IHR5cGVzLmFwcGVuZChTdHJpbmcoTlNUSUZGUGJvYXJkVHlwZSkpOwotICAgIHR5cGVzLmFwcGVu
ZCh3cml0YWJsZVR5cGVzRm9yVVJMKCkpOworICAgIGZvciAoY29uc3QgU3RyaW5nJiB0eXBlOiB3
cml0YWJsZVR5cGVzRm9yVVJMKCkpCisgICAgICAgIHR5cGVzLmFwcGVuZCh0eXBlKTsKICAgICB0
eXBlcy5hcHBlbmQoU3RyaW5nKE5TUlRGRFBib2FyZFR5cGUpKTsKICAgICByZXR1cm4gdHlwZXM7
CiB9CkBAIC0xMTQsNyArMTE1LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVh
dGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxl
VHlwZXNGb3JJbWFnZSgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgdHlwZXMu
YXBwZW5kKGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpKTsKKyAgICBmb3IgKGNvbnN0IFN0
cmluZyYgdHlwZTogY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkpCisgICAgICAgIHR5cGVz
LmFwcGVuZCh0eXBlKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKQEAgLTE4Nyw3ICsxODksNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYgogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVz
OwogICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7CiAgICAgZnJh
bWUtPmVkaXRvcigpLT5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShm
cmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVu
dERhdGEpOwotICAgIHR5cGVzLmFwcGVuZChjbGllbnRUeXBlcyk7CisgICAgdHlwZXMuYXBwZW5k
UmFuZ2UoY2xpZW50VHlwZXMuYmVnaW4oKSwgY2xpZW50VHlwZXMuZW5kKCkpOwogCiAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywg
bV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0
U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKaW5kZXggNTY3YmQ2MGI5OTc0OTI3
MTQzYmUyYmRhMjIwMzc4Y2Y2OTU3ZTY5My4uOTY3MDNjZGE1MTQ3MDU5MThiY2EzYTdhNGE2NDY4
YjQxYjc4YzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGFCdWlsZGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFZlY3RvcjxjaGFyPiBGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcoKQogICAgICAgICByYW5k
b21CeXRlcy5hcHBlbmQoYWxwaGFOdW1lcmljRW5jb2RpbmdNYXBbcmFuZG9tbmVzcyAmIDB4M0Zd
KTsKICAgICB9CiAKLSAgICBib3VuZGFyeS5hcHBlbmQocmFuZG9tQnl0ZXMpOworICAgIGJvdW5k
YXJ5LmFwcGVuZFJhbmdlKHJhbmRvbUJ5dGVzLmJlZ2luKCksIHJhbmRvbUJ5dGVzLmVuZCgpKTsK
ICAgICBib3VuZGFyeS5hcHBlbmQoMCk7IC8vIEFkZCBhIDAgYXQgdGhlIGVuZCBzbyB3ZSBjYW4g
dXNlIHRoaXMgYXMgYSBDLXN0eWxlIHN0cmluZy4KICAgICByZXR1cm4gYm91bmRhcnk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDRkMGZmYmVjM2Yx
MGRlMjg0OTZmODZkMDIxMmNlMzEwODBjODc0YWIuLmZjZTA1OTU5YWQ3MTVkYTgzODc0YmY3NDE0
OTdmMzUzMDk4MTM3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCkBAIC00MjgsNyArNDI4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRl
ZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAgICAgVmVjdG9yPFN0cmluZz4gbW96UGF0aHM7CiAg
ICAgU3RyaW5nIG1velBhdGgoZ2V0ZW52KCJNT1pfUExVR0lOX1BBVEgiKSk7CiAgICAgbW96UGF0
aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgbW96UGF0
aHMpOwotICAgIHBhdGhzLmFwcGVuZChtb3pQYXRocyk7CisgICAgcGF0aHMuYXBwZW5kUmFuZ2Uo
bW96UGF0aHMuYmVnaW4oKSwgbW96UGF0aHMuZW5kKCkpOwogI2VsaWYgZGVmaW5lZChYUF9NQUNP
U1gpCiAgICAgU3RyaW5nIHVzZXJQbHVnaW5QYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKICAg
ICB1c2VyUGx1Z2luUGF0aC5hcHBlbmQoU3RyaW5nKCIvTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlu
cyIpKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6
ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBxdFBhdGhzOwog
ICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5jb25zdERh
dGEoKSk7CiAgICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVz
ICovIGZhbHNlLCBxdFBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQocXRQYXRocyk7CisgICAgcGF0
aHMuYXBwZW5kUmFuZ2UocXRQYXRocy5iZWdpbigpLCBxdFBhdGhzLmVuZCgpKTsKICNlbmRpZgog
CiAgICAgcmV0dXJuIHBhdGhzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA3MDJjNGE3YTc0NGZhZjEzOTZiNTNjNDVmMDg3
MDM5YjhiNmUxY2E2Li5lNmMxYzgyZWNlNTQ5OWFiNmVhYjkwM2E4MjViYTQ4Yjk3YTM1N2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJp
ZGlSdW5zRm9yU2VnbWVudChJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLAogICAgICAg
ICAvLyBJZiB3ZSBlbmNvdW50ZXJlZCBhbnkgbmVzdGVkIGlzb2xhdGUgcnVucywganVzdCBtb3Zl
IHRoZW0KICAgICAgICAgLy8gdG8gdGhlIHRvcCByZXNvbHZlcidzIGxpc3QgZm9yIGxhdGVyIHBy
b2Nlc3NpbmcuCiAgICAgICAgIGlmICghaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVu
ZChpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpKTsKKyAgICAgICAgICAgIHRvcFJlc29s
dmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZFJhbmdlKGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRS
dW5zKCkuYmVnaW4oKSwgaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5lbmQoKSk7CiAg
ICAgICAgICAgICBpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5MTFjM2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1
NjJjMjcuLjY5NmY5ODNmNDQ1OWRlZGVmMjFjNDE1MzM3ODQ3NDNhNTE3NGU5YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRh
aW5lcigpCiAgICAgewotICAgICAgICBtX292ZXJsYXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXpl
KCkgLSAyXS5hcHBlbmQobV9vdmVybGFwU3RhY2subGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFw
U3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kUmFuZ2UobV9vdmVybGFwU3Rh
Y2subGFzdCgpLmJlZ2luKCksIG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5lbmQoKSk7CiAgICAgICAg
IG1fb3ZlcmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggM2Q1MTI5M2QxMmMyYzg4
ZTMwYjgzMGVhZmY4NmFhNzc5YmI4ZTkxYS4uZjViYjE3Y2ZlMjUyZTdmMjcwYWVjMWMwOWRjYTk3
NGUzZWE0MzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
OjpzcGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cm
IHIgPSBtX2dyaWRbcm93XS5yb3c7CiAgICAgICAgIHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1
Y3QoKSk7CiAgICAgICAgIGlmIChyW3Bvc10uaGFzQ2VsbHMoKSkgewotICAgICAgICAgICAgcltw
b3MgKyAxXS5jZWxscy5hcHBlbmQocltwb3NdLmNlbGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsg
MV0uY2VsbHMuYXBwZW5kUmFuZ2Uocltwb3NdLmNlbGxzLmJlZ2luKCksIHJbcG9zXS5jZWxscy5l
bmQoKSk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFy
eUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsKTsKICAgICAgICAgICAgIEFTU0VSVChj
ZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNvbFNwYW4gPyAxdSA6IDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2NTkxZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQz
ODQ0Mi4uZWJjZmFjYTlkNzNlNDM1ZTRlODE4ODM2YjY2N2U1YjMxN2E1YmFhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0gY3VycmVudExheWVyLT5nZXQoY2hhcmFjdGVy
KTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5cGhzKTsKKyAgICAgICAgICAgIGdseXBocy5h
cHBlbmRSYW5nZShub2RlLT5nbHlwaHMuYmVnaW4oKSwgbm9kZS0+Z2x5cGhzLmVuZCgpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRMYXllciA9ICZub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRl
eHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMzOGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAw
YzM1OC4uMTA2ZTg1MDIyYzI1OTE2MmVlNjVhMTU4NmIyYWZiZWJlZWM5NjVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2Rl
cyBpbiBpdCBhcmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkg
eyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQogICAgICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2
b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVT
ZXQubV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5v
ZGVTZXQpIHsgbV9ub2Rlcy5hcHBlbmRSYW5nZShub2RlU2V0Lm1fbm9kZXMuYmVnaW4oKSwgbm9k
ZVNldC5tX25vZGVzLmVuZCgpKTsgfQogCiAgICAgICAgICAgICAvLyBSZXR1cm5zIHRoZSBzZXQn
cyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVyLCBvciAwIGlmIHRoZSBzZXQgaXMgZW1wdHku
CiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2ZDYwYTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjdk
OGE1YzljM2YwYjM4Y2Y3YzM5YjYxOWE1ZTcxN2MwNjhjMzE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtNTUsOCArNTUsMTAgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAg
ICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gc2FuZGJveEV4dGVuc2lvbnMgPSBu
ZXdTYW5kYm94RXh0ZW5zaW9uczsKICAgICBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9
IGRhdGEtPml0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6
ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9i
RGF0YUl0ZW06OkJsb2IpCi0gICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9z
YW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKSk7CisgICAgICAgIGlm
IChpdGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRlbTo6QmxvYikgeworICAgICAgICAgICAgYXV0
byBleHRlbnNpb25zID0gbV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoZXh0ZW5zaW9ucy5iZWdp
bigpLCBleHRlbnNpb25zLmVuZCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJsb2JSZWdp
c3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGRhdGEpOwpAQCAtMTA3LDcgKzEwOSw3IEBAIHZv
aWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNv
bm5lY3Rpb24pOwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4g
TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VS
TCYgdXJsKQorVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gTmV0d29ya0Jsb2JSZWdp
c3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAog
ewogICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05l
dHdvcmtCbG9iUmVnaXN0cnkuaAppbmRleCA1MmQyZGY5YzE5ODkyOTNhMTAzNjViOTQ4NjQ1MWEx
YWQ4Njk3MWE1Li42N2QwY2NmZWNlZjA5OGUwNTM2ZDYzNjU3OGFhNDJmODkxMjBiZmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05l
dHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNh
bmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJM
JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgfk5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcApp
bmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBhNWE3NTZkYTZkYTAyYWY1Y2I1Li4wMmE3MDI4ZWQy
YzZjYzliM2RlMzJlOTVjNDU4NjUyZDNkMzFkNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3Vu
dCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChl
bGVtZW50c1tpXS5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYikgewogICAg
ICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVu
dEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5z
aW9ucyhlbGVtZW50c1tpXS5tX3VybCk7Ci0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChibG9iRWxlbWVudEV4dGVuc2lvbnMpOworICAgICAgICAg
ICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmRSYW5nZShibG9iRWxl
bWVudEV4dGVuc2lvbnMuYmVnaW4oKSwgYmxvYkVsZW1lbnRFeHRlbnNpb25zLmVuZCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjVi
OGIyZWQwNTUzZWI4NDkuLmJmZWFlMzE0OTM0ZmQxOWU5NWY1Y2UxZGU3N2U2NzhlNDUxODg5OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApA
QCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlz
cGF0Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1l
c3NhZ2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9tdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3lu
Y1JlcGx5LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFjayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rp
c3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZFJhbmdlKG1lc3NhZ2VzVG9QdXRC
YWNrLmJlZ2luKCksIG1lc3NhZ2VzVG9QdXRCYWNrLmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
bkluZm9TdG9yZVVuaXguY3BwCmluZGV4IGQ0YzllYzJjNWYyZTUyZmYwYWNhNDU5YmU3NDI2YzMx
YTlmYTNlNGMuLjQ3MzMyZjBmOTRjNWFhZDI5ZjdiOTRiYWIxNGJjOWZhOWQ1MmUwMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5JbmZvU3RvcmVVbml4LmNwcApAQCAtNzIsNyArNzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bHVnaW5JbmZvU3RvcmU6OnBsdWdpbnNEaXJlY3RvcmllcygpCiAgICAgaWYgKCFtb3ppbGxhUGF0
aHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogICAgICAgICBt
b3ppbGxhUGF0aHMuc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFs
c2UsIHBhdGhzKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChwYXRocyk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmRSYW5nZShwYXRocy5iZWdpbigpLCBwYXRocy5lbmQoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAzMTJiOWQ3MDIyMzliYjllMTc1NTFhYjNjZGMzNzM5MjU3NzlmZGExLi42NTNl
MjYwNDE4Y2EzNjIxNzNhZTNkYjliODI3YWM4MzYwNDIzZjZmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDUt
MDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1v
dmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFw
cGVuZFJhbmdlIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmlidXRlQW5k
VmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBzdGFsZSBzY3JpcHQgZmlsZS4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0K
aW5kZXggMzUzZWE4ZDY3YzkzZDk2OTYzZDFhYWI0ODVhMmRhZWE0ZGZlNjUwNy4uMmI2MjdiY2Nm
OWVhNDE3NTIwMmQ2Zjc2ZGQ4NWIyZjEyYjVjNDUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE2Miw3ICsx
NjIsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShO
U1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZh
bHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1
ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1
ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7
CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCmluZGV4IDhhOTU1MWM4NWZhOGE4N2JkZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjk1
Y2ZhZThjZjQ3M2JmNDI3ODVjNDIxYTBmOTJmZWYyMDU4NTljODggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBK
U1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1
dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVl
IGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07
Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVuZFJhbmdl
KHZhbHVlQnVmZmVyLmJlZ2luKCksIHZhbHVlQnVmZmVyLmVuZCgpKTsKIAogICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200420</attachid>
            <date>2013-05-03 09:37:48 -0700</date>
            <delta_ts>2013-05-03 09:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130503093702.patch</filename>
            <type>text/plain</type>
            <size>49902</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uY2MxN2M1MmJmNjE3NzBjMjc4MTI2MGVmN2M5MDRmNGJiZDc1ZjU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
aW5kZXggNzI0MDU1MmIxNmQzYzM4MmY1ZDBjZDA0MzExYTIzNmJiYjk5Y2IxYy4uOTlhYzQzNzE0
YzA5ZGVkYzE3MGVhZDhjNmQ1ZmUxZDFjOTdhZjNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE3MCw2ICsx
NzAsMTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5kZXhOYW1lc0tleVR5cGVCeXRl
ID0gMjAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSA9IDI1NTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5Pgorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IGRlc3QsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc3JjKQoreworICAgIGRlc3QuYXBwZW5kUmFuZ2Uo
c3JjLmJlZ2luKCksIHNyYy5lbmQoKSk7Cit9CisKIFZlY3RvcjxjaGFyPiBlbmNvZGVCeXRlKHVu
c2lnbmVkIGNoYXIgYykKIHsKICAgICBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNp
emU+IHY7CkBAIC0zMjYsNyArMzMyLDcgQEAgU3RyaW5nIGRlY29kZVN0cmluZyhjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgoY29uc3QgU3RyaW5nJiBzKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBlbmNvZGVW
YXJJbnQocy5sZW5ndGgoKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmcocykpOworICAg
IGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IApAQCAtNDE5LDcgKzQyNSw3IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYga2V5
LCBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAgICAgY2FzZSBJ
REJLZXk6OkludmFsaWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJL
ZXlOdWxsVHlwZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZUJ5dGUo
SURCS2V5TnVsbFR5cGVCeXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6
QXJyYXlUeXBlOiB7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5QXJyYXlU
eXBlQnl0ZSkpOwpAQCAtNDQxLDggKzQ0Nyw4IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElE
QktleSYga2V5LCBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3Vz
U2l6ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBl
OgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7
Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKKyAgICAg
ICAgYXBwZW5kVmVjdG9yKGluZm8sIGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsK
KyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlv
dXNTaXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEzNSwyMSArMTE0MSwy
MSBAQCBLZXlQcmVmaXg6OlR5cGUgS2V5UHJlZml4Ojp0eXBlKCkgY29uc3QKIFZlY3RvcjxjaGFy
PiBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKFNjaGVt
YVZlcnNpb25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoU2No
ZW1hVmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogVmVjdG9yPGNoYXI+
IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoTWF4RGF0
YWJhc2VJZFR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShNYXhE
YXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4g
RGF0YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVBy
ZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNp
b25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoRGF0YVZlcnNp
b25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTExODAsOCArMTE4Niw4IEBA
IGNvbnN0IGNoYXIqIERhdGFiYXNlRnJlZUxpc3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIERhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VGcmVlTGlzdEtl
eTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0g
S2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRh
YmFzZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChkYXRh
YmFzZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVM
aXN0VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoZGF0YWJh
c2VJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIzMyw5IEBAIGNvbnN0
IGNoYXIqIERhdGFiYXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFw
cGVuZChlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3Ry
aW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCBlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgoZGF0YWJhc2VOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTI1NSw3ICsxMjYxLDcgQEAgVmVjdG9yPGNoYXI+IERhdGFiYXNlTWV0YURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSBtZXRhRGEKIHsKICAgICBLZXlQ
cmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXgu
ZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOworICAg
IGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KIApAQCAtMTI5NCw5ICsxMzAwLDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QK
IHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiBy
ZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0
b3JlTWV0YURhdGFUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7Cisg
ICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5
dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkp
OworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTM2OSwxMCArMTM3NSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5k
ZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9y
PGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
SW5kZXhNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2Jq
ZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgYXBwZW5kVmVjdG9y
KHJldCwgZW5jb2RlQnl0ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZlY3Rvcihy
ZXQsIGVuY29kZVZhckludChpbmRleElkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
Qnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDMyLDggKzE0
MzgsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtleVByZWZpeCBwcmVmaXgo
ZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7Ci0g
ICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZl
Y3RvcihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1
cm4gcmV0OwogfQogCkBAIC0xNDg5LDkgKzE0OTUsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVl
TGlzdEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhG
cmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3Rv
cmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBl
bmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIGFw
cGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5k
VmVjdG9yKHJldCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xNTQ1LDggKzE1NTEsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5
cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0
b3JlTmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVO
YW1lc1R5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChvYmplY3RTdG9yZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTg4LDkg
KzE1OTQsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0
LCBlbmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rvcihy
ZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwg
ZW5jb2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xNjIwLDcgKzE2MjYsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVEYXRhS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoS2V5UHJlZml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcikpOwogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFVzZXJLZXkpOwogCiAgICAgcmV0dXJuIHJl
dDsKIH0KQEAgLTE2NjIsNyArMTY2OCw3IEBAIFZlY3RvcjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjCiB7CiAg
ICAgS2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9y
PGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRLZXkp
OworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRLZXkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKQEAgLTE3MzMsOSArMTczOSw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29k
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50CiB7CiAgICAg
S2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAg
ICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlZFVzZXJLZXkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVy
KSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkUHJpbWFyeUtleSk7CisgICAgYXBwZW5kVmVjdG9y
KHJldCwgZW5jb2RlZFVzZXJLZXkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhcklu
dChzZXF1ZW5jZU51bWJlcikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRQcmltYXJ5
S2V5KTsKICAgICByZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMDQ3MjY2ZWI3OTRiMGU4ZWQwYmY1MTZl
M2I3NTJmNmE3ODJjYmM2Mi4uNjNlNWVmYzM0NTE2YzM3ZTExYjRmY2YwOTU4YjQ4NDE4NjhiMThk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigpCiAgICAg
Ly8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9keSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRp
b24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2ZXMuCiAgICAgZG8gewogICAgICAgICBkZWxl
dGVNYXJrZWROb2RlcygpOwotICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNN
YXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRSYW5nZSht
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uYmVnaW4oKSwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
LmVuZCgpKTsKICAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAgICAg
fSB3aGlsZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSk7CiAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgLy8gTWFrZSBz
dXJlIHRvIGNhbGwgZGVsZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4gICAgCiAgICAg
aWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVk
dWxlZCkgewotICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JE
ZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRSYW5nZShtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uYmVnaW4oKSwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmVuZCgpKTsK
ICAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAKICAgICAgICAgbV9p
c0RlbGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCA4NjY0YWM3NGZkOGFk
YmRkZjFlMDIxZDgzNjZmMTg1YzAxM2NlZWEzLi5jODZhODM1MGJjODA0N2Y5NDU2OGE2NzhhNTUy
Mjg2M2NiZmU1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
aGlsZCwgSGFzaFNlCiAgICAgaWYgKCFyb3ctPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAg
ICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CisgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFu
Z2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCksIHJvdy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAKICAg
ICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggNzFh
ZmFiNWQ4N2Q3OTYwYjYwMjVlNDc1ZjRlNDZhYzU5Nzk2MGI2MS4uZTM5NGFmZGRiNTA4NzgwN2U4
OWVkMDg5YWVhZGJhYjJmNzg3ZjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAg
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJhbmdlKHJvdy0+Y2hpbGRyZW4oKS5iZWdpbigp
LCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBhcHBlbmRlZFJv
d3MuYWRkKHJvdyk7CiAgICAgICAgIH0KQEAgLTQ2NywxMCArNDY3LDggQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmNlbGxzKEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAg
aW50IG51bVJvd3MgPSBtX3Jvd3Muc2l6ZSgpOwotICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8
IG51bVJvd3M7ICsrcm93KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBy
b3dDaGlsZHJlbiA9IG1fcm93c1tyb3ddLT5jaGlsZHJlbigpOwotICAgICAgICBjZWxscy5hcHBl
bmQocm93Q2hpbGRyZW4pOwotICAgIH0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1S
b3dzOyArK3JvdykKKyAgICAgICAgY2VsbHMuYXBwZW5kUmFuZ2UobV9yb3dzW3Jvd10tPmNoaWxk
cmVuKCkuYmVnaW4oKSwgbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCkuZW5kKCkpOwogfQogICAgIAog
dW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEw
NmUwLi44YjQ1N2I0M2RjZDIwZjE4MTY3YmU3MTBmZDNlNmQyYzU2NzdiOWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRy
c0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRyc0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQogICAgICAgICBhdHRyc0luUnVsZXMuYWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFw
cGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwotICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBl
bmRSYW5nZShvdGhlci5zaWJsaW5nUnVsZXMuYmVnaW4oKSwgb3RoZXIuc2libGluZ1J1bGVzLmVu
ZCgpKTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFJhbmdlKG90aGVyLnVuY29t
bW9uQXR0cmlidXRlUnVsZXMuYmVnaW4oKSwgb3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5l
bmQoKSk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90
aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IHVzZXNC
ZWZvcmVBZnRlclJ1bGVzIHx8IG90aGVyLnVzZXNCZWZvcmVBZnRlclJ1bGVzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY5NTI3OTNlN2UyMmFhNWVhMDM2NmM4NWQ4
MmU3NGE0NDlhNjRlMmMuLjU5MDQyMGQxNGIxZjA3ZmMzN2QzMGU2ZWRjYTYwOTUzNWVkOGU1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4MjcsNyArMTgyNyw3IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgY29uc3QKIAogICAgIEFTU0VSVChoYXNoKTsKICAgICBNYXRjaGVk
UHJvcGVydGllc0NhY2hlSXRlbSBjYWNoZUl0ZW07Ci0gICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9w
ZXJ0aWVzLmFwcGVuZChtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcyk7CisgICAgY2FjaGVJ
dGVtLm1hdGNoZWRQcm9wZXJ0aWVzLmFwcGVuZFJhbmdlKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9w
ZXJ0aWVzLmJlZ2luKCksIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmVuZCgpKTsKICAg
ICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFuZ2VzOwogICAgIC8vIE5vdGUgdGhh
dCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1h
eSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2Fj
aGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZl
ciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzljMTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNi
OTNhYWE2MTcuLmViOTQ4ZDk4NmFlOGZjOWI5Y2Q4N2M3ODlhZTFjMDgxY2FkMzk4ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAKQEAgLTQ0MSw3ICs0NDEsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVT
aGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJ
RnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LT5zZWFtbGVzc1Bh
cmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgp
LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKwor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHMgPSBzZWFtbGVzc1BhcmVudElGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENv
bGxlY3Rpb24oKS0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBzaGVldHMuYXBwZW5k
UmFuZ2UoYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYmVnaW4oKSwgYWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMuZW5kKCkpOwogfQogCiBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVw
ZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0
NjQsOCBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0
eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNo
ZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBw
ZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVl
dHMuYXBwZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5
bGVTaGVldHMuYXBwZW5kUmFuZ2UoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCks
IGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVT
aGVldHMuYXBwZW5kUmFuZ2UoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGRv
Y3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0
eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1
bWVudCk7CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hl
ZXRzLCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJk
NzEyOWQ4MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3OWUuLmIwNzUwNmZmMTBhMGEzZmZiODM0NzU5
NGRjYTQwYWQ3YzJkNjk4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcg
QEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcykgY29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1
dGVRdWFkcyhlbGVtZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+
YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxl
bWVudFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBxdWFk
cy5hcHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRSYW5n
ZShlbGVtZW50UXVhZHMuYmVnaW4oKSwgZWxlbWVudFF1YWRzLmVuZCgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7
CkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlclRl
eHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0Zv
clNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0
KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAg
ICAgICAgIHF1YWRzLmFwcGVuZFJhbmdlKHRleHRRdWFkcy5iZWdpbigpLCB0ZXh0UXVhZHMuZW5k
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDA5Y2MyODc0NDE4MTAzOTA5ODEx
ODM0MzkyODQ1MzRhMzI1ZDJiNjMuLjc1ODkzYTU1MmYyODBhZjhmYzFlMGQ2MDhlMDZmNGE1NmU0
YWYxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVj
a2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZwogICAgICAgICBp
ZiAocmVzdWx0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHRzLnN3YXAoc3BlbGxpbmdS
ZXN1bHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzcGVsbGlu
Z1Jlc3VsdCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZFJhbmdlKHNwZWxsaW5nUmVzdWx0
LmJlZ2luKCksIHNwZWxsaW5nUmVzdWx0LmVuZCgpKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggOGE4YWYwNWE5N2ZiNTliZjMwZjlh
NTg0N2I0NWIzYzRmZDMwYjcwMS4uNzRiYzk3ZDk0MmVkYjI5NTQyYTA0NGM3MDEzMmVmZDk2NWYw
MzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTUxMCw4ICs1
MTAsMTAgQEAgVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXQKICAgICBWZWN0b3I8U3RyaW5nPiB0b1Jl
dHVybjsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBtYXA7CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0
ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsKLSAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBtYXAuZW5kKCk7ICsraXQpCi0g
ICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
KSk7CisgICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAu
YmVnaW4oKSwgZW5kID0gbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gcmVmZXJlbmNlZEZpbGVQYXRocyA9IGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNl
ZEZpbGVQYXRocygpOworICAgICAgICB0b1JldHVybi5hcHBlbmRSYW5nZShyZWZlcmVuY2VkRmls
ZVBhdGhzLmJlZ2luKCksIHJlZmVyZW5jZWRGaWxlUGF0aHMuZW5kKCkpOworICAgIH0KICAgICBy
ZXR1cm4gdG9SZXR1cm47CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDE5YmM5NTBjYWQzYmRkYTg5
MmE0ZGRkNzA1MTE4MDkzZmE4ZTA3OGMuLjk5MmU0YjcwOGRkOTM0NzE1YjFlOGQyODM5OGRhYjcw
ZTFhNmNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRMaW5lRGFzaChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBkYXNo
KQogICAgIC8vIFNwZWMgcmVxdWlyZXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIGNvcGllcyB0
aGUgZGFzaCBsaXN0IHdoZW4gdGhlCiAgICAgLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGlzIG9kZAog
ICAgIGlmIChkYXNoLnNpemUoKSAlIDIpCi0gICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGlu
ZURhc2guYXBwZW5kKGRhc2gpOworICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNo
LmFwcGVuZFJhbmdlKGRhc2guYmVnaW4oKSwgZGFzaC5lbmQoKSk7CiAKICAgICBhcHBseUxpbmVE
YXNoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxG
b3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGY2ZjlhMjhiMTRhYTcxNzQyMmJlZDEzODgz
MjI5ZTFhMjYwZTMwMDAuLjc4NTc0MzNiNmQ2ZDljYTgwMTE1OTkyN2VkODlkYzc5ZjYxOWM3NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3Rh
Y2tJdGUKICAgICBpZiAoY2FuZGlkYXRlcy5zaXplKCkgPCBrTm9haHNBcmtDYXBhY2l0eSkKICAg
ICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIHJvb20gZm9yIHRoZSBuZXcgZWxlbWVudCBpbiB0aGUg
YXJrLiBUaGVyZSdzIG5vIG5lZWQgdG8gY29weSBvdXQgdGhlIHJlbWFpbmluZ0NhbmRpZGF0ZXMu
CiAKLSAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsKKyAgICByZW1h
aW5pbmdDYW5kaWRhdGVzLmFwcGVuZFJhbmdlKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlkYXRl
cy5lbmQoKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9h
aHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSogbmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNTQyNGJkMTQ2YzBhYWJiMmI2OTBhOWVhYWIwMjI5Zjk3
YzA4YjEyMy4uZjk0OGY5NmFkNDFiMTZmNDYyYmMwNmMzN2IyYzNhOTFiNDUxYTk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRl
cy5jbGVhcigpOwogCi0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7Cisg
ICAgICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMu
ZW5kKCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKQEAgLTM5OCw3ICsz
OTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8
TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
Q2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5l
bmQoKSk7CiAgICAgfQogCiAgICAgLyogQ29tbWVudCBUb2tlbnMgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZmODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYx
OTMxYzA2ZTQ4OTQ3Li5mYTdhZjNkNmVhN2IwZjdjMDc5YjEzMDQzYzVkZDEwNDk5ZWY0YzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCkBAIC05OSw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwg
MzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpD
aGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVu
ZCgpKTsKICAgICB9CiAKICAgICB2b2lkIGJlZ2luRW1wdHlTdGFydFRhZygpCkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlN0YXJ0VGFn
KTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9jbGFz
c2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBwZW5kKG1fY3VycmVudEJ1ZmZl
cik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4o
KSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRp
b24uY2xlYXIoKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIp
OworICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kUmFuZ2UobV9jdXJyZW50QnVmZmVyLmJlZ2lu
KCksIG1fY3VycmVudEJ1ZmZlci5lbmQoKSk7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlci5jbGVh
cigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5
TGlzdC5jcHAKaW5kZXggMGE4Y2M2YWI5OTlmM2NkMWU2YjFjZmFlMGFlYjIzY2Q4YWUzNjk0Ny4u
OTc4NTU5NzI4NmZmZmZlNjBmOTRiNDhkOWIzOGQzYzQ0N2Q2MzVhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRy
eT4gZW50cnkpCiAKIHZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OmFwcGVuZEFsbChjb25zdCBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4mIGVudHJpZXMpCiB7Ci0gICAgbV9lbnRy
aWVzLmFwcGVuZChlbnRyaWVzKTsKKyAgICBtX2VudHJpZXMuYXBwZW5kUmFuZ2UoZW50cmllcy5i
ZWdpbigpLCBlbnRyaWVzLmVuZCgpKTsKIH0KIAogdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6
c29ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRp
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAK
aW5kZXggMTZmNTI1MjlmOTYwODdmZjE4OThiNzIzNzRkN2I0Y2RiN2E0YzNjNi4uMjc1MmM3MGMy
YjdlNmVjNTVhNjZiYmY3ZGU4ZjUyOWU2ZDJlZmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gY29udmVydFRvRW50cnlTZXF1ZW5jZShj
b25zdCBQZXJmb3JtYW5jCiAgICAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGVu
dHJpZXM7CiAKICAgICBmb3IgKFBlcmZvcm1hbmNlRW50cnlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcGVyZm9ybWFuY2VFbnRyeU1hcC5iZWdpbigpOyBpdCAhPSBwZXJmb3JtYW5jZUVudHJ5TWFw
LmVuZCgpOyArK2l0KQotICAgICAgICBlbnRyaWVzLmFwcGVuZChpdC0+dmFsdWUpOworICAgICAg
ICBlbnRyaWVzLmFwcGVuZFJhbmdlKGl0LT52YWx1ZS5iZWdpbigpLCBpdC0+dmFsdWUuZW5kKCkp
OwogCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hv
b3Nlci5jcHAKaW5kZXggMGY0NTdkMTM0ZTk0NGQ1Zjk5NzEwMTYxMzZjZDUzMWExMjI1MDJkZS4u
ZDI2MTRiODcwMjRiZjQyNmE5NGY4NDE4ZDE1N2E2ZTJjYzBlYTliZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtMTAzLDggKzEwMyw4IEBAIFZlY3RvcjxTdHJp
bmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFjY2VwdFR5cGVzKCkgY29uc3QKIHsKICAgICBWZWN0
b3I8U3RyaW5nPiBhY2NlcHRUeXBlczsKICAgICBhY2NlcHRUeXBlcy5yZXNlcnZlQ2FwYWNpdHko
YWNjZXB0TUlNRVR5cGVzLnNpemUoKSArIGFjY2VwdEZpbGVFeHRlbnNpb25zLnNpemUoKSk7Ci0g
ICAgYWNjZXB0VHlwZXMuYXBwZW5kKGFjY2VwdE1JTUVUeXBlcyk7Ci0gICAgYWNjZXB0VHlwZXMu
YXBwZW5kKGFjY2VwdEZpbGVFeHRlbnNpb25zKTsKKyAgICBhY2NlcHRUeXBlcy5hcHBlbmRSYW5n
ZShhY2NlcHRNSU1FVHlwZXMuYmVnaW4oKSwgYWNjZXB0TUlNRVR5cGVzLmVuZCgpKTsKKyAgICBh
Y2NlcHRUeXBlcy5hcHBlbmRSYW5nZShhY2NlcHRGaWxlRXh0ZW5zaW9ucy5iZWdpbigpLCBhY2Nl
cHRGaWxlRXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5j
cHAKaW5kZXggNWQ3NzZhZGQ4YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uY2RjYzQ5
ZGEwOTk2NWJhODM3Y2Q0OTllY2E1MWQwYjY1ZGMwYTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+
JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRl
eCsrOwogICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iuc2l6
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAgICAg
ICAgICAgICAgIGNodW5rLmFwcGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgICAg
IGNodW5rLmFwcGVuZFJhbmdlKG1fc2VwYXJhdG9yLmJlZ2luKCksIG1fc2VwYXJhdG9yLmVuZCgp
KTsKICAgICAgICAgICAgICAgICBtX3NlcGFyYXRvckluZGV4ID0gMDsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBjNTIzODU4MGI5MTlmZGJhOTVkNTUy
NGNlYWViNWIxNzQ2YjdkOGNmLi41YjE0MDVhMzYzMGE0OTgzMjcxOGE2ZDg0NGQ3NmIxYzA2YmFl
Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVzOwogICAgICAgICBlbmdpbmVzW2ldLT5n
ZXRTaXRlc0luTWVkaWFDYWNoZShlbmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVzLmFwcGVuZChl
bmdpbmVTaXRlcyk7CisgICAgICAgIHNpdGVzLmFwcGVuZFJhbmdlKGVuZ2luZVNpdGVzLmJlZ2lu
KCksIGVuZ2luZVNpdGVzLmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMmE0
Nzg5Yzg5YTRjYWYwNTQzNjc3YzgzNGM0MWVkNDJhY2ExYzIzLi45ODA5Yjc4YWM3ZjBmZGNjYjU1
ZWYyODc4ZDhjMjk3OWRiZmEzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogICAgIHVuc2lnbmVk
IHNpemUgPSBkaXJ0eVRpbGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwg
c2l6ZTsgKytuKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0
eVRpbGVzW25dLT51cGRhdGVCYWNrQnVmZmVyKCk7Ci0gICAgICAgIHBhaW50ZWRBcmVhLmFwcGVu
ZChwYWludGVkUmVjdHMpOworICAgICAgICBwYWludGVkQXJlYS5hcHBlbmRSYW5nZShwYWludGVk
UmVjdHMuYmVnaW4oKSwgcGFpbnRlZFJlY3RzLmVuZCgpKTsKICAgICAgICAgZGlydHlUaWxlc1tu
XS0+c3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBl
MDIyZmUyN2IwYzM0YzhiMDE3N2M5ZGFiYzc1YWI5ZmI3YzZjZjI3Li4zZTZjNWVhZmQyMmU1NjA0
OGYyODM4OWRjYjQ2OWNlZGUyYWYxOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEyODQsNyArMTI4
NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdWJsYXllckxpc3QoYm9vbCBtYXhM
YXllckRlcHRoUmVhY2hlZCkKICAgICBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBjaGlsZExpc3RGb3JT
dWJsYXllcnMgPSBtX3N0cnVjdHVyYWxMYXllciA/IHN0cnVjdHVyYWxMYXllckNoaWxkcmVuIDog
cHJpbWFyeUxheWVyQ2hpbGRyZW47CiAKICAgICBpZiAoY3VzdG9tU3VibGF5ZXJzKQotICAgICAg
ICBwcmltYXJ5TGF5ZXJDaGlsZHJlbi5hcHBlbmQoKmN1c3RvbVN1YmxheWVycyk7CisgICAgICAg
IHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZFJhbmdlKGN1c3RvbVN1YmxheWVycy0+YmVnaW4o
KSwgY3VzdG9tU3VibGF5ZXJzLT5lbmQoKSk7CiAKICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIp
IHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0OGQzZWJhNTFkNGQ3NmFmNDZmN2Y0YWNmODYy
YzI5NjkxOTMwNTZmLi4yZmM5Zjc1OTA4ZGY1ZWE2NjM0YTk3ZTliZjk1ZjZjN2FjZjdhOTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtODks
NyArODksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVz
KGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIGJvb2wgcwogICAgIHJldHVybiB0eXBlczsKIH0K
IAotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JVUkwoKQorc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JVUkwoKQogewogICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzOwogICAgIApAQCAtMTA2LDcgKzEwNiw4IEBAIHN0YXRpYyBpbmxpbmUgVmVj
dG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICAKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5
cGUpKTsKLSAgICB0eXBlcy5hcHBlbmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKKyAgICBmb3Ig
KGNvbnN0IFN0cmluZyYgdHlwZTogd3JpdGFibGVUeXBlc0ZvclVSTCgpKQorICAgICAgICB0eXBl
cy5hcHBlbmQodHlwZSk7CiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1JURkRQYm9hcmRUeXBl
KSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQpAQCAtMTE0LDcgKzExNSw4IEBAIHN0YXRpYyBpbmxp
bmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogewogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzOwotICAgIHR5cGVzLmFwcGVuZChjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2Uo
KSk7CisgICAgZm9yIChjb25zdCBTdHJpbmcmIHR5cGU6IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJ
bWFnZSgpKQorICAgICAgICB0eXBlcy5hcHBlbmQodHlwZSk7CiAgICAgcmV0dXJuIHR5cGVzOwog
fQogCkBAIC0xODcsNyArMTg5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZv
clR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGIKICAgICBWZWN0
b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
PiBjbGllbnREYXRhOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmdldENsaWVudFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCkuZ2V0
KCksIGNsaWVudFR5cGVzLCBjbGllbnREYXRhKTsKLSAgICB0eXBlcy5hcHBlbmQoY2xpZW50VHlw
ZXMpOworICAgIHR5cGVzLmFwcGVuZFJhbmdlKGNsaWVudFR5cGVzLmJlZ2luKCksIGNsaWVudFR5
cGVzLmVuZCgpKTsKIAogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3Bw
CmluZGV4IDU2N2JkNjBiOTk3NDkyNzE0M2JlMmJkYTIyMDM3OGNmNjk1N2U2OTMuLjk2NzAzY2Rh
NTE0NzA1OTE4YmNhM2E3YTRhNjQ2OGI0MWI3OGM1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCBWZWN0b3I8Y2hhcj4gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5
U3RyaW5nKCkKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5kKGFscGhhTnVtZXJpY0VuY29kaW5n
TWFwW3JhbmRvbW5lc3MgJiAweDNGXSk7CiAgICAgfQogCi0gICAgYm91bmRhcnkuYXBwZW5kKHJh
bmRvbUJ5dGVzKTsKKyAgICBib3VuZGFyeS5hcHBlbmRSYW5nZShyYW5kb21CeXRlcy5iZWdpbigp
LCByYW5kb21CeXRlcy5lbmQoKSk7CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAw
IGF0IHRoZSBlbmQgc28gd2UgY2FuIHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAg
cmV0dXJuIGJvdW5kYXJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcAppbmRleCA0ZDBmZmJlYzNmMTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3NGFiLi5mY2Uw
NTk1OWFkNzE1ZGE4Mzg3NGJmNzQxNDk3ZjM1MzA5ODEzN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3Rv
cjxTdHJpbmc+IG1velBhdGhzOwogICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigiTU9aX1BMVUdJ
Tl9QQVRIIikpOwogICAgIG1velBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVu
dHJpZXMgKi8gZmFsc2UsIG1velBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96UGF0aHMpOwor
ICAgIHBhdGhzLmFwcGVuZFJhbmdlKG1velBhdGhzLmJlZ2luKCksIG1velBhdGhzLmVuZCgpKTsK
ICNlbGlmIGRlZmluZWQoWFBfTUFDT1NYKQogICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IGhv
bWVEaXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygiL0xp
YnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMiKSk7CkBAIC00NDUsNyArNDQ1LDcgQEAgVmVjdG9yPFN0
cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAgICAgVmVj
dG9yPFN0cmluZz4gcXRQYXRoczsKICAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYoIlFUV0VCS0lU
X1BMVUdJTl9QQVRIIikuY29uc3REYXRhKCkpOwogICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicp
LCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcXRQYXRocyk7Ci0gICAgcGF0aHMuYXBw
ZW5kKHF0UGF0aHMpOworICAgIHBhdGhzLmFwcGVuZFJhbmdlKHF0UGF0aHMuYmVnaW4oKSwgcXRQ
YXRocy5lbmQoKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXRoczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzAyYzRh
N2E3NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uZTZjMWM4MmVjZTU0OTlhYjZlYWI5
MDNhODI1YmE0OGI5N2EzNTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVy
JiB0b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55IG5lc3RlZCBp
c29sYXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2
ZXIncyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlzb2xhdGVkUmVz
b2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0b3BSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7
CisgICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRSYW5nZShpc29s
YXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmJlZ2luKCksIGlzb2xhdGVkUmVzb2x2ZXIuaXNv
bGF0ZWRSdW5zKCkuZW5kKCkpOwogICAgICAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRl
ZFJ1bnMoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhM2E0OTExYzNhOTUx
MDY2MzliZDY0ZDU3NjZhNDIyYTU0NTYyYzI3Li42OTZmOTgzZjQ0NTlkZWRlZjIxYzQxNTMzNzg0
NzQzYTUxNzRlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgbV9vdmVybGFwU3Rh
Y2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kKG1fb3ZlcmxhcFN0YWNrLmxhc3Qo
KSk7CisgICAgICAgIG1fb3ZlcmxhcFN0YWNrW21fb3ZlcmxhcFN0YWNrLnNpemUoKSAtIDJdLmFw
cGVuZFJhbmdlKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5iZWdpbigpLCBtX292ZXJsYXBTdGFjay5s
YXN0KCkuZW5kKCkpOwogICAgICAgICBtX292ZXJsYXBTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CmluZGV4IDNkNTEyOTNkMTJjMmM4OGUzMGI4MzBlYWZmODZhYTc3OWJiOGU5MWEuLmY1YmIxN2Nm
ZTI1MmU3ZjI3MGFlYzFjMDlkY2E5NzRlM2VhNDM0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2
b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1bW4odW5zaWduZWQgcG9zLCB1bnNpZ25l
ZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlkW3Jvd10ucm93OwogICAgICAgICByLmlu
c2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAgICAgICBpZiAocltwb3NdLmhhc0NlbGxz
KCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kKHJbcG9zXS5jZWxscyk7
CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFwcGVuZFJhbmdlKHJbcG9zXS5jZWxscy5i
ZWdpbigpLCByW3Bvc10uY2VsbHMuZW5kKCkpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxs
KiBjZWxsID0gcltwb3NdLnByaW1hcnlDZWxsKCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbCk7
CiAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+Y29sU3BhbigpID49IChyW3Bvc10uaW5Db2xTcGFu
ID8gMXUgOiAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCmluZGV4IDkyOTQ1MjY5NjU5MWQ3
YTcwYjRiMWE3N2ViMDQ2N2M3MmRkMzg0NDIuLmViY2ZhY2E5ZDczZTQzNWU0ZTgxODgzNmI2Njdl
NWIzMTdhNWJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCkBAIC0xMjQsNyArMTI0LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEdseXBoTWFwTm9kZT4gbm9kZSA9IGN1cnJl
bnRMYXllci0+Z2V0KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBnbHlwaHMuYXBwZW5kKG5vZGUtPmdseXBocyk7
CisgICAgICAgICAgICBnbHlwaHMuYXBwZW5kUmFuZ2Uobm9kZS0+Z2x5cGhzLmJlZ2luKCksIG5v
ZGUtPmdseXBocy5lbmQoKSk7CiAgICAgICAgICAgICBjdXJyZW50TGF5ZXIgPSAmbm9kZS0+Y2hp
bGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0b3IuYWR2YW5jZShjbHVzdGVyTGVuZ3RoKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5o
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCmluZGV4IGJjNzY3ZDVjMzhiZWU3
MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjEwNmU4NTAyMmMyNTkxNjJlZTY1YTE1ODZiMmFm
YmViZWVjOTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKQEAgLTUwLDcgKzUwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLy8gTm9kZVNldCBpdHNlbGYgZG9l
cyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJlIHVuaXF1ZS4KICAgICAgICAgICAgIHZv
aWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rlcy5hcHBlbmQobm9kZSk7IH0KICAgICAgICAg
ICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkgeyBtX25vZGVzLmFwcGVuZChu
b2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgTm9kZVNldCYgbm9kZVNldCkg
eyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9kZXMpOyB9CisgICAgICAgICAgICB2b2lkIGFw
cGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kUmFuZ2Uobm9kZVNl
dC5tX25vZGVzLmJlZ2luKCksIG5vZGVTZXQubV9ub2Rlcy5lbmQoKSk7IH0KIAogICAgICAgICAg
ICAgLy8gUmV0dXJucyB0aGUgc2V0J3MgZmlyc3Qgbm9kZSBpbiBkb2N1bWVudCBvcmRlciwgb3Ig
MCBpZiB0aGUgc2V0IGlzIGVtcHR5LgogICAgICAgICAgICAgTm9kZSogZmlyc3ROb2RlKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05l
dHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAyZTMwYmNiNzg3ZTI2MjE1NmQ2MGE5
OWQzNzllOTM4YTE1MjJhNzg1Li43ZDhhNWM5YzNmMGIzOGNmN2MzOWI2MTlhNWU3MTdjMDY4YzMx
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05l
dHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTU1LDggKzU1LDEwIEBAIHZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+
IHNhbmRib3hFeHRlbnNpb25zID0gbmV3U2FuZGJveEV4dGVuc2lvbnM7CiAgICAgY29uc3QgQmxv
YkRhdGFJdGVtTGlzdCYgaXRlbXMgPSBkYXRhLT5pdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBjb3VudCA9IGl0ZW1zLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYg
KGl0ZW1zW2ldLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpCbG9iKQotICAgICAgICAgICAgc2FuZGJv
eEV4dGVuc2lvbnMuYXBwZW5kKG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5z
dHJpbmcoKSkpOworICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJs
b2IpIHsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IG1fc2FuZGJveEV4dGVuc2lvbnMu
Z2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSk7CisgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVu
ZFJhbmdlKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBkYXRhKTsK
QEAgLTEwNyw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAgIG1fYmxvYnNG
b3JDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiA+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zYW5kYm94RXh0ZW5zaW9ucy5n
ZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNTJkMmRmOWMx
OTg5MjkzYTEwMzY1Yjk0ODY0NTFhMWFkODY5NzFhNS4uNjdkMGNjZmVjZWYwOThlMDUzNmQ2MzY1
NzhhYTQyZjg5MTIwYmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4gPiBzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJM
Jik7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gc2FuZGJveEV4dGVuc2lv
bnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIH5OZXR3b3Jr
QmxvYlJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9TY2hlZHVsYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9T
Y2hlZHVsYWJsZUxvYWRlci5jcHAKaW5kZXggOWQ0NmY3NDhiZjRjMjBmYzY5ZjYwYTVhNzU2ZGE2
ZGEwMmFmNWNiNS4uMDJhNzAyOGVkMmM2Y2M5YjNkZTMyZTk1YzQ1ODY1MmQzZDMxZDQwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVy
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1bGFibGVMb2Fk
ZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3VudDsgKytp
KSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRhRWxlbWVu
dDo6ZW5jb2RlZEJsb2IpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hF
eHRlbnNpb24+ID4gYmxvYkVsZW1lbnRFeHRlbnNpb25zID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6
c2hhcmVkKCkuc2FuZGJveEV4dGVuc2lvbnMoZWxlbWVudHNbaV0ubV91cmwpOwotICAgICAgICAg
ICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoYmxvYkVsZW1lbnRF
eHRlbnNpb25zKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lv
bnMuYXBwZW5kUmFuZ2UoYmxvYkVsZW1lbnRFeHRlbnNpb25zLmJlZ2luKCksIGJsb2JFbGVtZW50
RXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3YTA4
NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2ViODQ5Li5iZmVhZTMxNDkzNGZkMTllOTVm
NWNlMWRlNzdlNjc4ZTQ1MTg4OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIENvbm5lY3Rpb246
OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiogYWxsb3dlZENv
bm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0QmFjay5pc0VtcHR5KCkpIHsKICAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBtX21lc3NhZ2VzVG9EaXNw
YXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQobWVzc2FnZXNUb1B1dEJhY2spOwor
ICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBl
bmRSYW5nZShtZXNzYWdlc1RvUHV0QmFjay5iZWdpbigpLCBtZXNzYWdlc1RvUHV0QmFjay5lbmQo
KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBkNGM5ZWMyYzVm
MmU1MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi40NzMzMmYwZjk0YzVhYWQyOWY3Yjk0YmFi
MTRiYzlmYTlkNTJlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMo
KQogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFs
bG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
cGF0aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UocGF0aHMuYmVnaW4oKSwgcGF0aHMu
ZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzEyYjlkNzAyMjM5YmI5ZTE3NTUxYWIz
Y2RjMzczOTI1Nzc5ZmRhMS4uNjUzZTI2MDQxOGNhMzYyMTczYWUzZGI5YjgyN2FjODM2MDQyM2Y2
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0
IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChj
b25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAg
ICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKwogMjAxMy0wNS0wMiAgTmlj
byBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGEgc3RhbGUg
c2NyaXB0IGZpbGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDM1M2VhOGQ2N2M5M2Q5Njk2M2QxYWFiNDg1YTJk
YWVhNGRmZTY1MDcuLjJiNjI3YmNjZjllYTQxNzUyMDJkNmY3NmRkODViMmYxMmI1YzQ1MzMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHYKIAog
ICAgIFZlY3RvcjxVbmlDaGFyPiB2YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7CiAgICAgW3Zh
bHVlIGdldENoYXJhY3RlcnM6dmFsdWVCdWZmZXIuZGF0YSgpXTsKLSAgICBidWZmZXIuYXBwZW5k
KHZhbHVlQnVmZmVyKTsKKyAgICBidWZmZXIuYXBwZW5kUmFuZ2UodmFsdWVCdWZmZXIuYmVnaW4o
KSwgdmFsdWVCdWZmZXIuZW5kKCkpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4YTk1NTFjODVmYThhODdiZGU0MDVh
Mzk3YWY1ZTgwMjBlOGI5OTE2Li45NWNmYWU4Y2Y0NzNiZjQyNzg1YzQyMWEwZjkyZmVmMjA1ODU5
Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE3
Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRW
YWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNo
YXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVy
czp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOwor
ICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5l
bmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200424</attachid>
            <date>2013-05-03 09:48:44 -0700</date>
            <delta_ts>2013-05-03 09:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130503094759.patch</filename>
            <type>text/plain</type>
            <size>50253</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uY2MxN2M1MmJmNjE3NzBjMjc4MTI2MGVmN2M5MDRmNGJiZDc1ZjU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
aW5kZXggNzI0MDU1MmIxNmQzYzM4MmY1ZDBjZDA0MzExYTIzNmJiYjk5Y2IxYy4uOTlhYzQzNzE0
YzA5ZGVkYzE3MGVhZDhjNmQ1ZmUxZDFjOTdhZjNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTE3MCw2ICsx
NzAsMTIgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSW5kZXhOYW1lc0tleVR5cGVCeXRl
ID0gMjAxOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSA9IDI1NTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5Pgorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IGRlc3QsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc3JjKQoreworICAgIGRlc3QuYXBwZW5kUmFuZ2Uo
c3JjLmJlZ2luKCksIHNyYy5lbmQoKSk7Cit9CisKIFZlY3RvcjxjaGFyPiBlbmNvZGVCeXRlKHVu
c2lnbmVkIGNoYXIgYykKIHsKICAgICBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNp
emU+IHY7CkBAIC0zMjYsNyArMzMyLDcgQEAgU3RyaW5nIGRlY29kZVN0cmluZyhjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgoY29uc3QgU3RyaW5nJiBzKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBlbmNvZGVW
YXJJbnQocy5sZW5ndGgoKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmcocykpOworICAg
IGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IApAQCAtNDE5LDcgKzQyNSw3IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYga2V5
LCBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAgICAgY2FzZSBJ
REJLZXk6OkludmFsaWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJL
ZXlOdWxsVHlwZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZUJ5dGUo
SURCS2V5TnVsbFR5cGVCeXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6
QXJyYXlUeXBlOiB7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5QXJyYXlU
eXBlQnl0ZSkpOwpAQCAtNDQxLDggKzQ0Nyw4IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElE
QktleSYga2V5LCBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3Vz
U2l6ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBl
OgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7
Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKKyAgICAg
ICAgYXBwZW5kVmVjdG9yKGluZm8sIGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsK
KyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlv
dXNTaXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEzNSwyMSArMTE0MSwy
MSBAQCBLZXlQcmVmaXg6OlR5cGUgS2V5UHJlZml4Ojp0eXBlKCkgY29uc3QKIFZlY3RvcjxjaGFy
PiBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBL
ZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKFNjaGVt
YVZlcnNpb25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoU2No
ZW1hVmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogVmVjdG9yPGNoYXI+
IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoTWF4RGF0
YWJhc2VJZFR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShNYXhE
YXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4g
RGF0YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVBy
ZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNp
b25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoRGF0YVZlcnNp
b25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTExODAsOCArMTE4Niw4IEBA
IGNvbnN0IGNoYXIqIERhdGFiYXNlRnJlZUxpc3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIERhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VGcmVlTGlzdEtl
eTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0g
S2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRh
YmFzZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChkYXRh
YmFzZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVM
aXN0VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoZGF0YWJh
c2VJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIzMyw5IEBAIGNvbnN0
IGNoYXIqIERhdGFiYXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFw
cGVuZChlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3Ry
aW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCBlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgoZGF0YWJhc2VOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTI1NSw3ICsxMjYxLDcgQEAgVmVjdG9yPGNoYXI+IERhdGFiYXNlTWV0YURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSBtZXRhRGEKIHsKICAgICBLZXlQ
cmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXgu
ZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOworICAg
IGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KIApAQCAtMTI5NCw5ICsxMzAwLDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QK
IHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiBy
ZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0
b3JlTWV0YURhdGFUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7Cisg
ICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5
dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkp
OworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTM2OSwxMCArMTM3NSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5k
ZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9y
PGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
SW5kZXhNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2Jq
ZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgYXBwZW5kVmVjdG9y
KHJldCwgZW5jb2RlQnl0ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZlY3Rvcihy
ZXQsIGVuY29kZVZhckludChpbmRleElkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
Qnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDMyLDggKzE0
MzgsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtleVByZWZpeCBwcmVmaXgo
ZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7Ci0g
ICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZl
Y3RvcihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1
cm4gcmV0OwogfQogCkBAIC0xNDg5LDkgKzE0OTUsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVl
TGlzdEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhG
cmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3Rv
cmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBl
bmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIGFw
cGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5k
VmVjdG9yKHJldCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xNTQ1LDggKzE1NTEsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5
cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0
b3JlTmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVO
YW1lc1R5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChvYmplY3RTdG9yZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTg4LDkg
KzE1OTQsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0
LCBlbmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rvcihy
ZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwg
ZW5jb2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xNjIwLDcgKzE2MjYsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVEYXRhS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoS2V5UHJlZml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcikpOwogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFVzZXJLZXkpOwogCiAgICAgcmV0dXJuIHJl
dDsKIH0KQEAgLTE2NjIsNyArMTY2OCw3IEBAIFZlY3RvcjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjCiB7CiAg
ICAgS2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9y
PGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRLZXkp
OworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRLZXkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKQEAgLTE3MzMsOSArMTczOSw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29k
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50CiB7CiAgICAg
S2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAg
ICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlZFVzZXJLZXkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVy
KSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkUHJpbWFyeUtleSk7CisgICAgYXBwZW5kVmVjdG9y
KHJldCwgZW5jb2RlZFVzZXJLZXkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhcklu
dChzZXF1ZW5jZU51bWJlcikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRQcmltYXJ5
S2V5KTsKICAgICByZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMDQ3MjY2ZWI3OTRiMGU4ZWQwYmY1MTZl
M2I3NTJmNmE3ODJjYmM2Mi4uNjNlNWVmYzM0NTE2YzM3ZTExYjRmY2YwOTU4YjQ4NDE4NjhiMThk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigpCiAgICAg
Ly8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9keSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRp
b24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2ZXMuCiAgICAgZG8gewogICAgICAgICBkZWxl
dGVNYXJrZWROb2RlcygpOwotICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNN
YXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRSYW5nZSht
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uYmVnaW4oKSwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
LmVuZCgpKTsKICAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAgICAg
fSB3aGlsZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSk7CiAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgLy8gTWFrZSBz
dXJlIHRvIGNhbGwgZGVsZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4gICAgCiAgICAg
aWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVk
dWxlZCkgewotICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JE
ZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRSYW5nZShtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uYmVnaW4oKSwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmVuZCgpKTsK
ICAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAKICAgICAgICAgbV9p
c0RlbGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCA4NjY0YWM3NGZkOGFk
YmRkZjFlMDIxZDgzNjZmMTg1YzAxM2NlZWEzLi5jODZhODM1MGJjODA0N2Y5NDU2OGE2NzhhNTUy
Mjg2M2NiZmU1Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
aGlsZCwgSGFzaFNlCiAgICAgaWYgKCFyb3ctPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAg
ICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CisgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFu
Z2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCksIHJvdy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAKICAg
ICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggNzFh
ZmFiNWQ4N2Q3OTYwYjYwMjVlNDc1ZjRlNDZhYzU5Nzk2MGI2MS4uZTM5NGFmZGRiNTA4NzgwN2U4
OWVkMDg5YWVhZGJhYjJmNzg3ZjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAg
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJhbmdlKHJvdy0+Y2hpbGRyZW4oKS5iZWdpbigp
LCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBhcHBlbmRlZFJv
d3MuYWRkKHJvdyk7CiAgICAgICAgIH0KQEAgLTQ2NywxMCArNDY3LDggQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmNlbGxzKEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAg
aW50IG51bVJvd3MgPSBtX3Jvd3Muc2l6ZSgpOwotICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8
IG51bVJvd3M7ICsrcm93KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBy
b3dDaGlsZHJlbiA9IG1fcm93c1tyb3ddLT5jaGlsZHJlbigpOwotICAgICAgICBjZWxscy5hcHBl
bmQocm93Q2hpbGRyZW4pOwotICAgIH0KKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1S
b3dzOyArK3JvdykKKyAgICAgICAgY2VsbHMuYXBwZW5kUmFuZ2UobV9yb3dzW3Jvd10tPmNoaWxk
cmVuKCkuYmVnaW4oKSwgbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCkuZW5kKCkpOwogfQogICAgIAog
dW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEw
NmUwLi44YjQ1N2I0M2RjZDIwZjE4MTY3YmU3MTBmZDNlNmQyYzU2NzdiOWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRy
c0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRyc0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQogICAgICAgICBhdHRyc0luUnVsZXMuYWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFw
cGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwotICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBl
bmRSYW5nZShvdGhlci5zaWJsaW5nUnVsZXMuYmVnaW4oKSwgb3RoZXIuc2libGluZ1J1bGVzLmVu
ZCgpKTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFJhbmdlKG90aGVyLnVuY29t
bW9uQXR0cmlidXRlUnVsZXMuYmVnaW4oKSwgb3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5l
bmQoKSk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90
aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IHVzZXNC
ZWZvcmVBZnRlclJ1bGVzIHx8IG90aGVyLnVzZXNCZWZvcmVBZnRlclJ1bGVzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDY5NTI3OTNlN2UyMmFhNWVhMDM2NmM4NWQ4
MmU3NGE0NDlhNjRlMmMuLjU5MDQyMGQxNGIxZjA3ZmMzN2QzMGU2ZWRjYTYwOTUzNWVkOGU1MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE4MjcsNyArMTgyNyw3IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgY29uc3QKIAogICAgIEFTU0VSVChoYXNoKTsKICAgICBNYXRjaGVk
UHJvcGVydGllc0NhY2hlSXRlbSBjYWNoZUl0ZW07Ci0gICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9w
ZXJ0aWVzLmFwcGVuZChtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcyk7CisgICAgY2FjaGVJ
dGVtLm1hdGNoZWRQcm9wZXJ0aWVzLmFwcGVuZFJhbmdlKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9w
ZXJ0aWVzLmJlZ2luKCksIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmVuZCgpKTsKICAg
ICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQucmFuZ2VzOwogICAgIC8vIE5vdGUgdGhh
dCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1h
eSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2Fj
aGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZl
ciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzljMTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNi
OTNhYWE2MTcuLmViOTQ4ZDk4NmFlOGZjOWI5Y2Q4N2M3ODlhZTFjMDgxY2FkMzk4ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAKQEAgLTQ0MSw3ICs0NDEsOSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVT
aGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJ
RnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LT5zZWFtbGVzc1Bh
cmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQYXJlbnRJRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgp
LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKwor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHMgPSBzZWFtbGVzc1BhcmVudElGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENv
bGxlY3Rpb24oKS0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBzaGVldHMuYXBwZW5k
UmFuZ2UoYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYmVnaW4oKSwgYWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMuZW5kKCkpOwogfQogCiBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVw
ZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0
NjQsOCBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0
eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNo
ZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBw
ZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVl
dHMuYXBwZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5
bGVTaGVldHMuYXBwZW5kUmFuZ2UoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCks
IGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVT
aGVldHMuYXBwZW5kUmFuZ2UoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGRv
Y3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKS5lbmQoKSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0
eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1
bWVudCk7CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hl
ZXRzLCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJk
NzEyOWQ4MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3OWUuLmIwNzUwNmZmMTBhMGEzZmZiODM0NzU5
NGRjYTQwYWQ3YzJkNjk4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcg
QEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcykgY29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1
dGVRdWFkcyhlbGVtZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+
YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxl
bWVudFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBxdWFk
cy5hcHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRSYW5n
ZShlbGVtZW50UXVhZHMuYmVnaW4oKSwgZWxlbWVudFF1YWRzLmVuZCgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7
CkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlclRl
eHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0Zv
clNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0
KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAg
ICAgICAgIHF1YWRzLmFwcGVuZFJhbmdlKHRleHRRdWFkcy5iZWdpbigpLCB0ZXh0UXVhZHMuZW5k
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDA5Y2MyODc0NDE4MTAzOTA5ODEx
ODM0MzkyODQ1MzRhMzI1ZDJiNjMuLjc1ODkzYTU1MmYyODBhZjhmYzFlMGQ2MDhlMDZmNGE1NmU0
YWYxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVj
a2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZwogICAgICAgICBp
ZiAocmVzdWx0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHRzLnN3YXAoc3BlbGxpbmdS
ZXN1bHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzcGVsbGlu
Z1Jlc3VsdCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZFJhbmdlKHNwZWxsaW5nUmVzdWx0
LmJlZ2luKCksIHNwZWxsaW5nUmVzdWx0LmVuZCgpKTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggOGE4YWYwNWE5N2ZiNTliZjMwZjlh
NTg0N2I0NWIzYzRmZDMwYjcwMS4uNzRiYzk3ZDk0MmVkYjI5NTQyYTA0NGM3MDEzMmVmZDk2NWYw
MzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTUxMCw4ICs1
MTAsMTAgQEAgVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXQKICAgICBWZWN0b3I8U3RyaW5nPiB0b1Jl
dHVybjsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBtYXA7CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0
ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsKLSAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBtYXAuZW5kKCk7ICsraXQpCi0g
ICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
KSk7CisgICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAu
YmVnaW4oKSwgZW5kID0gbWFwLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gcmVmZXJlbmNlZEZpbGVQYXRocyA9IGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNl
ZEZpbGVQYXRocygpOworICAgICAgICB0b1JldHVybi5hcHBlbmRSYW5nZShyZWZlcmVuY2VkRmls
ZVBhdGhzLmJlZ2luKCksIHJlZmVyZW5jZWRGaWxlUGF0aHMuZW5kKCkpOworICAgIH0KICAgICBy
ZXR1cm4gdG9SZXR1cm47CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDE5YmM5NTBjYWQzYmRkYTg5
MmE0ZGRkNzA1MTE4MDkzZmE4ZTA3OGMuLjk5MmU0YjcwOGRkOTM0NzE1YjFlOGQyODM5OGRhYjcw
ZTFhNmNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRMaW5lRGFzaChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBkYXNo
KQogICAgIC8vIFNwZWMgcmVxdWlyZXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIGNvcGllcyB0
aGUgZGFzaCBsaXN0IHdoZW4gdGhlCiAgICAgLy8gbnVtYmVyIG9mIGVsZW1lbnRzIGlzIG9kZAog
ICAgIGlmIChkYXNoLnNpemUoKSAlIDIpCi0gICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGlu
ZURhc2guYXBwZW5kKGRhc2gpOworICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNo
LmFwcGVuZFJhbmdlKGRhc2guYmVnaW4oKSwgZGFzaC5lbmQoKSk7CiAKICAgICBhcHBseUxpbmVE
YXNoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxG
b3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGY2ZjlhMjhiMTRhYTcxNzQyMmJlZDEzODgz
MjI5ZTFhMjYwZTMwMDAuLjc4NTc0MzNiNmQ2ZDljYTgwMTE1OTkyN2VkODlkYzc5ZjYxOWM3NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3Rh
Y2tJdGUKICAgICBpZiAoY2FuZGlkYXRlcy5zaXplKCkgPCBrTm9haHNBcmtDYXBhY2l0eSkKICAg
ICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIHJvb20gZm9yIHRoZSBuZXcgZWxlbWVudCBpbiB0aGUg
YXJrLiBUaGVyZSdzIG5vIG5lZWQgdG8gY29weSBvdXQgdGhlIHJlbWFpbmluZ0NhbmRpZGF0ZXMu
CiAKLSAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRhdGVzKTsKKyAgICByZW1h
aW5pbmdDYW5kaWRhdGVzLmFwcGVuZFJhbmdlKGNhbmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlkYXRl
cy5lbmQoKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9h
aHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSogbmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNTQyNGJkMTQ2YzBhYWJiMmI2OTBhOWVhYWIwMjI5Zjk3
YzA4YjEyMy4uZjk0OGY5NmFkNDFiMTZmNDYyYmMwNmMzN2IyYzNhOTFiNDUxYTk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRl
cy5jbGVhcigpOwogCi0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7Cisg
ICAgICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMu
ZW5kKCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKQEAgLTM5OCw3ICsz
OTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8
TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
Q2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAg
ICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5l
bmQoKSk7CiAgICAgfQogCiAgICAgLyogQ29tbWVudCBUb2tlbnMgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZmODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYx
OTMxYzA2ZTQ4OTQ3Li5mYTdhZjNkNmVhN2IwZjdjMDc5YjEzMDQzYzVkZDEwNDk5ZWY0YzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCkBAIC05OSw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwg
MzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpD
aGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAg
ICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVu
ZCgpKTsKICAgICB9CiAKICAgICB2b2lkIGJlZ2luRW1wdHlTdGFydFRhZygpCkBAIC0xNDksNyAr
MTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlN0YXJ0VGFn
KTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9jbGFz
c2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBwZW5kKG1fY3VycmVudEJ1ZmZl
cik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4o
KSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFy
KCk7CiAgICAgfQogICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRp
b24uY2xlYXIoKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIp
OworICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kUmFuZ2UobV9jdXJyZW50QnVmZmVyLmJlZ2lu
KCksIG1fY3VycmVudEJ1ZmZlci5lbmQoKSk7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlci5jbGVh
cigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5
TGlzdC5jcHAKaW5kZXggMGE4Y2M2YWI5OTlmM2NkMWU2YjFjZmFlMGFlYjIzY2Q4YWUzNjk0Ny4u
OTc4NTU5NzI4NmZmZmZlNjBmOTRiNDhkOWIzOGQzYzQ0N2Q2MzVhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRy
eT4gZW50cnkpCiAKIHZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OmFwcGVuZEFsbChjb25zdCBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4mIGVudHJpZXMpCiB7Ci0gICAgbV9lbnRy
aWVzLmFwcGVuZChlbnRyaWVzKTsKKyAgICBtX2VudHJpZXMuYXBwZW5kUmFuZ2UoZW50cmllcy5i
ZWdpbigpLCBlbnRyaWVzLmVuZCgpKTsKIH0KIAogdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6
c29ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRp
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAK
aW5kZXggMTZmNTI1MjlmOTYwODdmZjE4OThiNzIzNzRkN2I0Y2RiN2E0YzNjNi4uZjEyMTc1OGEw
YzVhOTRkOTYxYjRlYmViNDNkNTQxNWI3ZWNkYTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gY29udmVydFRvRW50cnlTZXF1ZW5jZShj
b25zdCBQZXJmb3JtYW5jCiAgICAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGVu
dHJpZXM7CiAKICAgICBmb3IgKFBlcmZvcm1hbmNlRW50cnlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gcGVyZm9ybWFuY2VFbnRyeU1hcC5iZWdpbigpOyBpdCAhPSBwZXJmb3JtYW5jZUVudHJ5TWFw
LmVuZCgpOyArK2l0KQotICAgICAgICBlbnRyaWVzLmFwcGVuZChpdC0+dmFsdWUpOworICAgICAg
ICBlbnRyaWVzLmFwcGVuZFJhbmdlKGl0LT52YWx1ZS5iZWdpbigpLCBpdC0+dmFsdWUuZW5kKCkp
OwogCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIFZl
Y3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiBnZXRFbnRyeVNlcXVlbmNlQnlOYW1lKGNv
bnN0IFBlcmZvcm1hbmMKIAogICAgIFBlcmZvcm1hbmNlRW50cnlNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcGVyZm9ybWFuY2VFbnRyeU1hcC5maW5kKG5hbWUpOwogICAgIGlmIChpdCAhPSBwZXJm
b3JtYW5jZUVudHJ5TWFwLmVuZCgpKQotICAgICAgICBlbnRyaWVzLmFwcGVuZChpdC0+dmFsdWUp
OworICAgICAgICBlbnRyaWVzLmFwcGVuZFJhbmdlKGl0LT52YWx1ZS5iZWdpbigpLCBpdC0+dmFs
dWUuZW5kKCkpOwogCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggMGY0NTdkMTM0ZTk0NGQ1Zjk5NzEwMTYxMzZjZDUzMWEx
MjI1MDJkZS4uZDI2MTRiODcwMjRiZjQyNmE5NGY4NDE4ZDE1N2E2ZTJjYzBlYTliZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtMTAzLDggKzEwMyw4IEBAIFZl
Y3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGluZ3M6OmFjY2VwdFR5cGVzKCkgY29uc3QKIHsK
ICAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRUeXBlczsKICAgICBhY2NlcHRUeXBlcy5yZXNlcnZl
Q2FwYWNpdHkoYWNjZXB0TUlNRVR5cGVzLnNpemUoKSArIGFjY2VwdEZpbGVFeHRlbnNpb25zLnNp
emUoKSk7Ci0gICAgYWNjZXB0VHlwZXMuYXBwZW5kKGFjY2VwdE1JTUVUeXBlcyk7Ci0gICAgYWNj
ZXB0VHlwZXMuYXBwZW5kKGFjY2VwdEZpbGVFeHRlbnNpb25zKTsKKyAgICBhY2NlcHRUeXBlcy5h
cHBlbmRSYW5nZShhY2NlcHRNSU1FVHlwZXMuYmVnaW4oKSwgYWNjZXB0TUlNRVR5cGVzLmVuZCgp
KTsKKyAgICBhY2NlcHRUeXBlcy5hcHBlbmRSYW5nZShhY2NlcHRGaWxlRXh0ZW5zaW9ucy5iZWdp
bigpLCBhY2NlcHRGaWxlRXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVz
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHAKaW5kZXggNWQ3NzZhZGQ4YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTVi
Yi4uY2RjYzQ5ZGEwOTk2NWJhODM3Y2Q0OTllY2E1MWQwYjY1ZGMwYTFkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVj
dG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBh
cmF0b3JJbmRleCsrOwogICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBh
cmF0b3Iuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0g
ICAgICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAg
ICAgICAgICAgIGNodW5rLmFwcGVuZFJhbmdlKG1fc2VwYXJhdG9yLmJlZ2luKCksIG1fc2VwYXJh
dG9yLmVuZCgpKTsKICAgICAgICAgICAgICAgICBtX3NlcGFyYXRvckluZGV4ID0gMDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBjNTIzODU4MGI5MTlm
ZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNmLi41YjE0MDVhMzYzMGE0OTgzMjcxOGE2ZDg0NGQ3
NmIxYzA2YmFlNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVzOwogICAgICAgICBlbmdp
bmVzW2ldLT5nZXRTaXRlc0luTWVkaWFDYWNoZShlbmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVz
LmFwcGVuZChlbmdpbmVTaXRlcyk7CisgICAgICAgIHNpdGVzLmFwcGVuZFJhbmdlKGVuZ2luZVNp
dGVzLmJlZ2luKCksIGVuZ2luZVNpdGVzLmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCAxMmE0Nzg5Yzg5YTRjYWYwNTQzNjc3YzgzNGM0MWVkNDJhY2ExYzIzLi45ODA5Yjc4YWM3
ZjBmZGNjYjU1ZWYyODc4ZDhjMjk3OWRiZmEzMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzAsNyAr
MTMwLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogICAg
IHVuc2lnbmVkIHNpemUgPSBkaXJ0eVRpbGVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4g
PSAwOyBuIDwgc2l6ZTsgKytuKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBwYWludGVkUmVj
dHMgPSBkaXJ0eVRpbGVzW25dLT51cGRhdGVCYWNrQnVmZmVyKCk7Ci0gICAgICAgIHBhaW50ZWRB
cmVhLmFwcGVuZChwYWludGVkUmVjdHMpOworICAgICAgICBwYWludGVkQXJlYS5hcHBlbmRSYW5n
ZShwYWludGVkUmVjdHMuYmVnaW4oKSwgcGFpbnRlZFJlY3RzLmVuZCgpKTsKICAgICAgICAgZGly
dHlUaWxlc1tuXS0+c3dhcEJhY2tCdWZmZXJUb0Zyb250KCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCBlMDIyZmUyN2IwYzM0YzhiMDE3N2M5ZGFiYzc1YWI5ZmI3YzZjZjI3Li4zZTZjNWVh
ZmQyMmU1NjA0OGYyODM4OWRjYjQ2OWNlZGUyYWYxOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEy
ODQsNyArMTI4NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdWJsYXllckxpc3Qo
Ym9vbCBtYXhMYXllckRlcHRoUmVhY2hlZCkKICAgICBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBjaGls
ZExpc3RGb3JTdWJsYXllcnMgPSBtX3N0cnVjdHVyYWxMYXllciA/IHN0cnVjdHVyYWxMYXllckNo
aWxkcmVuIDogcHJpbWFyeUxheWVyQ2hpbGRyZW47CiAKICAgICBpZiAoY3VzdG9tU3VibGF5ZXJz
KQotICAgICAgICBwcmltYXJ5TGF5ZXJDaGlsZHJlbi5hcHBlbmQoKmN1c3RvbVN1YmxheWVycyk7
CisgICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZFJhbmdlKGN1c3RvbVN1YmxheWVy
cy0+YmVnaW4oKSwgY3VzdG9tU3VibGF5ZXJzLT5lbmQoKSk7CiAKICAgICBpZiAobV9zdHJ1Y3R1
cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0OGQzZWJhNTFkNGQ3NmFmNDZm
N2Y0YWNmODYyYzI5NjkxOTMwNTZmLi4yZmM5Zjc1OTA4ZGY1ZWE2NjM0YTk3ZTliZjk1ZjZjN2Fj
ZjdhOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gc2VsZWN0aW9uUGFzdGVi
b2FyZFR5cGVzKGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIGJvb2wgcwogICAgIHJldHVybiB0
eXBlczsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JV
UkwoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JVUkwoKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIApAQCAtMTA2LDcgKzEwNiw4IEBAIHN0YXRpYyBp
bmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBW
ZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICAKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElG
RlBib2FyZFR5cGUpKTsKLSAgICB0eXBlcy5hcHBlbmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsK
KyAgICBmb3IgKGNvbnN0IFN0cmluZyYgdHlwZTogd3JpdGFibGVUeXBlc0ZvclVSTCgpKQorICAg
ICAgICB0eXBlcy5hcHBlbmQodHlwZSk7CiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1JURkRQ
Ym9hcmRUeXBlKSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQpAQCAtMTE0LDcgKzExNSw4IEBAIHN0
YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkK
IHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHR5cGVzLmFwcGVuZChjcmVhdGVXcml0YWJsZVR5cGVz
Rm9ySW1hZ2UoKSk7CisgICAgZm9yIChjb25zdCBTdHJpbmcmIHR5cGU6IGNyZWF0ZVdyaXRhYmxl
VHlwZXNGb3JJbWFnZSgpKQorICAgICAgICB0eXBlcy5hcHBlbmQodHlwZSk7CiAgICAgcmV0dXJu
IHR5cGVzOwogfQogCkBAIC0xODcsNyArMTg5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNl
bGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGIK
ICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKICAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gPiBjbGllbnREYXRhOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmdl
dENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJh
bmdlKCkuZ2V0KCksIGNsaWVudFR5cGVzLCBjbGllbnREYXRhKTsKLSAgICB0eXBlcy5hcHBlbmQo
Y2xpZW50VHlwZXMpOworICAgIHR5cGVzLmFwcGVuZFJhbmdlKGNsaWVudFR5cGVzLmJlZ2luKCks
IGNsaWVudFR5cGVzLmVuZCgpKTsKIAogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2Fy
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1
aWxkZXIuY3BwCmluZGV4IDU2N2JkNjBiOTk3NDkyNzE0M2JlMmJkYTIyMDM3OGNmNjk1N2U2OTMu
Ljk2NzAzY2RhNTE0NzA1OTE4YmNhM2E3YTRhNjQ2OGI0MWI3OGM1ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBWZWN0b3I8Y2hhcj4gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1
ZUJvdW5kYXJ5U3RyaW5nKCkKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5kKGFscGhhTnVtZXJp
Y0VuY29kaW5nTWFwW3JhbmRvbW5lc3MgJiAweDNGXSk7CiAgICAgfQogCi0gICAgYm91bmRhcnku
YXBwZW5kKHJhbmRvbUJ5dGVzKTsKKyAgICBib3VuZGFyeS5hcHBlbmRSYW5nZShyYW5kb21CeXRl
cy5iZWdpbigpLCByYW5kb21CeXRlcy5lbmQoKSk7CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAv
LyBBZGQgYSAwIGF0IHRoZSBlbmQgc28gd2UgY2FuIHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJp
bmcuCiAgICAgcmV0dXJuIGJvdW5kYXJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcAppbmRleCA0ZDBmZmJlYzNmMTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3
NGFiLi5mY2UwNTk1OWFkNzE1ZGE4Mzg3NGJmNzQxNDk3ZjM1MzA5ODEzN2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQog
ICAgIFZlY3RvcjxTdHJpbmc+IG1velBhdGhzOwogICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigi
TU9aX1BMVUdJTl9QQVRIIikpOwogICAgIG1velBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxs
b3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIG1velBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96
UGF0aHMpOworICAgIHBhdGhzLmFwcGVuZFJhbmdlKG1velBhdGhzLmJlZ2luKCksIG1velBhdGhz
LmVuZCgpKTsKICNlbGlmIGRlZmluZWQoWFBfTUFDT1NYKQogICAgIFN0cmluZyB1c2VyUGx1Z2lu
UGF0aCA9IGhvbWVEaXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0
cmluZygiL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMiKSk7CkBAIC00NDUsNyArNDQ1LDcgQEAg
VmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3Rvcmllcygp
CiAgICAgVmVjdG9yPFN0cmluZz4gcXRQYXRoczsKICAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYo
IlFUV0VCS0lUX1BMVUdJTl9QQVRIIikuY29uc3REYXRhKCkpOwogICAgIHF0UGF0aC5zcGxpdChV
Q2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcXRQYXRocyk7Ci0gICAg
cGF0aHMuYXBwZW5kKHF0UGF0aHMpOworICAgIHBhdGhzLmFwcGVuZFJhbmdlKHF0UGF0aHMuYmVn
aW4oKSwgcXRQYXRocy5lbmQoKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXRoczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5k
ZXggNzAyYzRhN2E3NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uZTZjMWM4MmVjZTU0
OTlhYjZlYWI5MDNhODI1YmE0OGI5N2EzNTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlk
aVJlc29sdmVyJiB0b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55
IG5lc3RlZCBpc29sYXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0
b3AgcmVzb2x2ZXIncyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlz
b2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0
b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRl
ZFJ1bnMoKSk7CisgICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRS
YW5nZShpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmJlZ2luKCksIGlzb2xhdGVkUmVz
b2x2ZXIuaXNvbGF0ZWRSdW5zKCkuZW5kKCkpOwogICAgICAgICAgICAgaXNvbGF0ZWRSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhM2E0
OTExYzNhOTUxMDY2MzliZDY0ZDU3NjZhNDIyYTU0NTYyYzI3Li42OTZmOTgzZjQ0NTlkZWRlZjIx
YzQxNTMzNzg0NzQzYTUxNzRlOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgbV9v
dmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kKG1fb3ZlcmxhcFN0
YWNrLmxhc3QoKSk7CisgICAgICAgIG1fb3ZlcmxhcFN0YWNrW21fb3ZlcmxhcFN0YWNrLnNpemUo
KSAtIDJdLmFwcGVuZFJhbmdlKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKS5iZWdpbigpLCBtX292ZXJs
YXBTdGFjay5sYXN0KCkuZW5kKCkpOwogICAgICAgICBtX292ZXJsYXBTdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCmluZGV4IDNkNTEyOTNkMTJjMmM4OGUzMGI4MzBlYWZmODZhYTc3OWJiOGU5MWEu
LmY1YmIxN2NmZTI1MmU3ZjI3MGFlYzFjMDlkY2E5NzRlM2VhNDM0M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xMzIyLDcgKzEz
MjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1bW4odW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlkW3Jvd10ucm93OwogICAg
ICAgICByLmluc2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAgICAgICBpZiAocltwb3Nd
Lmhhc0NlbGxzKCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kKHJbcG9z
XS5jZWxscyk7CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFwcGVuZFJhbmdlKHJbcG9z
XS5jZWxscy5iZWdpbigpLCByW3Bvc10uY2VsbHMuZW5kKCkpOwogICAgICAgICAgICAgUmVuZGVy
VGFibGVDZWxsKiBjZWxsID0gcltwb3NdLnByaW1hcnlDZWxsKCk7CiAgICAgICAgICAgICBBU1NF
UlQoY2VsbCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbC0+Y29sU3BhbigpID49IChyW3Bvc10u
aW5Db2xTcGFuID8gMXUgOiAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCmluZGV4IDkyOTQ1
MjY5NjU5MWQ3YTcwYjRiMWE3N2ViMDQ2N2M3MmRkMzg0NDIuLmViY2ZhY2E5ZDczZTQzNWU0ZTgx
ODgzNmI2NjdlNWIzMTdhNWJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCkBAIC0xMjQs
NyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEdseXBoTWFwTm9kZT4gbm9k
ZSA9IGN1cnJlbnRMYXllci0+Z2V0KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoIW5vZGUp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBnbHlwaHMuYXBwZW5kKG5vZGUt
PmdseXBocyk7CisgICAgICAgICAgICBnbHlwaHMuYXBwZW5kUmFuZ2Uobm9kZS0+Z2x5cGhzLmJl
Z2luKCksIG5vZGUtPmdseXBocy5lbmQoKSk7CiAgICAgICAgICAgICBjdXJyZW50TGF5ZXIgPSAm
bm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0b3IuYWR2YW5jZShjbHVzdGVy
TGVuZ3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
Tm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCmluZGV4IGJjNzY3
ZDVjMzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjEwNmU4NTAyMmMyNTkxNjJlZTY1
YTE1ODZiMmFmYmViZWVjOTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKQEAgLTUw
LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLy8gTm9kZVNldCBp
dHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJlIHVuaXF1ZS4KICAgICAg
ICAgICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rlcy5hcHBlbmQobm9kZSk7IH0K
ICAgICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkgeyBtX25vZGVz
LmFwcGVuZChub2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgTm9kZVNldCYg
bm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9kZXMpOyB9CisgICAgICAgICAg
ICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kUmFu
Z2Uobm9kZVNldC5tX25vZGVzLmJlZ2luKCksIG5vZGVTZXQubV9ub2Rlcy5lbmQoKSk7IH0KIAog
ICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2V0J3MgZmlyc3Qgbm9kZSBpbiBkb2N1bWVudCBv
cmRlciwgb3IgMCBpZiB0aGUgc2V0IGlzIGVtcHR5LgogICAgICAgICAgICAgTm9kZSogZmlyc3RO
b2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAyZTMwYmNiNzg3ZTI2
MjE1NmQ2MGE5OWQzNzllOTM4YTE1MjJhNzg1Li43ZDhhNWM5YzNmMGIzOGNmN2MzOWI2MTlhNWU3
MTdjMDY4YzMxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTU1LDggKzU1LDEw
IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zID0gbmV3U2FuZGJveEV4dGVuc2lvbnM7CiAgICAg
Y29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMgPSBkYXRhLT5pdGVtcygpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBjb3VudCA9IGl0ZW1zLnNpemUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAg
ICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpCbG9iKQotICAgICAgICAg
ICAgc2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1z
W2ldLnVybC5zdHJpbmcoKSkpOworICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0
YUl0ZW06OkJsb2IpIHsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IG1fc2FuZGJveEV4
dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSk7CisgICAgICAgICAgICBleHRlbnNp
b25zLmFwcGVuZFJhbmdlKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJs
LCBkYXRhKTsKQEAgLTEwNyw3ICsxMDksNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAg
IG1fYmxvYnNGb3JDb25uZWN0aW9uLnJlbW92ZShjb25uZWN0aW9uKTsKIH0KIAotY29uc3QgVmVj
dG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zYW5kYm94RXh0
ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXgg
NTJkMmRmOWMxOTg5MjkzYTEwMzY1Yjk0ODY0NTFhMWFkODY5NzFhNS4uNjdkMGNjZmVjZWYwOThl
MDUzNmQ2MzY1NzhhYTQyZjg5MTIwYmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlk
Q2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gc2FuZGJv
eEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKaW5kZXggOWQ0NmY3NDhiZjRjMjBmYzY5ZjYw
YTVhNzU2ZGE2ZGEwMmFmNWNiNS4uMDJhNzAyOGVkMmM2Y2M5YjNkZTMyZTk1YzQ1ODY1MmQzZDMx
ZDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxh
YmxlTG9hZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1
bGFibGVMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZQog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRy
PFNhbmRib3hFeHRlbnNpb24+ID4gYmxvYkVsZW1lbnRFeHRlbnNpb25zID0gTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6c2hhcmVkKCkuc2FuZGJveEV4dGVuc2lvbnMoZWxlbWVudHNbaV0ubV91cmwpOwot
ICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoYmxv
YkVsZW1lbnRFeHRlbnNpb25zKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RCb2R5U2FuZGJv
eEV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoYmxvYkVsZW1lbnRFeHRlbnNpb25zLmJlZ2luKCksIGJs
b2JFbGVtZW50RXh0ZW5zaW9ucy5lbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApp
bmRleCA3YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2ViODQ5Li5iZmVhZTMxNDkz
NGZkMTllOTVmNWNlMWRlNzdlNjc4ZTQ1MTg4OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIENv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiog
YWxsb3dlZENvbm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0QmFjay5pc0VtcHR5KCkp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBtX21lc3Nh
Z2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQobWVzc2FnZXNUb1B1
dEJhY2spOworICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNS
ZXBseS5hcHBlbmRSYW5nZShtZXNzYWdlc1RvUHV0QmFjay5iZWdpbigpLCBtZXNzYWdlc1RvUHV0
QmFjay5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBk
NGM5ZWMyYzVmMmU1MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi40NzMzMmYwZjk0YzVhYWQy
OWY3Yjk0YmFiMTRiYzlmYTlkNTJlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGly
ZWN0b3JpZXMoKQogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6
JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQocGF0aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kUmFuZ2UocGF0aHMuYmVnaW4o
KSwgcGF0aHMuZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzEyYjlkNzAyMjM5YmI5
ZTE3NTUxYWIzY2RjMzczOTI1Nzc5ZmRhMS4uNjUzZTI2MDQxOGNhMzYyMTczYWUzZGI5YjgyN2Fj
ODM2MDQyM2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBvdmVy
bG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06Cisg
ICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
OgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKwogMjAxMy0w
NS0wMiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IGEgc3RhbGUgc2NyaXB0IGZpbGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDM1M2VhOGQ2N2M5M2Q5Njk2M2Qx
YWFiNDg1YTJkYWVhNGRmZTY1MDcuLjJiNjI3YmNjZjllYTQxNzUyMDJkNmY3NmRkODViMmYxMmI1
YzQ1MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIEpTU3RyaW5nUmVm
IGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJp
bmcqIHYKIAogICAgIFZlY3RvcjxVbmlDaGFyPiB2YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7
CiAgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFsdWVCdWZmZXIuZGF0YSgpXTsKLSAgICBidWZm
ZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKyAgICBidWZmZXIuYXBwZW5kUmFuZ2UodmFsdWVCdWZm
ZXIuYmVnaW4oKSwgdmFsdWVCdWZmZXIuZW5kKCkpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4YTk1NTFjODVmYThh
ODdiZGU0MDVhMzk3YWY1ZTgwMjBlOGI5OTE2Li45NWNmYWU4Y2Y0NzNiZjQyNzg1YzQyMWEwZjky
ZmVmMjA1ODU5Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVj
dG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0
Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVC
dWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1
ZUJ1ZmZlci5lbmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200428</attachid>
            <date>2013-05-03 09:59:27 -0700</date>
            <delta_ts>2013-05-03 10:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130503095841.patch</filename>
            <type>text/plain</type>
            <size>51332</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uOGZiOWVkNWRmOWEwYWZjN2YwYWQzYzQyNjllNTRkZjI0ZGRjYmYxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKQEAgLTExOTAs
OCArMTE5MSw4IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhCiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLnBy
aW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKLSAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CisgICAgYXBwZW5kVmVjdG9yKGRhdGEs
IGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOworICAgIGFwcGVuZFZl
Y3RvcihkYXRhLCBhcHBlbmQocmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkpKTsKIAogICAg
IGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwgZGF0YSk7CiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuY3BwCmluZGV4IDcyNDA1NTJiMTZkM2MzODJmNWQwY2QwNDMxMWEyMzZiYmI5
OWNiMWMuLjhmODkzNDgyMzc3ZTMwMDc2ZDAyNDg2ZWI3OGNkOTkxNzEzYTZiOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2Rpbmcu
Y3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgU3RyaW5nIGRlY29kZVN0cmluZyhjb25zdCBjaGFyKiBz
dGFydCwgY29uc3QgY2hhciogZW5kKQogVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZ1dpdGhMZW5n
dGgoY29uc3QgU3RyaW5nJiBzKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBlbmNvZGVWYXJJ
bnQocy5sZW5ndGgoKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmcocykpOworICAgIGFw
cGVuZFZlY3RvcihyZXQsIGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYga2V5LCBW
ZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAgICAgY2FzZSBJREJL
ZXk6OkludmFsaWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlO
dWxsVHlwZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZUJ5dGUoSURC
S2V5TnVsbFR5cGVCeXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6QXJy
YXlUeXBlOiB7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5QXJyYXlUeXBl
Qnl0ZSkpOwpAQCAtNDQxLDggKzQ0MSw4IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElEQktl
eSYga2V5LCBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3VzU2l6
ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgot
ICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7Ci0g
ICAgICAgIGludG8uYXBwZW5kKGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKKyAgICAgICAg
YXBwZW5kVmVjdG9yKGluZm8sIGVuY29kZUJ5dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAg
ICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlvdXNT
aXplID09IDkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEzNSwyMSArMTEzNSwyMSBA
QCBLZXlQcmVmaXg6OlR5cGUgS2V5UHJlZml4Ojp0eXBlKCkgY29uc3QKIFZlY3RvcjxjaGFyPiBT
Y2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQ
cmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKFNjaGVtYVZl
cnNpb25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoU2NoZW1h
VmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogVmVjdG9yPGNoYXI+IE1h
eERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVBy
ZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoTWF4RGF0YWJh
c2VJZFR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShNYXhEYXRh
YmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4gRGF0
YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZp
eDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25U
eXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoRGF0YVZlcnNpb25U
eXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTExODAsOCArMTE4MCw4IEBAIGNv
bnN0IGNoYXIqIERhdGFiYXNlRnJlZUxpc3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwg
Y29uc3QgY2hhciogbGltaXQsIERhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VGcmVlTGlzdEtleTo6
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5
UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhYmFz
ZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChkYXRhYmFz
ZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVMaXN0
VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoZGF0YWJhc2VJ
ZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0IGNo
YXIqIERhdGFiYXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFy
KiBsaW1pdCwgRGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFZl
Y3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVu
ZChlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5n
V2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVC
eXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCBlbmNvZGVT
dHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVN0
cmluZ1dpdGhMZW5ndGgoZGF0YWJhc2VOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTI1NSw3ICsxMjU1LDcgQEAgVmVjdG9yPGNoYXI+IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29k
ZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSBtZXRhRGEKIHsKICAgICBLZXlQcmVm
aXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5j
b2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOworICAgIGFw
cGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KIApAQCAtMTI5NCw5ICsxMjk0LDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0
YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsK
ICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQg
PSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3Jl
TWV0YURhdGFUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0
b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAg
YXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUp
KTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwor
ICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0
dXJuIHJldDsKIH0KIApAQCAtMTM2OSwxMCArMTM2OSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhN
ZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNo
YXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5k
ZXhNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0
U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlQnl0ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZlY3RvcihyZXQs
IGVuY29kZVZhckludChpbmRleElkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0
ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDMyLDggKzE0MzIs
OCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0
YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZlY3Rv
cihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1cm4g
cmV0OwogfQogCkBAIC0xNDg5LDkgKzE0ODksOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVlTGlz
dEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAog
ewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJl
dCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhGcmVl
TGlzdFR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJ
ZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBlbmRW
ZWN0b3IocmV0LCBlbmNvZGVCeXRlKEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIGFwcGVu
ZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVj
dG9yKHJldCwgZW5jb2RlVmFySW50KGluZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBA
IC0xNTQ1LDggKzE1NDUsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVC
eXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3Jl
TmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1l
c1R5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nV2l0aExlbmd0
aChvYmplY3RTdG9yZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTg4LDkgKzE1
ODgsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogewogICAgIEtleVByZWZpeCBwcmVmaXgo
ZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7Ci0gICAgcmV0
LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBl
bmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQs
IGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5j
b2RlU3RyaW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBA
IC0xNjIwLDcgKzE2MjAsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNv
ZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoS2V5UHJlZml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcikpOwogICAgIFZlY3RvcjxjaGFyPiBy
ZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7Cisg
ICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFVzZXJLZXkpOwogCiAgICAgcmV0dXJuIHJldDsK
IH0KQEAgLTE2NjIsNyArMTY2Miw3IEBAIFZlY3RvcjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjCiB7CiAgICAg
S2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNo
YXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRLZXkpOwor
ICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRLZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTE3MzMsOSArMTczMyw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleERhdGFLZXk6OmVuY29kZShp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50CiB7CiAgICAgS2V5
UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKTsKICAgICBW
ZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2Rl
ZFVzZXJLZXkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVyKSk7
Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkUHJpbWFyeUtleSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlZFVzZXJLZXkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChz
ZXF1ZW5jZU51bWJlcikpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRQcmltYXJ5S2V5
KTsKICAgICByZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggNTYxOTdmNjc3MDc2MzBiODFkMWIw
YTlkYmJmYzVhNzY4MDQ0YjkxNS4uMDFiOTNmN2MyNjQxMGYyYTU5ZjYzNTg1ZjFjYzQxOTJlYWE2
MDdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaApAQCAtNDcsNiArNDcsMTQgQEAgY29uc3QgdW5zaWduZWQgY2hhciBNaW5p
bXVtSW5kZXhJZCA9IDMwOwogLy8gdG8gcmVkdWNlIHRoZSBtZW1vcnkgcmUtYWxsb2NhdGlvbnMg
d2hlbiB0aGUgVmVjdG9ycyBhcmUgYXBwZW5kZWQuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IERlZmF1
bHRJbmxpbmVCdWZmZXJTaXplID0gMzI7CiAKKy8vIEZJWE1FOiBBbGwgdGhlc2UgZW5jb2RlIGZ1
bmN0aW9ucyBzaG91bGQgYmUgY2hhbmdlZCB0byBlbmNvZGUgaW50byBhIHZlY3RvciBpbnN0ZWFk
IG9mIHJldHVybmluZyB0ZW1wb3Jhcmllcy4KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5Pgorc3RhdGljIHZvaWQgYXBwZW5kVmVjdG9yKFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eT4mIGRlc3QsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc3JjKQoreworICAgIGRlc3Qu
YXBwZW5kUmFuZ2Uoc3JjLmJlZ2luKCksIHNyYy5lbmQoKSk7Cit9CisKIFZlY3RvcjxjaGFyPiBl
bmNvZGVCeXRlKHVuc2lnbmVkIGNoYXIpOwogY29uc3QgY2hhciogZGVjb2RlQnl0ZShjb25zdCBj
aGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgdW5zaWduZWQgY2hhciYgZm91bmRDaGFyKTsKIFZl
Y3RvcjxjaGFyPiBtYXhJREJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcyNjZlYjc5NGIwZThlZDBiZjUxNmUzYjc1
MmY2YTc4MmNiYzYyLi42M2U1ZWZjMzQ1MTZjMzdlMTFiNGZjZjA5NThiNDg0MTg2OGIxOGQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKICAgICAvLyBB
dWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlvbiBh
Y3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAgICBkbyB7CiAgICAgICAgIGRlbGV0ZU1h
cmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uZW5k
KCkpOwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9IHdo
aWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1cmUg
dG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBpZiAo
bV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVk
KSB7Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0
aW9uKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFJhbmdlKG1fbm9kZXNNYXJrZWRG
b3JEZWxldGlvbi5iZWdpbigpLCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uZW5kKCkpOwogICAg
ICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lzRGVs
ZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRiZGRm
MWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLmM4NmE4MzUwYmM4MDQ3Zjk0NTY4YTY3OGE1NTIyODYz
Y2JmZTVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxk
LCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRSYW5nZShy
b3ctPmNoaWxkcmVuKCkuYmVnaW4oKSwgcm93LT5jaGlsZHJlbigpLmVuZCgpKTsKIAogICAgIGFw
cGVuZGVkUm93cy5hZGQocm93KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFmYWI1
ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3OTYwYjYxLi5lMzk0YWZkZGI1MDg3ODA3ZTg5ZWQw
ODlhZWFkYmFiMmY3ODdmMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAg
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFuZ2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCksIHJv
dy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93cy5h
ZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY3LDEwICs0NjcsOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJgogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKICAgICBpbnQg
bnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnVt
Um93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0No
aWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFwcGVuZChy
b3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJvd3M7
ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRSYW5nZShtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4o
KS5iZWdpbigpLCBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKS5lbmQoKSk7CiB9CiAgICAgCiB1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2ZTAu
LjhiNDU3YjQzZGNkMjBmMTgxNjdiZTcxMGZkM2U2ZDJjNTY3N2I5ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojph
ZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIGVuZCA9IG90aGVyLmF0dHJzSW5S
dWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CiAgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBwZW5k
KG90aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQo
b3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisgICAgc2libGluZ1J1bGVzLmFwcGVuZFJh
bmdlKG90aGVyLnNpYmxpbmdSdWxlcy5iZWdpbigpLCBvdGhlci5zaWJsaW5nUnVsZXMuZW5kKCkp
OworICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kUmFuZ2Uob3RoZXIudW5jb21tb25B
dHRyaWJ1dGVSdWxlcy5iZWdpbigpLCBvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmVuZCgp
KTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3RoZXIu
dXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdXNlc0JlZm9y
ZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjk1Mjc5M2U3ZTIyYWE1ZWEwMzY2Yzg1ZDgyZTc0
YTQ0OWE2NGUyYy4uNTkwNDIwZDE0YjFmMDdmYzM3ZDMwZTZlZGNhNjA5NTM1ZWQ4ZTUxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3ICsxODI3LDcgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwogICAgIE1hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3BlcnRp
ZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKKyAgICBjYWNoZUl0ZW0u
bWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kUmFuZ2UobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRp
ZXMuYmVnaW4oKSwgbWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuZW5kKCkpOwogICAgIGNh
Y2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0IHdl
IGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5IGJl
IGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNoZSBp
cyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVz
ZWQgYXMtaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMwMWM5MjI0YWIwMTgwY2VmY2I5M2Fh
YTYxNy4uZWI5NDhkOTg2YWU4ZmM5YjljZDg3Yzc4OWFlMWMwODFjYWQzOThlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApA
QCAtNDQxLDcgKzQ0MSw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0
c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsCiAgICAgSFRNTElGcmFt
ZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1sZXNzUGFyZW50
SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIHNoZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCktPnN0
eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworCisgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cyA9IHNlYW1sZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpOworICAgIHNoZWV0cy5hcHBlbmRSYW5n
ZShhY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5iZWdpbigpLCBhY3RpdmVBdXRob3JTdHlsZVNoZWV0
cy5lbmQoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRl
QWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnKQpAQCAtNDYyLDggKzQ2NCw4
IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVT
aGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRz
KGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
PiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmQo
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5h
cHBlbmQoZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBhY3RpdmVDU1NTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwgaW5q
ZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKKyAgICBhY3RpdmVDU1NTdHlsZVNoZWV0
cy5hcHBlbmRSYW5nZShkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkuYmVnaW4oKSwgZG9jdW1l
bnRBdXRob3JTdHlsZVNoZWV0cygpLmVuZCgpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVT
aGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3VtZW50
KTsKICAgICBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMs
IGFjdGl2ZVN0eWxlU2hlZXRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggNmQ4Y2Q2MmQ3MTI5
ZDgyMmU2OTJhNTkzZDUzNDcyN2JhOGQ3MTc5ZS4uYjA3NTA2ZmYxMGEwYTNmZmI4MzQ3NTk0ZGNh
NDBhZDdjMmQ2OThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xOTI3LDcgKzE5MjcsNyBAQCB2
b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
KSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0ZVF1
YWRzKGVsZW1lbnRRdWFkcyk7CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5hZGp1
c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShlbGVtZW50
UXVhZHMsIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFw
cGVuZChlbGVtZW50UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFJhbmdlKGVs
ZW1lbnRRdWFkcy5iZWdpbigpLCBlbGVtZW50UXVhZHMuZW5kKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0b1RleHQobm9kZSktPnJlbmRlcmVyKCkpIHsKQEAg
LTE5MzksNyArMTkzOSw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVuZGVyVGV4dC0+
YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7
CiAgICAgICAgICAgICAgICAgbV9vd25lckRvY3VtZW50LT5hZGp1c3RGbG9hdFF1YWRzRm9yU2Ny
b2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSh0ZXh0UXVhZHMsIHJlbmRlclRleHQpOwog
Ci0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKHRleHRRdWFkcyk7CisgICAgICAgICAgICAg
ICAgcXVhZHMuYXBwZW5kUmFuZ2UodGV4dFF1YWRzLmJlZ2luKCksIHRleHRRdWFkcy5lbmQoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggMDljYzI4NzQ0MTgxMDM5MDk4MTE4MzQz
OTI4NDUzNGEzMjVkMmI2My4uNzU4OTNhNTUyZjI4MGFmOGZjMWUwZDYwOGUwNmY0YTU2ZTRhZjE3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApA
QCAtNjgxLDcgKzY4MSw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5nCiAgICAgICAgIGlmIChy
ZXN1bHRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdHMuc3dhcChzcGVsbGluZ1Jlc3Vs
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNwZWxsaW5nUmVz
dWx0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kUmFuZ2Uoc3BlbGxpbmdSZXN1bHQuYmVn
aW4oKSwgc3BlbGxpbmdSZXN1bHQuZW5kKCkpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3ZmI1OWJmMzBmOWE1ODQ3
YjQ1YjNjNGZkMzBiNzAxLi43NGJjOTdkOTQyZWRiMjk1NDJhMDQ0YzcwMTMyZWZkOTY1ZjAzMWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNTEwLDggKzUxMCwx
MCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdAogICAgIFZlY3RvcjxTdHJpbmc+IHRvUmV0dXJu
OwogICAgIFNhdmVkRm9ybVN0YXRlTWFwIG1hcDsKICAgICBmb3JtU3RhdGVzRnJvbVN0YXRlVmVj
dG9yKHN0YXRlVmVjdG9yLCBtYXApOwotICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAg
ICAgdG9SZXR1cm4uYXBwZW5kKGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpKTsK
KyAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdp
bigpLCBlbmQgPSBtYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0b3I8
U3RyaW5nPiByZWZlcmVuY2VkRmlsZVBhdGhzID0gaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmls
ZVBhdGhzKCk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZFJhbmdlKHJlZmVyZW5jZWRGaWxlUGF0
aHMuYmVnaW4oKSwgcmVmZXJlbmNlZEZpbGVQYXRocy5lbmQoKSk7CisgICAgfQogICAgIHJldHVy
biB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTliYzk1MGNhZDNiZGRhODkyYTRk
ZGQ3MDUxMTgwOTNmYThlMDc4Yy4uOTkyZTRiNzA4ZGQ5MzQ3MTViMWU4ZDI4Mzk4ZGFiNzBlMWE2
Y2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gpCiAg
ICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gY29waWVzIHRoZSBk
YXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAgICAg
aWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5lRGFz
aC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2guYXBw
ZW5kUmFuZ2UoZGFzaC5iZWdpbigpLCBkYXNoLmVuZCgpKTsKIAogICAgIGFwcGx5TGluZURhc2go
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdC5jcHAKaW5kZXggZjZmOWEyOGIxNGFhNzE3NDIyYmVkMTM4ODMyMjll
MWEyNjBlMzAwMC4uNzg1NzQzM2I2ZDZkOWNhODAxMTU5OTI3ZWQ4OWRjNzlmNjE5Yzc0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEhUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KEhUTUxTdGFja0l0
ZQogICAgIGlmIChjYW5kaWRhdGVzLnNpemUoKSA8IGtOb2Foc0Fya0NhcGFjaXR5KQogICAgICAg
ICByZXR1cm47IC8vIFRoZXJlJ3Mgcm9vbSBmb3IgdGhlIG5ldyBlbGVtZW50IGluIHRoZSBhcmsu
IFRoZXJlJ3Mgbm8gbmVlZCB0byBjb3B5IG91dCB0aGUgcmVtYWluaW5nQ2FuZGlkYXRlcy4KIAot
ICAgIHJlbWFpbmluZ0NhbmRpZGF0ZXMuYXBwZW5kKGNhbmRpZGF0ZXMpOworICAgIHJlbWFpbmlu
Z0NhbmRpZGF0ZXMuYXBwZW5kUmFuZ2UoY2FuZGlkYXRlcy5iZWdpbigpLCBjYW5kaWRhdGVzLmVu
ZCgpKTsKIH0KIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fy
a0NvbmRpdGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW4uaAppbmRleCA1NDI0YmQxNDZjMGFhYmIyYjY5MGE5ZWFhYjAyMjlmOTdjMDhi
MTIzLi5mOTQ4Zjk2YWQ0MWIxNmY0NjJiYzA2YzM3YjJjM2E5MWI0NTFhOTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjc3LDcgKzI3Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVzLmNs
ZWFyKCk7CiAKLSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICAg
ICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5lbmQo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQpAQCAtMzk4LDcgKzM5OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hh
ciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFy
YWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgICAg
ICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVuZCgp
KTsKICAgICB9CiAKICAgICAvKiBDb21tZW50IFRva2VucyAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRUb2tlbi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5MzFj
MDZlNDg5NDcuLmZhN2FmM2Q2ZWE3YjBmN2MwNzliMTMwNDNjNWRkMTA0OTllZjRjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4m
IGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNoYXJh
Y3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgICAg
IG1fZGF0YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5kKCkp
OwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5FbXB0eVN0YXJ0VGFnKCkKQEAgLTE0OSw3ICsxNDks
NyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwog
ICAgICAgICBpZiAoIW1fY2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNzZXMu
YXBwZW5kKCcgJyk7Ci0gICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVyKTsK
KyAgICAgICAgbV9jbGFzc2VzLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigpLCBt
X2N1cnJlbnRCdWZmZXIuZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIoKTsK
ICAgICB9CiAgICAgCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1fYW5ub3RhdGlvbi5j
bGVhcigpOwotICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7Cisg
ICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmRSYW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4oKSwg
bV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZUVudHJ5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0
LmNwcAppbmRleCAwYThjYzZhYjk5OWYzY2QxZTZiMWNmYWUwYWViMjNjZDhhZTM2OTQ3Li45Nzg1
NTk3Mjg2ZmZmZmU2MGY5NGI0OGQ5YjM4ZDNjNDQ3ZDYzNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFBl
cmZvcm1hbmNlRW50cnlMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiBl
bnRyeSkKIAogdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5kQWxsKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiYgZW50cmllcykKIHsKLSAgICBtX2VudHJpZXMu
YXBwZW5kKGVudHJpZXMpOworICAgIG1fZW50cmllcy5hcHBlbmRSYW5nZShlbnRyaWVzLmJlZ2lu
KCksIGVudHJpZXMuZW5kKCkpOwogfQogCiB2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0Ojpzb3J0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRl
eCAxNmY1MjUyOWY5NjA4N2ZmMTg5OGI3MjM3NGQ3YjRjZGI3YTRjM2M2Li5mMTIxNzU4YTBjNWE5
NGQ5NjFiNGViZWI0M2Q1NDE1YjdlY2RhMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFZlY3Rv
cjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiBjb252ZXJ0VG9FbnRyeVNlcXVlbmNlKGNvbnN0
IFBlcmZvcm1hbmMKICAgICBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gZW50cmll
czsKIAogICAgIGZvciAoUGVyZm9ybWFuY2VFbnRyeU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBw
ZXJmb3JtYW5jZUVudHJ5TWFwLmJlZ2luKCk7IGl0ICE9IHBlcmZvcm1hbmNlRW50cnlNYXAuZW5k
KCk7ICsraXQpCi0gICAgICAgIGVudHJpZXMuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgIGVu
dHJpZXMuYXBwZW5kUmFuZ2UoaXQtPnZhbHVlLmJlZ2luKCksIGl0LT52YWx1ZS5lbmQoKSk7CiAK
ICAgICByZXR1cm4gZW50cmllczsKIH0KQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgVmVjdG9y
PFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGdldEVudHJ5U2VxdWVuY2VCeU5hbWUoY29uc3Qg
UGVyZm9ybWFuYwogCiAgICAgUGVyZm9ybWFuY2VFbnRyeU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBwZXJmb3JtYW5jZUVudHJ5TWFwLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ICE9IHBlcmZvcm1h
bmNlRW50cnlNYXAuZW5kKCkpCi0gICAgICAgIGVudHJpZXMuYXBwZW5kKGl0LT52YWx1ZSk7Cisg
ICAgICAgIGVudHJpZXMuYXBwZW5kUmFuZ2UoaXQtPnZhbHVlLmJlZ2luKCksIGl0LT52YWx1ZS5l
bmQoKSk7CiAKICAgICByZXR1cm4gZW50cmllczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcAppbmRleCAwZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUw
MmRlLi5kMjYxNGI4NzAyNGJmNDI2YTk0Zjg0MThkMTU3YTZlMmNjMGVhOWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9y
PFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAg
IFZlY3RvcjxTdHJpbmc+IGFjY2VwdFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBh
Y2l0eShhY2NlcHRNSU1FVHlwZXMuc2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgp
KTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRU
eXBlcy5hcHBlbmQoYWNjZXB0RmlsZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVu
ZFJhbmdlKGFjY2VwdE1JTUVUeXBlcy5iZWdpbigpLCBhY2NlcHRNSU1FVHlwZXMuZW5kKCkpOwor
ICAgIGFjY2VwdFR5cGVzLmFwcGVuZFJhbmdlKGFjY2VwdEZpbGVFeHRlbnNpb25zLmJlZ2luKCks
IGFjY2VwdEZpbGVFeHRlbnNpb25zLmVuZCgpKTsKICAgICByZXR1cm4gYWNjZXB0VHlwZXM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcAppbmRleCA1ZDc3NmFkZDhhMWMzYzE4NzUzYjY4OWQ2NjQ5NjBkNWViMWE5NWJiLi5j
ZGNjNDlkYTA5OTY1YmE4MzdjZDQ5OWVjYTUxZDBiNjVkYzBhMWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0b3I8
Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgICAgICBtX3NlcGFyYXRv
ckluZGV4Kys7CiAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA9PSBtX3NlcGFyYXRv
ci5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZVNlcGFyYXRvcikKLSAgICAg
ICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kKG1fc2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2h1bmsuYXBwZW5kUmFuZ2UobV9zZXBhcmF0b3IuYmVnaW4oKSwgbV9zZXBhcmF0b3Iu
ZW5kKCkpOwogICAgICAgICAgICAgICAgIG1fc2VwYXJhdG9ySW5kZXggPSAwOwogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGM1MjM4NTgwYjkxOWZkYmE5
NWQ1NTI0Y2VhZWI1YjE3NDZiN2Q4Y2YuLjViMTQwNWEzNjMwYTQ5ODMyNzE4YTZkODQ0ZDc2YjFj
MDZiYWU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRl
c0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gZW5naW5lU2l0ZXM7CiAgICAgICAgIGVuZ2luZXNb
aV0tPmdldFNpdGVzSW5NZWRpYUNhY2hlKGVuZ2luZVNpdGVzKTsKLSAgICAgICAgc2l0ZXMuYXBw
ZW5kKGVuZ2luZVNpdGVzKTsKKyAgICAgICAgc2l0ZXMuYXBwZW5kUmFuZ2UoZW5naW5lU2l0ZXMu
YmVnaW4oKSwgZW5naW5lU2l0ZXMuZW5kKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4
IDEyYTQ3ODljODlhNGNhZjA1NDM2NzdjODM0YzQxZWQ0MmFjYTFjMjMuLjk4MDliNzhhYzdmMGZk
Y2NiNTVlZjI4NzhkOGMyOTc5ZGJmYTMwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCiAgICAgdW5z
aWduZWQgc2l6ZSA9IGRpcnR5VGlsZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7
IG4gPCBzaXplOyArK24pIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IHBhaW50ZWRSZWN0cyA9
IGRpcnR5VGlsZXNbbl0tPnVwZGF0ZUJhY2tCdWZmZXIoKTsKLSAgICAgICAgcGFpbnRlZEFyZWEu
YXBwZW5kKHBhaW50ZWRSZWN0cyk7CisgICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFJhbmdlKHBh
aW50ZWRSZWN0cy5iZWdpbigpLCBwYWludGVkUmVjdHMuZW5kKCkpOwogICAgICAgICBkaXJ0eVRp
bGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IGUwMjJmZTI3YjBjMzRjOGIwMTc3YzlkYWJjNzVhYjlmYjdjNmNmMjcuLjNlNmM1ZWFmZDIy
ZTU2MDQ4ZjI4Mzg5ZGNiNDY5Y2VkZTJhZjE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTI4NCw3
ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdChib29s
IG1heExheWVyRGVwdGhSZWFjaGVkKQogICAgIFBsYXRmb3JtQ0FMYXllckxpc3QmIGNoaWxkTGlz
dEZvclN1YmxheWVycyA9IG1fc3RydWN0dXJhbExheWVyID8gc3RydWN0dXJhbExheWVyQ2hpbGRy
ZW4gOiBwcmltYXJ5TGF5ZXJDaGlsZHJlbjsKIAogICAgIGlmIChjdXN0b21TdWJsYXllcnMpCi0g
ICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZCgqY3VzdG9tU3VibGF5ZXJzKTsKKyAg
ICAgICAgcHJpbWFyeUxheWVyQ2hpbGRyZW4uYXBwZW5kUmFuZ2UoY3VzdG9tU3VibGF5ZXJzLT5i
ZWdpbigpLCBjdXN0b21TdWJsYXllcnMtPmVuZCgpKTsKIAogICAgIGlmIChtX3N0cnVjdHVyYWxM
YXllcikgewogICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDQ4ZDNlYmE1MWQ0ZDc2YWY0NmY3ZjRh
Y2Y4NjJjMjk2OTE5MzA1NmYuLjJmYzlmNzU5MDhkZjVlYTY2MzRhOTdlOWJmOTVmNmM3YWNmN2E5
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC04OSw3ICs4OSw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBzZWxlY3Rpb25QYXN0ZWJvYXJk
VHlwZXMoYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgYm9vbCBzCiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4gd3JpdGFibGVUeXBlc0ZvclVSTCgp
CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gd3JpdGFibGVUeXBlc0ZvclVSTCgpCiB7CiAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXM7CiAgICAgCkBAIC0xMDYsNyArMTA2LDggQEAgc3RhdGljIGlubGlu
ZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzOwogICAgIAogICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNUSUZGUGJv
YXJkVHlwZSkpOwotICAgIHR5cGVzLmFwcGVuZCh3cml0YWJsZVR5cGVzRm9yVVJMKCkpOworICAg
IGZvciAoY29uc3QgU3RyaW5nJiB0eXBlOiB3cml0YWJsZVR5cGVzRm9yVVJMKCkpCisgICAgICAg
IHR5cGVzLmFwcGVuZCh0eXBlKTsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TUlRGRFBib2Fy
ZFR5cGUpKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CkBAIC0xMTQsNyArMTE1LDggQEAgc3RhdGlj
IGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gdHlwZXM7Ci0gICAgdHlwZXMuYXBwZW5kKGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJ
bWFnZSgpKTsKKyAgICBmb3IgKGNvbnN0IFN0cmluZyYgdHlwZTogY3JlYXRlV3JpdGFibGVUeXBl
c0ZvckltYWdlKCkpCisgICAgICAgIHR5cGVzLmFwcGVuZCh0eXBlKTsKICAgICByZXR1cm4gdHlw
ZXM7CiB9CiAKQEAgLTE4Nyw3ICsxODksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0
aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYgogICAg
IFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPiA+IGNsaWVudERhdGE7CiAgICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2Uo
KS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOwotICAgIHR5cGVzLmFwcGVuZChjbGll
bnRUeXBlcyk7CisgICAgdHlwZXMuYXBwZW5kUmFuZ2UoY2xpZW50VHlwZXMuYmVnaW4oKSwgY2xp
ZW50VHlwZXMuZW5kKCkpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgZnJhbWUt
PmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRl
ci5jcHAKaW5kZXggNTY3YmQ2MGI5OTc0OTI3MTQzYmUyYmRhMjIwMzc4Y2Y2OTU3ZTY5My4uOTY3
MDNjZGE1MTQ3MDU5MThiY2EzYTdhNGE2NDY4YjQxYjc4YzU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIFZlY3RvcjxjaGFyPiBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91
bmRhcnlTdHJpbmcoKQogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoYWxwaGFOdW1lcmljRW5j
b2RpbmdNYXBbcmFuZG9tbmVzcyAmIDB4M0ZdKTsKICAgICB9CiAKLSAgICBib3VuZGFyeS5hcHBl
bmQocmFuZG9tQnl0ZXMpOworICAgIGJvdW5kYXJ5LmFwcGVuZFJhbmdlKHJhbmRvbUJ5dGVzLmJl
Z2luKCksIHJhbmRvbUJ5dGVzLmVuZCgpKTsKICAgICBib3VuZGFyeS5hcHBlbmQoMCk7IC8vIEFk
ZCBhIDAgYXQgdGhlIGVuZCBzbyB3ZSBjYW4gdXNlIHRoaXMgYXMgYSBDLXN0eWxlIHN0cmluZy4K
ICAgICByZXR1cm4gYm91bmRhcnk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwCmluZGV4IDRkMGZmYmVjM2YxMGRlMjg0OTZmODZkMDIxMmNlMzEwODBjODc0YWIu
LmZjZTA1OTU5YWQ3MTVkYTgzODc0YmY3NDE0OTdmMzUzMDk4MTM3ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgVmVjdG9y
PFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAgICAg
VmVjdG9yPFN0cmluZz4gbW96UGF0aHM7CiAgICAgU3RyaW5nIG1velBhdGgoZ2V0ZW52KCJNT1pf
UExVR0lOX1BBVEgiKSk7CiAgICAgbW96UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0Vt
cHR5RW50cmllcyAqLyBmYWxzZSwgbW96UGF0aHMpOwotICAgIHBhdGhzLmFwcGVuZChtb3pQYXRo
cyk7CisgICAgcGF0aHMuYXBwZW5kUmFuZ2UobW96UGF0aHMuYmVnaW4oKSwgbW96UGF0aHMuZW5k
KCkpOwogI2VsaWYgZGVmaW5lZChYUF9NQUNPU1gpCiAgICAgU3RyaW5nIHVzZXJQbHVnaW5QYXRo
ID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKICAgICB1c2VyUGx1Z2luUGF0aC5hcHBlbmQoU3RyaW5n
KCIvTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucyIpKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAg
ICBWZWN0b3I8U3RyaW5nPiBxdFBhdGhzOwogICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRX
RUJLSVRfUExVR0lOX1BBVEgiKS5jb25zdERhdGEoKSk7CiAgICAgcXRQYXRoLnNwbGl0KFVDaGFy
KCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBxdFBhdGhzKTsKLSAgICBwYXRo
cy5hcHBlbmQocXRQYXRocyk7CisgICAgcGF0aHMuYXBwZW5kUmFuZ2UocXRQYXRocy5iZWdpbigp
LCBxdFBhdGhzLmVuZCgpKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHBhdGhzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA3
MDJjNGE3YTc0NGZhZjEzOTZiNTNjNDVmMDg3MDM5YjhiNmUxY2E2Li5lNmMxYzgyZWNlNTQ5OWFi
NmVhYjkwM2E4MjViYTQ4Yjk3YTM1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2VnbWVudChJbmxpbmVCaWRpUmVz
b2x2ZXImIHRvcFJlc29sdmVyLAogICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXJlZCBhbnkgbmVz
dGVkIGlzb2xhdGUgcnVucywganVzdCBtb3ZlIHRoZW0KICAgICAgICAgLy8gdG8gdGhlIHRvcCBy
ZXNvbHZlcidzIGxpc3QgZm9yIGxhdGVyIHByb2Nlc3NpbmcuCiAgICAgICAgIGlmICghaXNvbGF0
ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHRvcFJl
c29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZChpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVu
cygpKTsKKyAgICAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmFwcGVuZFJhbmdl
KGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuYmVnaW4oKSwgaXNvbGF0ZWRSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKS5lbmQoKSk7CiAgICAgICAgICAgICBpc29sYXRlZFJlc29sdmVyLmlz
b2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5MTFj
M2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJjMjcuLjY5NmY5ODNmNDQ1OWRlZGVmMjFjNDE1
MzM3ODQ3NDNhNTE3NGU5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCiAgICAgewotICAgICAgICBtX292ZXJs
YXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBlbmQobV9vdmVybGFwU3RhY2su
bGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0g
Ml0uYXBwZW5kUmFuZ2UobV9vdmVybGFwU3RhY2subGFzdCgpLmJlZ2luKCksIG1fb3ZlcmxhcFN0
YWNrLmxhc3QoKS5lbmQoKSk7CiAgICAgICAgIG1fb3ZlcmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKaW5kZXggM2Q1MTI5M2QxMmMyYzg4ZTMwYjgzMGVhZmY4NmFhNzc5YmI4ZTkxYS4uZjVi
YjE3Y2ZlMjUyZTdmMjcwYWVjMWMwOWRjYTk3NGUzZWE0MzQzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIgPSBtX2dyaWRbcm93XS5yb3c7CiAgICAgICAg
IHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3QoKSk7CiAgICAgICAgIGlmIChyW3Bvc10uaGFz
Q2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3MgKyAxXS5jZWxscy5hcHBlbmQocltwb3NdLmNl
bGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kUmFuZ2Uocltwb3NdLmNl
bGxzLmJlZ2luKCksIHJbcG9zXS5jZWxscy5lbmQoKSk7CiAgICAgICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChj
ZWxsKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNv
bFNwYW4gPyAxdSA6IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2
NTkxZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQzODQ0Mi4uZWJjZmFjYTlkNzNlNDM1ZTRlODE4ODM2
YjY2N2U1YjMxN2E1YmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsx
MjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0g
Y3VycmVudExheWVyLT5nZXQoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5
cGhzKTsKKyAgICAgICAgICAgIGdseXBocy5hcHBlbmRSYW5nZShub2RlLT5nbHlwaHMuYmVnaW4o
KSwgbm9kZS0+Z2x5cGhzLmVuZCgpKTsKICAgICAgICAgICAgIGN1cnJlbnRMYXllciA9ICZub2Rl
LT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5n
dGgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2Rl
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMz
OGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAwYzM1OC4uMTA2ZTg1MDIyYzI1OTE2MmVlNjVhMTU4
NmIyYWZiZWJlZWM5NjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2Vs
ZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBpbiBpdCBhcmUgdW5pcXVlLgogICAgICAgICAg
ICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQogICAg
ICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBw
ZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2Rl
U2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVTZXQubV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZv
aWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVTZXQpIHsgbV9ub2Rlcy5hcHBlbmRSYW5nZShu
b2RlU2V0Lm1fbm9kZXMuYmVnaW4oKSwgbm9kZVNldC5tX25vZGVzLmVuZCgpKTsgfQogCiAgICAg
ICAgICAgICAvLyBSZXR1cm5zIHRoZSBzZXQncyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVy
LCBvciAwIGlmIHRoZSBzZXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2
ZDYwYTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjdkOGE1YzljM2YwYjM4Y2Y3YzM5YjYxOWE1ZTcxN2Mw
NjhjMzE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTUsOCArNTUsMTAgQEAg
dm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+ID4gc2FuZGJveEV4dGVuc2lvbnMgPSBuZXdTYW5kYm94RXh0ZW5zaW9uczsKICAgICBjb25z
dCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IGRhdGEtPml0ZW1zKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJsb2IpCi0gICAgICAgICAgICBz
YW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0u
dXJsLnN0cmluZygpKSk7CisgICAgICAgIGlmIChpdGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRl
bTo6QmxvYikgeworICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gbV9zYW5kYm94RXh0ZW5z
aW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMu
YXBwZW5kUmFuZ2UoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25zLmVuZCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGRh
dGEpOwpAQCAtMTA3LDcgKzEwOSw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVj
dGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAgICAgbV9i
bG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1jb25zdCBWZWN0b3I8
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4
dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorVmVjdG9yPFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNp
b25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAppbmRleCA1MmQy
ZGY5YzE5ODkyOTNhMTAzNjViOTQ4NjQ1MWExYWQ4Njk3MWE1Li42N2QwY2NmZWNlZjA5OGUwNTM2
ZDYzNjU3OGFhNDJmODkxMjBiZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0
ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgfk5l
dHdvcmtCbG9iUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBhNWE3
NTZkYTZkYTAyYWY1Y2I1Li4wMmE3MDI4ZWQyYzZjYzliM2RlMzJlOTVjNDU4NjUyZDNkMzFkNDA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVM
b2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJs
ZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNvdW50
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gRm9ybURhdGFF
bGVtZW50OjplbmNvZGVkQmxvYikgewogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7Ci0gICAg
ICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChibG9iRWxl
bWVudEV4dGVuc2lvbnMpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9ucy5hcHBlbmRSYW5nZShibG9iRWxlbWVudEV4dGVuc2lvbnMuYmVnaW4oKSwgYmxvYkVs
ZW1lbnRFeHRlbnNpb25zLmVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIyZWQwNTUzZWI4NDkuLmJmZWFlMzE0OTM0ZmQx
OWU5NWY1Y2UxZGU3N2U2NzhlNDUxODg5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxv
d2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewog
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZXNU
b0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFj
ayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5
LmFwcGVuZFJhbmdlKG1lc3NhZ2VzVG9QdXRCYWNrLmJlZ2luKCksIG1lc3NhZ2VzVG9QdXRCYWNr
LmVuZCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCmluZGV4IGQ0Yzll
YzJjNWYyZTUyZmYwYWNhNDU5YmU3NDI2YzMxYTlmYTNlNGMuLjQ3MzMyZjBmOTRjNWFhZDI5Zjdi
OTRiYWIxNGJjOWZhOWQ1MmUwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcApAQCAtNzIs
NyArNzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnNEaXJlY3Rv
cmllcygpCiAgICAgaWYgKCFtb3ppbGxhUGF0aHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IHBhdGhzOwogICAgICAgICBtb3ppbGxhUGF0aHMuc3BsaXQoVUNoYXIoJzonKSwg
LyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHBhdGhzKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChwYXRocyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRSYW5nZShwYXRocy5iZWdpbigpLCBw
YXRocy5lbmQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMTJiOWQ3MDIyMzliYjllMTc1
NTFhYjNjZGMzNzM5MjU3NzlmZGExLi42NTNlMjYwNDE4Y2EzNjIxNzNhZTNkYjliODI3YWM4MzYw
NDIzZjZmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJsb2Fk
IHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFJhbmdlIGluc3RlYWQuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06Cisg
ICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTAy
ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBz
dGFsZSBzY3JpcHQgZmlsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggMzUzZWE4ZDY3YzkzZDk2OTYzZDFhYWI0
ODVhMmRhZWE0ZGZlNjUwNy4uMmI2MjdiY2NmOWVhNDE3NTIwMmQ2Zjc2ZGQ4NWIyZjEyYjVjNDUz
MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyog
dgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAg
ICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5h
cHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRSYW5nZSh2YWx1ZUJ1ZmZlci5i
ZWdpbigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDhhOTU1MWM4NWZhOGE4N2Jk
ZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjk1Y2ZhZThjZjQ3M2JmNDI3ODVjNDIxYTBmOTJmZWYy
MDU4NTljODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpA
QCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8
VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFy
YWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZl
cik7CisgICAgYnVmZmVyLmFwcGVuZFJhbmdlKHZhbHVlQnVmZmVyLmJlZ2luKCksIHZhbHVlQnVm
ZmVyLmVuZCgpKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200436</attachid>
            <date>2013-05-03 10:22:27 -0700</date>
            <delta_ts>2013-05-03 10:48:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130503102140.patch</filename>
            <type>text/plain</type>
            <size>51325</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uYWJjMmYzNjJkOTBhZTRkZWNjMDY1NDRiYTVmN2I2MzY3OGYxODZlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKQEAgLTExOTAs
OCArMTE5MSw4IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhCiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLnBy
aW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKLSAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CisgICAgYXBwZW5kVmVjdG9yKGRhdGEs
IGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOworICAgIGFwcGVuZFZl
Y3RvcihkYXRhLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERC
VHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFjLi5h
NGVkNThkYzVlNzhhOTcwYmI5NGRjNjU4ZTViMTVkM2U1ZDE5YzZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAt
MzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNvbnN0
IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMubGVu
Z3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVTdHJpbmcocykpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTQxOSw3
ICs0MTksNyBAQCB2b2lkIGVuY29kZUlEQktleShjb25zdCBJREJLZXkmIGtleSwgVmVjdG9yPGNo
YXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYgaW50bwogICAgIGNhc2UgSURCS2V5OjpJbnZh
bGlkVHlwZToKICAgICBjYXNlIElEQktleTo6TWluVHlwZToKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5TnVsbFR5cGVC
eXRlKSk7CisgICAgICAgIGFwcGVuZFZlY3RvcihpbnRvLCBlbmNvZGVCeXRlKElEQktleU51bGxU
eXBlQnl0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZTog
ewogICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleUFycmF5VHlwZUJ5dGUpKTsK
QEAgLTQ0MSw4ICs0NDEsOCBAQCB2b2lkIGVuY29kZUlEQktleShjb25zdCBJREJLZXkmIGtleSwg
VmVjdG9yPGNoYXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYgaW50bwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKLSAgICAgICAg
aW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlOdW1iZXJUeXBlQnl0ZSkpOwotICAgICAgICBp
bnRvLmFwcGVuZChlbmNvZGVEb3VibGUoa2V5Lm51bWJlcigpKSk7CisgICAgICAgIGFwcGVuZFZl
Y3RvcihpbnRvLCBlbmNvZGVCeXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7CisgICAgICAgIGFw
cGVuZFZlY3RvcihpbnRvLCBlbmNvZGVEb3VibGUoa2V5Lm51bWJlcigpKSk7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3VzU2l6ZSA9PSA5
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMzUsMjEgKzExMzUsMjEgQEAgS2V5UHJl
Zml4OjpUeXBlIEtleVByZWZpeDo6dHlwZSgpIGNvbnN0CiBWZWN0b3I8Y2hhcj4gU2NoZW1hVmVy
c2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5UHJlZml4Ojpl
bmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShTY2hlbWFWZXJzaW9uVHlw
ZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKFNjaGVtYVZlcnNpb25U
eXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBNYXhEYXRhYmFz
ZUlkS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVu
Y29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1heERhdGFiYXNlSWRUeXBl
Qnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoTWF4RGF0YWJhc2VJZFR5
cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogVmVjdG9yPGNoYXI+IERhdGFWZXJzaW9u
S2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29k
ZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUp
KTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKERhdGFWZXJzaW9uVHlwZUJ5dGUp
KTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xMTgwLDggKzExODAsOCBAQCBjb25zdCBjaGFy
KiBEYXRhYmFzZUZyZWVMaXN0S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGxpbWl0LCBEYQogVmVjdG9yPGNoYXI+IERhdGFiYXNlRnJlZUxpc3RLZXk6OmVuY29kZShp
bnQ2NF90IGRhdGFiYXNlSWQpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6
ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVlTGlz
dFR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoZGF0YWJhc2VJZCkpOwor
ICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRl
KSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsKICAg
ICByZXR1cm4gcmV0OwogfQogCkBAIC0xMjI3LDkgKzEyMjcsOSBAQCBjb25zdCBjaGFyKiBEYXRh
YmFzZU5hbWVLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQs
IERhdGFiYQogVmVjdG9yPGNoYXI+IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICAgICBWZWN0b3I8Y2hh
cj4gcmV0ID0gS2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2Rl
Qnl0ZShEYXRhYmFzZU5hbWVUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5n
V2l0aExlbmd0aChvcmlnaW4pKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5n
dGgoZGF0YWJhc2VOYW1lKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShEYXRh
YmFzZU5hbWVUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVN0cmluZ1dp
dGhMZW5ndGgob3JpZ2luKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nV2l0
aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xMjU1LDcg
KzEyNTUsNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlIG1ldGFEYQogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgYXBwZW5kVmVj
dG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xMjk0LDkgKzEyOTQsOSBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVNZXRhRGF0
YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkp
OwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRW
ZWN0b3IocmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkpOworICAg
IGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICByZXR1cm4gcmV0
OwogfQogCkBAIC0xMzY5LDEwICsxMzY5LDEwIEBAIFZlY3RvcjxjaGFyPiBJbmRleE1ldGFEYXRh
S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsCiB7
CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0
ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleE1ldGFE
YXRhVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlk
KSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwotICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVu
Y29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
VmFySW50KGluZGV4SWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKG1ldGFE
YXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQzMiw4IEBAIFZl
Y3RvcjxjaGFyPiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlk
KTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBw
ZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwg
ZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKQEAgLTE0ODksOSArMTQ4OSw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleEZyZWVMaXN0S2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsCiB7CiAgICAg
S2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJl
Zml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleEZyZWVMaXN0VHlw
ZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0g
ICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOworICAgIGFwcGVuZFZlY3Rvcihy
ZXQsIGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9y
KHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0
LCBlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1NDUs
OCArMTU0NSw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUoaW50
NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjCiB7CiAgICAgS2V5UHJlZml4IHBy
ZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgp
OwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5
dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVj
dFN0b3JlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1ODgsOSArMTU4OCw5IEBA
IFZlY3RvcjxjaGFyPiBJbmRleE5hbWVzS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFz
ZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5h
cHBlbmQoZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5
dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE2MjAs
NyArMTYyMCw3IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiB7CiAgICAgS2V5UHJlZml4IHBy
ZWZpeChLZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHBy
ZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsKKyAgICBhcHBl
bmRWZWN0b3IocmV0LCBlbmNvZGVkVXNlcktleSk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAt
MTY2Miw3ICsxNjYyLDcgQEAgVmVjdG9yPGNoYXI+IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGMKIHsKICAgICBLZXlQcmVm
aXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0
ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7CisgICAgYXBw
ZW5kVmVjdG9yKHJldCwgZW5jb2RlZEtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTcz
Myw5ICsxNzMzLDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQKIHsKICAgICBLZXlQcmVmaXgg
cHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktl
eSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5S2V5KTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVkVXNlcktleSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KHNlcXVlbmNl
TnVtYmVyKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlZFByaW1hcnlLZXkpOwogICAg
IHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCA1NjE5N2Y2NzcwNzYzMGI4MWQxYjBhOWRiYmZj
NWE3NjgwNDRiOTE1Li4wMWI5M2Y3YzI2NDEwZjJhNTlmNjM1ODVmMWNjNDE5MmVhYTYwN2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5oCkBAIC00Nyw2ICs0NywxNCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIE1pbmltdW1JbmRl
eElkID0gMzA7CiAvLyB0byByZWR1Y2UgdGhlIG1lbW9yeSByZS1hbGxvY2F0aW9ucyB3aGVuIHRo
ZSBWZWN0b3JzIGFyZSBhcHBlbmRlZC4KIHN0YXRpYyBjb25zdCBzaXplX3QgRGVmYXVsdElubGlu
ZUJ1ZmZlclNpemUgPSAzMjsKIAorLy8gRklYTUU6IEFsbCB0aGVzZSBlbmNvZGUgZnVuY3Rpb25z
IHNob3VsZCBiZSBjaGFuZ2VkIHRvIGVuY29kZSBpbnRvIGEgdmVjdG9yIGluc3RlYWQgb2YgcmV0
dXJuaW5nIHRlbXBvcmFyaWVzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHk+CitzdGF0aWMgdm9pZCBhcHBlbmRWZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5PiYgZGVzdCwgY29uc3QgVmVjdG9yPGNoYXI+JiBzcmMpCit7CisgICAgZGVzdC5hcHBlbmRS
YW5nZShzcmMuYmVnaW4oKSwgc3JjLmVuZCgpKTsKK30KKwogVmVjdG9yPGNoYXI+IGVuY29kZUJ5
dGUodW5zaWduZWQgY2hhcik7CiBjb25zdCBjaGFyKiBkZWNvZGVCeXRlKGNvbnN0IGNoYXIqIHAs
IGNvbnN0IGNoYXIqIGxpbWl0LCB1bnNpZ25lZCBjaGFyJiBmb3VuZENoYXIpOwogVmVjdG9yPGNo
YXI+IG1heElEQktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCmluZGV4IDA0NzI2NmViNzk0YjBlOGVkMGJmNTE2ZTNiNzUyZjZhNzgy
Y2JjNjIuLjYzZTVlZmMzNDUxNmMzN2UxMWI0ZmNmMDk1OGI0ODQxODY4YjE4ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQogICAgIC8vIEF1ZGlvIHRo
cmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4g
TGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgogICAgIGRvIHsKICAgICAgICAgZGVsZXRlTWFya2VkTm9k
ZXMoKTsKLSAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVs
ZXRpb24pOworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uLmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAg
ICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogICAgIH0gd2hpbGUgKG1f
bm9kZXNUb0RlbGV0ZS5zaXplKCkpOwogCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKIAogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxs
IGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuICAgIAogICAgIGlmIChtX25vZGVz
TWFya2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKLSAg
ICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwor
ICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kUmFuZ2UobV9ub2Rlc01hcmtlZEZvckRlbGV0
aW9uLmJlZ2luKCksIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5lbmQoKSk7CiAgICAgICAgIG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNj
aGVkdWxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggODY2NGFjNzRmZDhhZGJkZGYxZTAyMWQ4
MzY2ZjE4NWMwMTNjZWVhMy4uYzg2YTgzNTBiYzgwNDdmOTQ1NjhhNjc4YTU1MjI4NjNjYmZlNWNl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklB
R3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hT
ZQogICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIG1fY2hp
bGRyZW4uYXBwZW5kKHJvdyk7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChy
b3ctPmNoaWxkcmVuKCkpOworICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJhbmdlKHJvdy0+Y2hp
bGRyZW4oKS5iZWdpbigpLCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogCiAgICAgYXBwZW5kZWRS
b3dzLmFkZChyb3cpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDcxYWZhYjVkODdkNzk2
MGI2MDI1ZTQ3NWY0ZTQ2YWM1OTc5NjBiNjEuLmUzOTRhZmRkYjUwODc4MDdlODllZDA4OWFlYWRi
YWIyZjc4N2YxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5k
KHJvdyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CisgICAgICAgICAgICAgICAg
bV9jaGlsZHJlbi5hcHBlbmRSYW5nZShyb3ctPmNoaWxkcmVuKCkuYmVnaW4oKSwgcm93LT5jaGls
ZHJlbigpLmVuZCgpKTsKICNlbmRpZgogICAgICAgICAgICAgYXBwZW5kZWRSb3dzLmFkZChyb3cp
OwogICAgICAgICB9CkBAIC00NjcsMTAgKzQ2Nyw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAogICAgIGludCBudW1Sb3dz
ID0gbV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyAr
K3JvdykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hpbGRyZW4g
PSBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKTsKLSAgICAgICAgY2VsbHMuYXBwZW5kKHJvd0NoaWxk
cmVuKTsKLSAgICB9CisgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnVtUm93czsgKytyb3cp
CisgICAgICAgIGNlbGxzLmFwcGVuZFJhbmdlKG1fcm93c1tyb3ddLT5jaGlsZHJlbigpLmJlZ2lu
KCksIG1fcm93c1tyb3ddLT5jaGlsZHJlbigpLmVuZCgpKTsKIH0KICAgICAKIHVuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29sdW1uQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5j
cHAKaW5kZXggZDAzYjA3NDNmYjAyMDZlYzg2NGFkZGJiZGM5ZTc0YjczYjUxMDZlMC4uOGI0NTdi
NDNkY2QyMGYxODE2N2JlNzEwZmQzZTZkMmM1Njc3YjlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuY3BwCkBAIC02NSw4ICs2NSw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25z
dCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAgICAgZW5kID0gb3RoZXIuYXR0cnNJblJ1bGVzLmVu
ZCgpOwogICAgIGZvciAoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gb3RoZXIuYXR0cnNJblJ1bGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAg
ICAgYXR0cnNJblJ1bGVzLmFkZCgqaXQpOwotICAgIHNpYmxpbmdSdWxlcy5hcHBlbmQob3RoZXIu
c2libGluZ1J1bGVzKTsKLSAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZChvdGhlci51
bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzKTsKKyAgICBzaWJsaW5nUnVsZXMuYXBwZW5kUmFuZ2Uob3Ro
ZXIuc2libGluZ1J1bGVzLmJlZ2luKCksIG90aGVyLnNpYmxpbmdSdWxlcy5lbmQoKSk7CisgICAg
dW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRSYW5nZShvdGhlci51bmNvbW1vbkF0dHJpYnV0
ZVJ1bGVzLmJlZ2luKCksIG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMuZW5kKCkpOwogICAg
IHVzZXNGaXJzdExpbmVSdWxlcyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmly
c3RMaW5lUnVsZXM7CiAgICAgdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSB1c2VzQmVmb3JlQWZ0ZXJS
dWxlcyB8fCBvdGhlci51c2VzQmVmb3JlQWZ0ZXJSdWxlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAppbmRleCA2OTUyNzkzZTdlMjJhYTVlYTAzNjZjODVkODJlNzRhNDQ5YTY0
ZTJjLi41OTA0MjBkMTRiMWYwN2ZjMzdkMzBlNmVkY2E2MDk1MzVlZDhlNTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0CiAKICAgICBBU1NFUlQoaGFzaCk7CiAgICAgTWF0Y2hlZFByb3BlcnRpZXND
YWNoZUl0ZW0gY2FjaGVJdGVtOwotICAgIGNhY2hlSXRlbS5tYXRjaGVkUHJvcGVydGllcy5hcHBl
bmQobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMpOworICAgIGNhY2hlSXRlbS5tYXRjaGVk
UHJvcGVydGllcy5hcHBlbmRSYW5nZShtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5iZWdp
bigpLCBtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5lbmQoKSk7CiAgICAgY2FjaGVJdGVt
LnJhbmdlcyA9IG1hdGNoUmVzdWx0LnJhbmdlczsKICAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3Qg
Y2FjaGUgdGhlIG9yaWdpbmFsIFJlbmRlclN0eWxlIGluc3RhbmNlLiBJdCBtYXkgYmUgZnVydGhl
ciBtb2RpZmllZC4KICAgICAvLyBUaGUgUmVuZGVyU3R5bGUgaW4gdGhlIGNhY2hlIGlzIHJlYWxs
eSBqdXN0IGEgaG9sZGVyIGZvciB0aGUgc3Vic3RydWN0dXJlcyBhbmQgbmV2ZXIgdXNlZCBhcy1p
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmNwcAppbmRleCBkYmVmMGM5YzE5NDcwYzAxYzkyMjRhYjAxODBjZWZjYjkzYWFhNjE3Li5l
Yjk0OGQ5ODZhZThmYzliOWNkODdjNzg5YWUxYzA4MWNhZDM5OGVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC00NDEs
NyArNDQxLDkgQEAgc3RhdGljIHZvaWQgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyhWZWN0b3I8UmVmUHRyPENTU1N0eWwKICAgICBIVE1MSUZyYW1lRWxlbWVu
dCogc2VhbWxlc3NQYXJlbnRJRnJhbWUgPSBkb2N1bWVudC0+c2VhbWxlc3NQYXJlbnRJRnJhbWUo
KTsKICAgICBpZiAoIXNlYW1sZXNzUGFyZW50SUZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
c2hlZXRzLmFwcGVuZChzZWFtbGVzc1BhcmVudElGcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVl
dENvbGxlY3Rpb24oKS0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7CisKKyAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzID0g
c2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkt
PmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCk7CisgICAgc2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2
ZUF1dGhvclN0eWxlU2hlZXRzLmJlZ2luKCksIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLmVuZCgp
KTsKIH0KIAogYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVT
dHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCkBAIC00NjIsOCArNDY0LDggQEAgYm9v
bCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhV
cGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0aXZl
U3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IGFjdGl2
ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZChpbmplY3Rl
ZEF1dGhvclN0eWxlU2hlZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZChk
b2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFw
cGVuZFJhbmdlKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKS5iZWdpbigpLCBpbmplY3RlZEF1
dGhvclN0eWxlU2hlZXRzKCkuZW5kKCkpOworICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVu
ZFJhbmdlKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKS5iZWdpbigpLCBkb2N1bWVudEF1dGhv
clN0eWxlU2hlZXRzKCkuZW5kKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zy
b21TZWFtbGVzc1BhcmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwogICAg
IGZpbHRlckVuYWJsZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZl
U3R5bGVTaGVldHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA2ZDhjZDYyZDcxMjlkODIyZTY5
MmE1OTNkNTM0NzI3YmE4ZDcxNzllLi5iMDc1MDZmZjEwYTBhM2ZmYjgzNDc1OTRkY2E0MGFkN2My
ZDY5OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgUmFu
Z2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0
CiAgICAgICAgICAgICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMoZWxl
bWVudFF1YWRzKTsKICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0
UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKGVsZW1lbnRRdWFkcywg
cmVuZGVyQm94TW9kZWxPYmplY3QpOwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKGVs
ZW1lbnRRdWFkcyk7CisgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kUmFuZ2UoZWxlbWVudFF1
YWRzLmJlZ2luKCksIGVsZW1lbnRRdWFkcy5lbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRvVGV4dChub2RlKS0+cmVuZGVyZXIoKSkgewpAQCAtMTkzOSw3
ICsxOTM5LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJUZXh0LT5hYnNvbHV0
ZVF1YWRzRm9yUmFuZ2UodGV4dFF1YWRzLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRB
YnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHRleHRRdWFkcywgcmVuZGVyVGV4dCk7CiAKLSAgICAg
ICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFk
cy5hcHBlbmRSYW5nZSh0ZXh0UXVhZHMuYmVnaW4oKSwgdGV4dFF1YWRzLmVuZCgpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAwOWNjMjg3NDQxODEwMzkwOTgxMTgzNDM5Mjg0NTM0
YTMyNWQyYjYzLi43NTg5M2E1NTJmMjgwYWY4ZmMxZTBkNjA4ZTA2ZjRhNTZlNGFmMTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC02ODEs
NyArNjgxLDcgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCog
Y2xpZW50LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICAgICAgICAgaWYgKHJlc3VsdHMu
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmVzdWx0cy5zd2FwKHNwZWxsaW5nUmVzdWx0KTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc3BlbGxpbmdSZXN1bHQpOwor
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmRSYW5nZShzcGVsbGluZ1Jlc3VsdC5iZWdpbigpLCBz
cGVsbGluZ1Jlc3VsdC5lbmQoKSk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDhhOGFmMDVhOTdmYjU5YmYzMGY5YTU4NDdiNDViM2M0
ZmQzMGI3MDEuLjc0YmM5N2Q5NDJlZGIyOTU0MmEwNDRjNzAxMzJlZmQ5NjVmMDMxZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC01MTAsOCArNTEwLDEwIEBAIFZl
Y3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzdGF0CiAgICAgVmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CiAgICAg
U2F2ZWRGb3JtU3RhdGVNYXAgbWFwOwogICAgIGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Ioc3Rh
dGVWZWN0b3IsIG1hcCk7Ci0gICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICB0b1Jl
dHVybi5hcHBlbmQoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkpOworICAgIGZv
ciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCksIGVu
ZCA9IG1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHJlZmVyZW5jZWRGaWxlUGF0aHMgPSBpdC0+dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
KTsKKyAgICAgICAgdG9SZXR1cm4uYXBwZW5kUmFuZ2UocmVmZXJlbmNlZEZpbGVQYXRocy5iZWdp
bigpLCByZWZlcmVuY2VkRmlsZVBhdGhzLmVuZCgpKTsKKyAgICB9CiAgICAgcmV0dXJuIHRvUmV0
dXJuOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAxOWJjOTUwY2FkM2JkZGE4OTJhNGRkZDcwNTEx
ODA5M2ZhOGUwNzhjLi45OTJlNGI3MDhkZDkzNDcxNWIxZThkMjgzOThkYWI3MGUxYTZjYmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0TGluZURhc2goY29uc3QgVmVjdG9yPGZsb2F0PiYgZGFzaCkKICAgICAvLyBT
cGVjIHJlcXVpcmVzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byBjb3BpZXMgdGhlIGRhc2ggbGlz
dCB3aGVuIHRoZQogICAgIC8vIG51bWJlciBvZiBlbGVtZW50cyBpcyBvZGQKICAgICBpZiAoZGFz
aC5zaXplKCkgJSAyKQotICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNoLmFwcGVu
ZChkYXNoKTsKKyAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmRSYW5n
ZShkYXNoLmJlZ2luKCksIGRhc2guZW5kKCkpOwogCiAgICAgYXBwbHlMaW5lRGFzaCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcAppbmRleCBmNmY5YTI4YjE0YWE3MTc0MjJiZWQxMzg4MzIyOWUxYTI2MGUz
MDAwLi43ODU3NDMzYjZkNmQ5Y2E4MDExNTk5MjdlZDg5ZGM3OWY2MTljNzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRNTFN0YWNrSXRlCiAgICAg
aWYgKGNhbmRpZGF0ZXMuc2l6ZSgpIDwga05vYWhzQXJrQ2FwYWNpdHkpCiAgICAgICAgIHJldHVy
bjsgLy8gVGhlcmUncyByb29tIGZvciB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGFyay4gVGhlcmUn
cyBubyBuZWVkIHRvIGNvcHkgb3V0IHRoZSByZW1haW5pbmdDYW5kaWRhdGVzLgogCi0gICAgcmVt
YWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlcyk7CisgICAgcmVtYWluaW5nQ2FuZGlk
YXRlcy5hcHBlbmRSYW5nZShjYW5kaWRhdGVzLmJlZ2luKCksIGNhbmRpZGF0ZXMuZW5kKCkpOwog
fQogCiB2b2lkIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Q6OmVuc3VyZU5vYWhzQXJrQ29uZGl0
aW9uKEhUTUxTdGFja0l0ZW0qIG5ld0l0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbi5oCmluZGV4IDU0MjRiZDE0NmMwYWFiYjJiNjkwYTllYWFiMDIyOWY5N2MwOGIxMjMuLmY5
NDhmOTZhZDQxYjE2ZjQ2MmJjMDZjMzdiMmMzYTkxYjQ1MWE5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yNzcsNyArMjc3LDcgQEAgcHVibGljOgogICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwogICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsK
IAotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgICAgICBtX2Rh
dGEuYXBwZW5kUmFuZ2UoY2hhcmFjdGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVuZCgpKTsKICAg
ICB9CiAKICAgICB2b2lkIGFkZE5ld0F0dHJpYnV0ZSgpCkBAIC0zOTgsNyArMzk4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4m
IGNoYXJhY3RlcnMpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3Rlcik7
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgICAgIG1fZGF0
YS5hcHBlbmRSYW5nZShjaGFyYWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5kKCkpOwogICAg
IH0KIAogICAgIC8qIENvbW1lbnQgVG9rZW5zICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFRva2VuLmgKaW5kZXggN2Y2Zjg2ZjMzOTdiMTAwZjUzOWNjYmE1YmVmMTkzMWMwNmU0ODk0
Ny4uZmE3YWYzZDZlYTdiMGY3YzA3OWIxMzA0M2M1ZGQxMDQ5OWVmNGM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFj
dGVycykKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6Q2hhcmFjdGVyKTsK
LSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICAgICAgbV9kYXRh
LmFwcGVuZFJhbmdlKGNoYXJhY3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5lbmQoKSk7CiAgICAg
fQogCiAgICAgdm9pZCBiZWdpbkVtcHR5U3RhcnRUYWcoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAg
IGlmICghbV9jbGFzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQo
JyAnKTsKLSAgICAgICAgbV9jbGFzc2VzLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAgICAg
ICBtX2NsYXNzZXMuYXBwZW5kUmFuZ2UobV9jdXJyZW50QnVmZmVyLmJlZ2luKCksIG1fY3VycmVu
dEJ1ZmZlci5lbmQoKSk7CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0K
ICAgICAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQo
bV90eXBlID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgbV9hbm5vdGF0aW9uLmNsZWFyKCk7
Ci0gICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmQobV9jdXJyZW50QnVmZmVyKTsKKyAgICAgICAg
bV9hbm5vdGF0aW9uLmFwcGVuZFJhbmdlKG1fY3VycmVudEJ1ZmZlci5iZWdpbigpLCBtX2N1cnJl
bnRCdWZmZXIuZW5kKCkpOwogICAgICAgICBtX2N1cnJlbnRCdWZmZXIuY2xlYXIoKTsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeUxpc3QuY3BwCmlu
ZGV4IDBhOGNjNmFiOTk5ZjNjZDFlNmIxY2ZhZTBhZWIyM2NkOGFlMzY5NDcuLjk3ODU1OTcyODZm
ZmZmZTYwZjk0YjQ4ZDliMzhkM2M0NDdkNjM1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VFbnRyeUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VFbnRyeUxpc3QuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUGVyZm9ybWFu
Y2VFbnRyeUxpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+IGVudHJ5KQog
CiB2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0OjphcHBlbmRBbGwoY29uc3QgVmVjdG9yPFJlZlB0
cjxQZXJmb3JtYW5jZUVudHJ5PiA+JiBlbnRyaWVzKQogewotICAgIG1fZW50cmllcy5hcHBlbmQo
ZW50cmllcyk7CisgICAgbV9lbnRyaWVzLmFwcGVuZFJhbmdlKGVudHJpZXMuYmVnaW4oKSwgZW50
cmllcy5lbmQoKSk7CiB9CiAKIHZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OnNvcnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCmluZGV4IDE2ZjUy
NTI5Zjk2MDg3ZmYxODk4YjcyMzc0ZDdiNGNkYjdhNGMzYzYuLmYxMjE3NThhMGM1YTk0ZDk2MWI0
ZWJlYjQzZDU0MTViN2VjZGExMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VVc2VyVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVXNlclRpbWluZy5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZlB0
cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGNvbnZlcnRUb0VudHJ5U2VxdWVuY2UoY29uc3QgUGVyZm9y
bWFuYwogICAgIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiBlbnRyaWVzOwogCiAg
ICAgZm9yIChQZXJmb3JtYW5jZUVudHJ5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHBlcmZvcm1h
bmNlRW50cnlNYXAuYmVnaW4oKTsgaXQgIT0gcGVyZm9ybWFuY2VFbnRyeU1hcC5lbmQoKTsgKytp
dCkKLSAgICAgICAgZW50cmllcy5hcHBlbmQoaXQtPnZhbHVlKTsKKyAgICAgICAgZW50cmllcy5h
cHBlbmRSYW5nZShpdC0+dmFsdWUuYmVnaW4oKSwgaXQtPnZhbHVlLmVuZCgpKTsKIAogICAgIHJl
dHVybiBlbnRyaWVzOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmUHRy
PFBlcmZvcm1hbmNlRW50cnk+ID4gZ2V0RW50cnlTZXF1ZW5jZUJ5TmFtZShjb25zdCBQZXJmb3Jt
YW5jCiAKICAgICBQZXJmb3JtYW5jZUVudHJ5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHBlcmZv
cm1hbmNlRW50cnlNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gcGVyZm9ybWFuY2VFbnRy
eU1hcC5lbmQoKSkKLSAgICAgICAgZW50cmllcy5hcHBlbmQoaXQtPnZhbHVlKTsKKyAgICAgICAg
ZW50cmllcy5hcHBlbmRSYW5nZShpdC0+dmFsdWUuYmVnaW4oKSwgaXQtPnZhbHVlLmVuZCgpKTsK
IAogICAgIHJldHVybiBlbnRyaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29z
ZXIuY3BwCmluZGV4IDBmNDU3ZDEzNGU5NDRkNWY5OTcxMDE2MTM2Y2Q1MzFhMTIyNTAyZGUuLmQy
NjE0Yjg3MDI0YmY0MjZhOTRmODQxOGQxNTdhNmUyY2MwZWE5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTEwMyw4ICsxMDMsOCBAQCBWZWN0b3I8U3RyaW5n
PiBGaWxlQ2hvb3NlclNldHRpbmdzOjphY2NlcHRUeXBlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gYWNjZXB0VHlwZXM7CiAgICAgYWNjZXB0VHlwZXMucmVzZXJ2ZUNhcGFjaXR5KGFj
Y2VwdE1JTUVUeXBlcy5zaXplKCkgKyBhY2NlcHRGaWxlRXh0ZW5zaW9ucy5zaXplKCkpOwotICAg
IGFjY2VwdFR5cGVzLmFwcGVuZChhY2NlcHRNSU1FVHlwZXMpOwotICAgIGFjY2VwdFR5cGVzLmFw
cGVuZChhY2NlcHRGaWxlRXh0ZW5zaW9ucyk7CisgICAgYWNjZXB0VHlwZXMuYXBwZW5kUmFuZ2Uo
YWNjZXB0TUlNRVR5cGVzLmJlZ2luKCksIGFjY2VwdE1JTUVUeXBlcy5lbmQoKSk7CisgICAgYWNj
ZXB0VHlwZXMuYXBwZW5kUmFuZ2UoYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKSwgYWNjZXB0
RmlsZUV4dGVuc2lvbnMuZW5kKCkpOwogICAgIHJldHVybiBhY2NlcHRUeXBlczsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
CmluZGV4IDVkNzc2YWRkOGExYzNjMTg3NTNiNjg5ZDY2NDk2MGQ1ZWIxYTk1YmIuLmNkY2M0OWRh
MDk5NjViYTgzN2NkNDk5ZWNhNTFkMGI2NWRjMGExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKFZlY3RvcjxjaGFyPiYg
Y2h1bmssIGJvb2wgaW5jbHVkZVNlcGFyYXQKICAgICAgICAgICAgIG1fc2VwYXJhdG9ySW5kZXgr
KzsKICAgICAgICAgICAgIGlmIChtX3NlcGFyYXRvckluZGV4ID09IG1fc2VwYXJhdG9yLnNpemUo
KSkgewogICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlU2VwYXJhdG9yKQotICAgICAgICAgICAg
ICAgICAgICBjaHVuay5hcHBlbmQobV9zZXBhcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBj
aHVuay5hcHBlbmRSYW5nZShtX3NlcGFyYXRvci5iZWdpbigpLCBtX3NlcGFyYXRvci5lbmQoKSk7
CiAgICAgICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRj
ZWFlYjViMTc0NmI3ZDhjZi4uNWIxNDA1YTM2MzBhNDk4MzI3MThhNmQ4NDRkNzZiMWMwNmJhZTY5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRp
YUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKICAgICAgICAgZW5naW5lc1tpXS0+Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmQoZW5n
aW5lU2l0ZXMpOworICAgICAgICBzaXRlcy5hcHBlbmRSYW5nZShlbmdpbmVTaXRlcy5iZWdpbigp
LCBlbmdpbmVTaXRlcy5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTJhNDc4
OWM4OWE0Y2FmMDU0MzY3N2M4MzRjNDFlZDQyYWNhMWMyMy4uOTgwOWI3OGFjN2YwZmRjY2I1NWVm
Mjg3OGQ4YzI5NzlkYmZhMzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKICAgICB1bnNpZ25lZCBz
aXplID0gZGlydHlUaWxlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHNp
emU7ICsrbikgewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gcGFpbnRlZFJlY3RzID0gZGlydHlU
aWxlc1tuXS0+dXBkYXRlQmFja0J1ZmZlcigpOwotICAgICAgICBwYWludGVkQXJlYS5hcHBlbmQo
cGFpbnRlZFJlY3RzKTsKKyAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kUmFuZ2UocGFpbnRlZFJl
Y3RzLmJlZ2luKCksIHBhaW50ZWRSZWN0cy5lbmQoKSk7CiAgICAgICAgIGRpcnR5VGlsZXNbbl0t
PnN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAy
MmZlMjdiMGMzNGM4YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uM2U2YzVlYWZkMjJlNTYwNDhm
MjgzODlkY2I0NjljZWRlMmFmMTliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5
ZXJEZXB0aFJlYWNoZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3Vi
bGF5ZXJzID0gbV9zdHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHBy
aW1hcnlMYXllckNoaWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAg
cHJpbWFyeUxheWVyQ2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBw
cmltYXJ5TGF5ZXJDaGlsZHJlbi5hcHBlbmRSYW5nZShjdXN0b21TdWJsYXllcnMtPmJlZ2luKCks
IGN1c3RvbVN1YmxheWVycy0+ZW5kKCkpOwogCiAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7
CiAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZhZjQ2ZjdmNGFjZjg2MmMy
OTY5MTkzMDU2Zi4uMmZjOWY3NTkwOGRmNWVhNjYzNGE5N2U5YmY5NWY2YzdhY2Y3YTk3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTg5LDcg
Kzg5LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHNlbGVjdGlvblBhc3RlYm9hcmRUeXBlcyhi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBib29sIHMKICAgICByZXR1cm4gdHlwZXM7CiB9CiAK
LXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKK3N0YXRp
YyBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKICAgICBWZWN0b3I8U3Ry
aW5nPiB0eXBlczsKICAgICAKQEAgLTEwNiw3ICsxMDYsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3Rv
cjxTdHJpbmc+IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgVmVjdG9yPFN0cmlu
Zz4gdHlwZXM7CiAgICAgCiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1RJRkZQYm9hcmRUeXBl
KSk7Ci0gICAgdHlwZXMuYXBwZW5kKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CisgICAgZm9yIChj
b25zdCBTdHJpbmcmIHR5cGU6IHdyaXRhYmxlVHlwZXNGb3JVUkwoKSkKKyAgICAgICAgdHlwZXMu
YXBwZW5kKHR5cGUpOwogICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNSVEZEUGJvYXJkVHlwZSkp
OwogICAgIHJldHVybiB0eXBlczsKIH0KQEAgLTExNCw3ICsxMTUsOCBAQCBzdGF0aWMgaW5saW5l
IFZlY3RvcjxTdHJpbmc+IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gd3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiB0eXBlczsKLSAgICB0eXBlcy5hcHBlbmQoY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkp
OworICAgIGZvciAoY29uc3QgU3RyaW5nJiB0eXBlOiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1h
Z2UoKSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKHR5cGUpOwogICAgIHJldHVybiB0eXBlczsKIH0K
IApAQCAtMTg3LDcgKzE4OSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9y
PFN0cmluZz4gY2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4g
Y2xpZW50RGF0YTsKICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgp
LCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVz
KTsKKyAgICB0eXBlcy5hcHBlbmRSYW5nZShjbGllbnRUeXBlcy5iZWdpbigpLCBjbGllbnRUeXBl
cy5lbmQoKSk7CiAKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpLT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApp
bmRleCA1NjdiZDYwYjk5NzQ5MjcxNDNiZTJiZGEyMjAzNzhjZjY5NTdlNjkzLi45NjcwM2NkYTUx
NDcwNTkxOGJjYTNhN2E0YTY0NjhiNDFiNzhjNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgVmVjdG9yPGNoYXI+IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVCb3VuZGFyeVN0
cmluZygpCiAgICAgICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChhbHBoYU51bWVyaWNFbmNvZGluZ01h
cFtyYW5kb21uZXNzICYgMHgzRl0pOwogICAgIH0KIAotICAgIGJvdW5kYXJ5LmFwcGVuZChyYW5k
b21CeXRlcyk7CisgICAgYm91bmRhcnkuYXBwZW5kUmFuZ2UocmFuZG9tQnl0ZXMuYmVnaW4oKSwg
cmFuZG9tQnl0ZXMuZW5kKCkpOwogICAgIGJvdW5kYXJ5LmFwcGVuZCgwKTsgLy8gQWRkIGEgMCBh
dCB0aGUgZW5kIHNvIHdlIGNhbiB1c2UgdGhpcyBhcyBhIEMtc3R5bGUgc3RyaW5nLgogICAgIHJl
dHVybiBib3VuZGFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKaW5kZXggNGQwZmZiZWMzZjEwZGUyODQ5NmY4NmQwMjEyY2UzMTA4MGM4NzRhYi4uZmNlMDU5
NTlhZDcxNWRhODM4NzRiZjc0MTQ5N2YzNTMwOTgxMzdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAgICBWZWN0b3I8
U3RyaW5nPiBtb3pQYXRoczsKICAgICBTdHJpbmcgbW96UGF0aChnZXRlbnYoIk1PWl9QTFVHSU5f
UEFUSCIpKTsKICAgICBtb3pQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRy
aWVzICovIGZhbHNlLCBtb3pQYXRocyk7Ci0gICAgcGF0aHMuYXBwZW5kKG1velBhdGhzKTsKKyAg
ICBwYXRocy5hcHBlbmRSYW5nZShtb3pQYXRocy5iZWdpbigpLCBtb3pQYXRocy5lbmQoKSk7CiAj
ZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21l
RGlyZWN0b3J5UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRoLmFwcGVuZChTdHJpbmcoIi9MaWJy
YXJ5L0ludGVybmV0IFBsdWctSW5zIikpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3Rv
cjxTdHJpbmc+IHF0UGF0aHM7CiAgICAgU3RyaW5nIHF0UGF0aChxZ2V0ZW52KCJRVFdFQktJVF9Q
TFVHSU5fUEFUSCIpLmNvbnN0RGF0YSgpKTsKICAgICBxdFBhdGguc3BsaXQoVUNoYXIoJzonKSwg
LyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHF0UGF0aHMpOwotICAgIHBhdGhzLmFwcGVu
ZChxdFBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRSYW5nZShxdFBhdGhzLmJlZ2luKCksIHF0UGF0
aHMuZW5kKCkpOwogI2VuZGlmCiAKICAgICByZXR1cm4gcGF0aHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDcwMmM0YTdh
NzQ0ZmFmMTM5NmI1M2M0NWYwODcwMzliOGI2ZTFjYTYuLmU2YzFjODJlY2U1NDk5YWI2ZWFiOTAz
YTgyNWJhNDhiOTdhMzU3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYg
dG9wUmVzb2x2ZXIsCiAgICAgICAgIC8vIElmIHdlIGVuY291bnRlcmVkIGFueSBuZXN0ZWQgaXNv
bGF0ZSBydW5zLCBqdXN0IG1vdmUgdGhlbQogICAgICAgICAvLyB0byB0aGUgdG9wIHJlc29sdmVy
J3MgbGlzdCBmb3IgbGF0ZXIgcHJvY2Vzc2luZy4KICAgICAgICAgaWYgKCFpc29sYXRlZFJlc29s
dmVyLmlzb2xhdGVkUnVucygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdG9wUmVzb2x2ZXIu
aXNvbGF0ZWRSdW5zKCkuYXBwZW5kKGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkpOwor
ICAgICAgICAgICAgdG9wUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuYXBwZW5kUmFuZ2UoaXNvbGF0
ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5iZWdpbigpLCBpc29sYXRlZFJlc29sdmVyLmlzb2xh
dGVkUnVucygpLmVuZCgpKTsKICAgICAgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRS
dW5zKCkuY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYTNhNDkxMWMzYTk1MTA2
NjM5YmQ2NGQ1NzY2YTQyMmE1NDU2MmMyNy4uNjk2Zjk4M2Y0NDU5ZGVkZWYyMWM0MTUzMzc4NDc0
M2E1MTc0ZTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKICAgICB7Ci0gICAgICAgIG1fb3ZlcmxhcFN0YWNr
W21fb3ZlcmxhcFN0YWNrLnNpemUoKSAtIDJdLmFwcGVuZChtX292ZXJsYXBTdGFjay5sYXN0KCkp
OworICAgICAgICBtX292ZXJsYXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBl
bmRSYW5nZShtX292ZXJsYXBTdGFjay5sYXN0KCkuYmVnaW4oKSwgbV9vdmVybGFwU3RhY2subGFz
dCgpLmVuZCgpKTsKICAgICAgICAgbV9vdmVybGFwU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApp
bmRleCAzZDUxMjkzZDEyYzJjODhlMzBiODMwZWFmZjg2YWE3NzliYjhlOTFhLi5mNWJiMTdjZmUy
NTJlN2YyNzBhZWMxYzA5ZGNhOTc0ZTNlYTQzNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTMyMiw3ICsxMzIyLDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZVNlY3Rpb246OnNwbGl0Q29sdW1uKHVuc2lnbmVkIHBvcywgdW5zaWduZWQg
Zmlyc3QpCiAgICAgICAgIFJvdyYgciA9IG1fZ3JpZFtyb3ddLnJvdzsKICAgICAgICAgci5pbnNl
cnQocG9zICsgMSwgQ2VsbFN0cnVjdCgpKTsKICAgICAgICAgaWYgKHJbcG9zXS5oYXNDZWxscygp
KSB7Ci0gICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFwcGVuZChyW3Bvc10uY2VsbHMpOwor
ICAgICAgICAgICAgcltwb3MgKyAxXS5jZWxscy5hcHBlbmRSYW5nZShyW3Bvc10uY2VsbHMuYmVn
aW4oKSwgcltwb3NdLmNlbGxzLmVuZCgpKTsKICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCog
Y2VsbCA9IHJbcG9zXS5wcmltYXJ5Q2VsbCgpOwogICAgICAgICAgICAgQVNTRVJUKGNlbGwpOwog
ICAgICAgICAgICAgQVNTRVJUKGNlbGwtPmNvbFNwYW4oKSA+PSAocltwb3NdLmluQ29sU3BhbiA/
IDF1IDogMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAppbmRleCA5Mjk0NTI2OTY1OTFkN2E3
MGI0YjFhNzdlYjA0NjdjNzJkZDM4NDQyLi5lYmNmYWNhOWQ3M2U0MzVlNGU4MTg4MzZiNjY3ZTVi
MzE3YTViYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaApAQCAtMTI0LDcgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIFJlZlB0cjxHbHlwaE1hcE5vZGU+IG5vZGUgPSBjdXJyZW50
TGF5ZXItPmdldChjaGFyYWN0ZXIpOwogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZ2x5cGhzLmFwcGVuZChub2RlLT5nbHlwaHMpOwor
ICAgICAgICAgICAgZ2x5cGhzLmFwcGVuZFJhbmdlKG5vZGUtPmdseXBocy5iZWdpbigpLCBub2Rl
LT5nbHlwaHMuZW5kKCkpOwogICAgICAgICAgICAgY3VycmVudExheWVyID0gJm5vZGUtPmNoaWxk
cmVuOwogICAgICAgICAgICAgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoY2x1c3Rlckxlbmd0aCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAppbmRleCBiYzc2N2Q1YzM4YmVlNzEy
NzhjYTFjZjAyMTc0N2Y4YWFjMDBjMzU4Li4xMDZlODUwMjJjMjU5MTYyZWU2NWExNTg2YjJhZmJl
YmVlYzk2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCkBAIC01MCw3ICs1MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIC8vIE5vZGVTZXQgaXRzZWxmIGRvZXMg
bm90IHZlcmlmeSB0aGF0IG5vZGVzIGluIGl0IGFyZSB1bmlxdWUuCiAgICAgICAgICAgICB2b2lk
IGFwcGVuZChOb2RlKiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9CiAgICAgICAgICAg
ICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPE5vZGU+IG5vZGUpIHsgbV9ub2Rlcy5hcHBlbmQobm9k
ZSk7IH0KLSAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVTZXQpIHsg
bV9ub2Rlcy5hcHBlbmQobm9kZVNldC5tX25vZGVzKTsgfQorICAgICAgICAgICAgdm9pZCBhcHBl
bmQoY29uc3QgTm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZFJhbmdlKG5vZGVTZXQu
bV9ub2Rlcy5iZWdpbigpLCBub2RlU2V0Lm1fbm9kZXMuZW5kKCkpOyB9CiAKICAgICAgICAgICAg
IC8vIFJldHVybnMgdGhlIHNldCdzIGZpcnN0IG5vZGUgaW4gZG9jdW1lbnQgb3JkZXIsIG9yIDAg
aWYgdGhlIHNldCBpcyBlbXB0eS4KICAgICAgICAgICAgIE5vZGUqIGZpcnN0Tm9kZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggMmUzMGJjYjc4N2UyNjIxNTZkNjBhOTlk
Mzc5ZTkzOGExNTIyYTc4NS4uN2Q4YTVjOWMzZjBiMzhjZjdjMzliNjE5YTVlNzE3YzA2OGMzMTU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC01NSw4ICs1NSwxMCBAQCB2b2lkIE5l
dHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogY29ubmVjdAogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBz
YW5kYm94RXh0ZW5zaW9ucyA9IG5ld1NhbmRib3hFeHRlbnNpb25zOwogICAgIGNvbnN0IEJsb2JE
YXRhSXRlbUxpc3QmIGl0ZW1zID0gZGF0YS0+aXRlbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MCwgY291bnQgPSBpdGVtcy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChp
dGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRlbTo6QmxvYikKLSAgICAgICAgICAgIHNhbmRib3hF
eHRlbnNpb25zLmFwcGVuZChtX3NhbmRib3hFeHRlbnNpb25zLmdldChpdGVtc1tpXS51cmwuc3Ry
aW5nKCkpKTsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpCbG9i
KSB7CisgICAgICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBtX3NhbmRib3hFeHRlbnNpb25zLmdl
dChpdGVtc1tpXS51cmwuc3RyaW5nKCkpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmRS
YW5nZShleHRlbnNpb25zLmJlZ2luKCksIGV4dGVuc2lvbnMuZW5kKCkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgZGF0YSk7CkBA
IC0xMDcsNyArMTA5LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAKICAgICBtX2Jsb2JzRm9y
Q29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4gPiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzYW5kYm94RXh0ZW5zaW9u
cyhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0
KHVybC5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCmluZGV4IDUyZDJkZjljMTk4
OTI5M2ExMDM2NWI5NDg2NDUxYTFhZDg2OTcxYTUuLjY3ZDBjY2ZlY2VmMDk4ZTA1MzZkNjM2NTc4
YWE0MmY4OTEyMGJmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKik7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+ID4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRlbnNpb25z
KGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Js
b2JSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
U2NoZWR1bGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2No
ZWR1bGFibGVMb2FkZXIuY3BwCmluZGV4IDlkNDZmNzQ4YmY0YzIwZmM2OWY2MGE1YTc1NmRhNmRh
MDJhZjVjYjUuLjAyYTcwMjhlZDJjNmNjOWIzZGUzMmU5NWM0NTg2NTJkM2QzMWQ0MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgU2NoZWR1bGFibGVMb2FkZXI6OlNjaGVkdWxhYmxlTG9hZGVy
KGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWUKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIGNvdW50ID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkg
ewogICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6
OmVuY29kZWRCbG9iKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiA+IGJsb2JFbGVtZW50RXh0ZW5zaW9ucyA9IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNo
YXJlZCgpLnNhbmRib3hFeHRlbnNpb25zKGVsZW1lbnRzW2ldLm1fdXJsKTsKLSAgICAgICAgICAg
ICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKGJsb2JFbGVtZW50RXh0
ZW5zaW9ucyk7CisgICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25z
LmFwcGVuZFJhbmdlKGJsb2JFbGVtZW50RXh0ZW5zaW9ucy5iZWdpbigpLCBibG9iRWxlbWVudEV4
dGVuc2lvbnMuZW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggN2EwODRj
NmE5NTljZTY4YWUxMGJmYjAyNWI4YjJlZDA1NTNlYjg0OS4uYmZlYWUzMTQ5MzRmZDE5ZTk1ZjVj
ZTFkZTc3ZTY3OGU0NTE4ODk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpT
eW5jTWVzc2FnZVN0YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKENvbm5lY3Rpb24qIGFsbG93ZWRDb25u
ZWN0aW8KIAogICAgIGlmICghbWVzc2FnZXNUb1B1dEJhY2suaXNFbXB0eSgpKSB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0
Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kKG1lc3NhZ2VzVG9QdXRCYWNrKTsKKyAg
ICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5k
UmFuZ2UobWVzc2FnZXNUb1B1dEJhY2suYmVnaW4oKSwgbWVzc2FnZXNUb1B1dEJhY2suZW5kKCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKaW5kZXggZDRjOWVjMmM1ZjJl
NTJmZjBhY2E0NTliZTc0MjZjMzFhOWZhM2U0Yy4uNDczMzJmMGY5NGM1YWFkMjlmN2I5NGJhYjE0
YmM5ZmE5ZDUyZTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCkBAIC03Miw3ICs3Miw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKCkK
ICAgICBpZiAoIW1vemlsbGFQYXRocy5pc0VtcHR5KCkpIHsKICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gcGF0aHM7CiAgICAgICAgIG1vemlsbGFQYXRocy5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxv
d0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBh
dGhzKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZFJhbmdlKHBhdGhzLmJlZ2luKCksIHBhdGhzLmVu
ZCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMxMmI5ZDcwMjIzOWJiOWUxNzU1MWFiM2Nk
YzM3MzkyNTc3OWZkYTEuLjY1M2UyNjA0MThjYTM2MjE3M2FlM2RiOWI4MjdhYzgzNjA0MjNmNmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAg
KFdUUjo6Y29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZSk6CisKIDIwMTMtMDUtMDIgIE5pY28g
V2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBhIHN0YWxlIHNj
cmlwdCBmaWxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCAzNTNlYThkNjdjOTNkOTY5NjNkMWFhYjQ4NWEyZGFl
YTRkZmU2NTA3Li4yYjYyN2JjY2Y5ZWE0MTc1MjAyZDZmNzZkZDg1YjJmMTJiNWM0NTMzIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAg
ICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1
ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2
YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVuZFJhbmdlKHZhbHVlQnVmZmVyLmJlZ2luKCks
IHZhbHVlQnVmZmVyLmVuZCgpKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggOGE5NTUxYzg1ZmE4YTg3YmRlNDA1YTM5
N2FmNWU4MDIwZThiOTkxNi4uOTVjZmFlOGNmNDczYmY0Mjc4NWM0MjFhMGY5MmZlZjIwNTg1OWM4
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNzMs
NyArMTczLDcgQEAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFs
dWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHYKIAogICAgIFZlY3RvcjxVbmlDaGFy
PiB2YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7CiAgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6
dmFsdWVCdWZmZXIuZGF0YSgpXTsKLSAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKyAg
ICBidWZmZXIuYXBwZW5kUmFuZ2UodmFsdWVCdWZmZXIuYmVnaW4oKSwgdmFsdWVCdWZmZXIuZW5k
KCkpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200438</attachid>
            <date>2013-05-03 10:49:00 -0700</date>
            <delta_ts>2013-05-05 09:44:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130503104813.patch</filename>
            <type>text/plain</type>
            <size>52218</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ODA1NzEwMDA0YzU1NWJiNTE5NGYxOGYyNzZiNGY5Y2U5M2Y0OGEyLi5mNjkwNTE0Nzc5M2NlMmRl
MTZlY2MyZDc5NTYxYjk2Nzc4YjUxZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4KKworICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldElkZW50aWZpZXJz
KToKKwogMjAxMy0wNS0wMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNldCBQYXRoIGluIG1ha2VmaWxlIGZvciBBcHBsZVdpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODE2NmI4NjVh
YzMwM2JhNTUzZGRhNzhmYzEyYzE1NTY3MzNmOTAwZi4uZjEwYjk2OGYxN2QxYzI5MTg5YzBkMWVk
Y2QwNzA3YTJlOWJlMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wNS0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgVmVj
dG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IgY29uZmxpY3RzIHdpdGggcnZhbHVlcyBpbiBDKysxMSBz
byByZW1vdmUgaXQgYW5kCisgICAgICAgIHJlcGxhY2UgY2FsbHMgdG8gaXQgd2l0aCBjYWxscyB0
byBhcHBlbmRSYW5nZS4gQWxzbywgZ2V0IHJpZCBvZiBhcHBlbmRWZWN0b3IuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChWZWN0b3IpOgorCiAyMDEzLTA1LTAyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJsb29tRmlsdGVy
IGZhc3QgYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkNjk2N2QyOWRhZGYzNzczNTI4MDFkZWEx
OGI1ODM5ODRkN2JiMGMuLmFlNWZkZmM1ZWFjY2I5YWJmZWIxMmRkM2U4ZTVkYThlMWUzMDRlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2OSBAQAogMjAxMy0wNS0wMiAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbW92ZSB0aGUgVmVjdG9yOjphcHBl
bmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kUmFuZ2UgaW5zdGVhZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRh
YmxlOjpjZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNl
YW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAg
ICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0NoYXJhY3Rlcik6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRUb2tlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlZUVFRva2VuOjphZGROZXdDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRUb2tlbjo6YWRkTmV3QW5ub3RhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0
VHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNG
b3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6T3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6Cisg
ICAgICAgICogeG1sL1hQYXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5v
ZGVTZXQ6OmFwcGVuZCk6CisKKzIwMTMtMDUtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBXZWJDb3JlT2JqQ0V4dHJhcyBieSB1c2lu
ZyBXVEY6OmJpbmQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTUyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzA3YTdjMjZlM2I3ZTRiMmM1ODNjYTM3ZGE0MWE3
ODJkMGM5YjM4Yi4uZTAyMzMwMjU0MzAxMTNhNjAzYTViZWE2YzA5MzI3Y2Y2MjU4OTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTA1LTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBv
dmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRSYW5nZSBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAoTmV0d29ya0Jsb2JSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxv
YWRlcjo6U2NoZWR1bGFibGVMb2FkZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0
YXRlOjpkaXNwYXRjaE1lc3NhZ2VzKToKKwogMjAxMy0wNS0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTM3NDAzNzU+IE5v
bi1BU0NJSSBkb3dubG9hZGVkIGZpbGUgbmFtZXMgYXJlIGdhcmJsZWQgd2hlbiB1c2luZyBOZXR3
b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGUzMjc1NjU1NTQ3MmIyYWQyY2NhNzBmMzRkZGJjYzg5OGQwZjRiNTUuLjhlZDRiMTI3Y2Fi
MzcyNTViN2M3ZGI0MTY1MmNiMDdkZDg3OTBlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEwODUsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYg
aWRlbnRpZmllcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRl
bnRpZmllcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kVmVj
dG9yKGlkZW50aWZpZXJzKTsKKyAgICAgICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kUmFuZ2Uo
aWRlbnRpZmllcnMuYmVnaW4oKSwgaWRlbnRpZmllcnMuZW5kKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4mIGNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMy
NTRjMDhiZGE3MWNjN2Y1MTM3Yy4uNGEzYTRiZmVlYTA3OTVmMTMxYjUzYWQwMmVjODliMGYyMWZl
OTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTYyMCw4ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFs
KTsKLSAgICAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVLCBzaXplX3Qgb3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9y
PFUsIG90aGVyQ2FwYWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
dHJ5QXBwZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IHZvaWQgaW5zZXJ0KHNpemVfdCBwb3NpdGlvbiwgY29uc3QgVSosIHNpemVfdCk7CkBAIC0x
MDYyLDIxICsxMDYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICsrbV9zaXplOwogICAg
IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBi
ZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNv
IGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxsIHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0g
ICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZhbC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5PgotICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kKGNvbnN0IFZlY3Rv
cjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHZhbC5iZWdp
bigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gdGVtcGxhdGU8dHlw
ZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+Ci0gICAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+OjphcHBlbmRWZWN0b3IoY29uc3QgVmVj
dG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCi0gICAgewotICAgICAgICBhcHBlbmQodmFsLmJl
Z2luKCksIHZhbC5zaXplKCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgogICAgIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+OjppbnNlcnQoc2l6ZV90IHBvc2l0aW9uLCBjb25zdCBVKiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhl
ZmI0NThjY2FkMi4uYWJjMmYzNjJkOTBhZTRkZWNjMDY1NDRiYTVmN2I2MzY3OGYxODZlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC05MDcsNyArOTA3LDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3Rvcjxj
aGFyPiB2OwotICAgIHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgVmVjdG9y
PGNoYXI+IHZlcnNpb25WZWN0b3IgPSBlbmNvZGVWYXJJbnQodmVyc2lvbik7CisgICAgdi5hcHBl
bmRSYW5nZSh2ZXJzaW9uVmVjdG9yLmJlZ2luKCksIHZlcnNpb25WZWN0b3IuZW5kKCkpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgQVNTRVJUKHZhbHVl
KTsKICAgICB2LmFwcGVuZCh2YWx1ZS0+ZGF0YSgpLCB2YWx1ZS0+c2l6ZSgpKTsKQEAgLTExOTAs
OCArMTE5MSw4IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhCiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGluZGV4RGF0YUtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQsIGVuY29kZUlEQktleShrZXkpLCByZWNvcmRJZGVudGlmaWVyLnBy
aW1hcnlLZXkoKSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChl
bmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKLSAgICBkYXRhLmFwcGVu
ZChyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CisgICAgYXBwZW5kVmVjdG9yKGRhdGEs
IGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOworICAgIGFwcGVuZFZl
Y3RvcihkYXRhLCByZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZlbERC
VHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFjLi5k
NDc1MWM5OTNlZjlhN2M0ZjhkYWYwNjI5MDQ2Njg5NTJmMmYwNWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAt
MzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNvbnN0
IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMubGVu
Z3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVTdHJpbmcocykpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTQxOSwz
MCArNDE5LDMwIEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8
Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBpbnRvCiAgICAgY2FzZSBJREJLZXk6Oklu
dmFsaWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlOdWxsVHlw
ZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZUJ5dGUoSURCS2V5TnVs
bFR5cGVCeXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6QXJyYXlUeXBl
OiB7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5QXJyYXlUeXBlQnl0ZSkp
OworICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVC
eXRlKSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZVZhckludChsZW5ndGgpKTsKKyAgICAgICAgYXBwZW5kVmVj
dG9yKGludG8sIGVuY29kZVZhckludChsZW5ndGgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgIGVuY29kZUlEQktleSgqa2V5LmFycmF5
KClbaV0sIGludG8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5z
aXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ug
SURCS2V5OjpTdHJpbmdUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktl
eVN0cmluZ1R5cGVCeXRlKSk7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgoa2V5LnN0cmluZygpKSk7CisgICAgICAgIGFwcGVuZFZlY3RvcihpbnRvLCBlbmNvZGVC
eXRlKElEQktleVN0cmluZ1R5cGVCeXRlKSk7CisgICAgICAgIGFwcGVuZFZlY3RvcihpbnRvLCBl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChl
bmNvZGVCeXRlKElEQktleURhdGVUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVEb3VibGUoa2V5LmRhdGUoKSkpOworICAgICAgICBhcHBlbmRWZWN0b3IoaW50bywgZW5jb2Rl
Qnl0ZShJREJLZXlEYXRlVHlwZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVu
Y29kZURvdWJsZShrZXkuZGF0ZSgpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNT
aXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3VzU2l6ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVC
eXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZURv
dWJsZShrZXkubnVtYmVyKCkpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVuY29kZUJ5
dGUoSURCS2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgYXBwZW5kVmVjdG9yKGludG8sIGVu
Y29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91
c1NpemUsIGludG8uc2l6ZSgpIC0gcHJldmlvdXNTaXplID09IDkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTEzNSwyMSArMTEzNSwyMSBAQCBLZXlQcmVmaXg6OlR5cGUgS2V5UHJlZml4
Ojp0eXBlKCkgY29uc3QKIFZlY3RvcjxjaGFyPiBTY2hlbWFWZXJzaW9uS2V5OjplbmNvZGUoKQog
ewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVCeXRlKFNjaGVtYVZlcnNpb25UeXBlQnl0ZSkpOworICAgIGFwcGVu
ZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoU2NoZW1hVmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0
dXJuIHJldDsKIH0KIAogVmVjdG9yPGNoYXI+IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZUJ5dGUoTWF4RGF0YWJhc2VJZFR5cGVCeXRlKSk7CisgICAgYXBwZW5k
VmVjdG9yKHJldCwgZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1
cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAg
ICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQu
YXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3Rv
cihyZXQsIGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7
CiB9CiAKQEAgLTExODAsOCArMTE4MCw4IEBAIGNvbnN0IGNoYXIqIERhdGFiYXNlRnJlZUxpc3RL
ZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIERhCiBWZWN0
b3I8Y2hhcj4gRGF0YWJhc2VGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCkK
IHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gS2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZVZhckludChkYXRhYmFzZUlkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJl
dCwgZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0
b3IocmV0LCBlbmNvZGVWYXJJbnQoZGF0YWJhc2VJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAK
QEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0IGNoYXIqIERhdGFiYXNlTmFtZUtleTo6ZGVjb2Rl
KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgRGF0YWJhCiBWZWN0b3I8Y2hh
cj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5
cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikp
OwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsK
KyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7
CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlU3RyaW5nV2l0aExlbmd0aChvcmlnaW4pKTsK
KyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFt
ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyNTUsNyArMTI1NSw3IEBAIFZlY3Rvcjxj
aGFyPiBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBNZXRh
RGF0YVR5cGUgbWV0YURhCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAg
ICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRl
KG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyOTQsOSArMTI5NCw5
IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRh
YmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJl
dC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUpKTsKLSAgICBy
ZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5
dGUoT2JqZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwg
ZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVCeXRlKG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEzNjksMTAg
KzEzNjksMTAgQEAgVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwKIHsKICAgICBLZXlQcmVmaXggcHJl
Zml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7
Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZVZhckludChpbmRleElkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFE
YXRhVHlwZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUoSW5kZXhNZXRhRGF0
YVR5cGVCeXRlKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlVmFySW50KG9iamVjdFN0
b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwor
ICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0
dXJuIHJldDsKIH0KIApAQCAtMTQzMiw4ICsxNDMyLDggQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0
b3JlRnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3QKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVj
dFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9i
amVjdFN0b3JlSWQpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0
b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhcklu
dChvYmplY3RTdG9yZUlkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTQ4OSw5ICsxNDg5
LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRh
dGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVCeXRlKEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5h
cHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZVZhckludChpbmRleElkKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShJbmRl
eEZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQo
b2JqZWN0U3RvcmVJZCkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVZhckludChpbmRl
eElkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTU0NSw4ICsxNTQ1LDggQEAgVmVjdG9y
PGNoYXI+IE9iamVjdFN0b3JlTmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IFN0cmluZyYgb2JqZWMKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwog
ICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVCeXRlKE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlU3RyaW5nV2l0aExlbmd0aChvYmplY3RTdG9yZU5hbWUpKTsKKyAgICBhcHBlbmRWZWN0b3Io
cmV0LCBlbmNvZGVCeXRlKE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSkpOworICAgIGFwcGVuZFZl
Y3RvcihyZXQsIGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTU4OCw5ICsxNTg4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4
TmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY28KIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKElu
ZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhO
YW1lKSk7CisgICAgYXBwZW5kVmVjdG9yKHJldCwgZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlw
ZUJ5dGUpKTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJ
ZCkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhO
YW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTYyMCw3ICsxNjIwLDcgQEAgVmVjdG9y
PGNoYXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3Jl
YXRlV2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5k
ZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29k
ZWRVc2VyS2V5KTsKIAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xNjYyLDcgKzE2NjIsNyBAQCBW
ZWN0b3I8Y2hhcj4gRXhpc3RzRW50cnlLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoS2V5UHJlZml4
OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIFNwZWNp
YWxJbmRleE51bWJlcikpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7
Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkS2V5KTsKKyAgICBhcHBlbmRWZWN0b3IocmV0LCBlbmNv
ZGVkS2V5KTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNzMzLDkgKzE3MzMsOSBAQCBWZWN0
b3I8Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZFBy
aW1hcnlLZXkpOworICAgIGFwcGVuZFZlY3RvcihyZXQsIGVuY29kZWRVc2VyS2V5KTsKKyAgICBh
cHBlbmRWZWN0b3IocmV0LCBlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKKyAgICBhcHBl
bmRWZWN0b3IocmV0LCBlbmNvZGVkUHJpbWFyeUtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGlu
Zy5oCmluZGV4IDU2MTk3ZjY3NzA3NjMwYjgxZDFiMGE5ZGJiZmM1YTc2ODA0NGI5MTUuLjAxYjkz
ZjdjMjY0MTBmMmE1OWY2MzU4NWYxY2M0MTkyZWFhNjA3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTQ3LDYgKzQ3
LDE0IEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIgTWluaW11bUluZGV4SWQgPSAzMDsKIC8vIHRvIHJl
ZHVjZSB0aGUgbWVtb3J5IHJlLWFsbG9jYXRpb25zIHdoZW4gdGhlIFZlY3RvcnMgYXJlIGFwcGVu
ZGVkLgogc3RhdGljIGNvbnN0IHNpemVfdCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSA9IDMyOwog
CisvLyBGSVhNRTogQWxsIHRoZXNlIGVuY29kZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGNoYW5nZWQg
dG8gZW5jb2RlIGludG8gYSB2ZWN0b3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgdGVtcG9yYXJpZXMu
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK3N0YXRpYyB2
b2lkIGFwcGVuZFZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+JiBkZXN0LCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIHNyYykKK3sKKyAgICBkZXN0LmFwcGVuZFJhbmdlKHNyYy5iZWdpbigpLCBz
cmMuZW5kKCkpOworfQorCiBWZWN0b3I8Y2hhcj4gZW5jb2RlQnl0ZSh1bnNpZ25lZCBjaGFyKTsK
IGNvbnN0IGNoYXIqIGRlY29kZUJ5dGUoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQs
IHVuc2lnbmVkIGNoYXImIGZvdW5kQ2hhcik7CiBWZWN0b3I8Y2hhcj4gbWF4SURCS2V5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggMDQ3MjY2ZWI3OTRiMGU4ZWQwYmY1MTZlM2I3NTJmNmE3ODJjYmM2Mi4uNjNlNWVmYzM0NTE2
YzM3ZTExYjRmY2YwOTU4YjQ4NDE4NjhiMThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpjbGVhcigpCiAgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9k
eSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2
ZXMuCiAgICAgZG8gewogICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOwotICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmRSYW5nZShtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYmVnaW4o
KSwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmVuZCgpKTsKICAgICAgICAgbV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAgICAgfSB3aGlsZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUo
KSk7CiAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2Rl
RGVsZXRpb24oKQogCiAgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVsZXRlTWFya2VkTm9kZXMo
KSBvbiBtYWluIHRocmVhZC4gICAgCiAgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5z
aXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgewotICAgICAgICBtX25vZGVzVG9EZWxl
dGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmRSYW5nZShtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYmVnaW4oKSwgbV9ub2Rl
c01hcmtlZEZvckRlbGV0aW9uLmVuZCgpKTsKICAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0
aW9uLmNsZWFyKCk7CiAKICAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcAppbmRleCA4NjY0YWM3NGZkOGFkYmRkZjFlMDIxZDgzNjZmMTg1YzAxM2NlZWEzLi5j
ODZhODM1MGJjODA0N2Y5NDU2OGE2NzhhNTUyMjg2M2NiZmU1Y2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCwgSGFzaFNlCiAgICAgaWYgKCFyb3ctPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsK
ICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7Cisg
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kUmFuZ2Uocm93LT5jaGlsZHJlbigpLmJlZ2luKCksIHJv
dy0+Y2hpbGRyZW4oKS5lbmQoKSk7CiAKICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKaW5kZXggNzFhZmFiNWQ4N2Q3OTYwYjYwMjVlNDc1ZjRlNDZhYzU5
Nzk2MGI2MS4uZTM5NGFmZGRiNTA4NzgwN2U4OWVkMDg5YWVhZGJhYjJmNzg3ZjExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJl
bigpCiAgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9S
TShHVEspCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZFJh
bmdlKHJvdy0+Y2hpbGRyZW4oKS5iZWdpbigpLCByb3ctPmNoaWxkcmVuKCkuZW5kKCkpOwogI2Vu
ZGlmCiAgICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KQEAgLTQ2
NywxMCArNDY3LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxzKEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYKICAgICB1cGRhdGVDaGlsZHJl
bklmTmVjZXNzYXJ5KCk7CiAgICAgCiAgICAgaW50IG51bVJvd3MgPSBtX3Jvd3Muc2l6ZSgpOwot
ICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJvd3M7ICsrcm93KSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dDaGlsZHJlbiA9IG1fcm93c1tyb3ddLT5jaGls
ZHJlbigpOwotICAgICAgICBjZWxscy5hcHBlbmQocm93Q2hpbGRyZW4pOwotICAgIH0KKyAgICBm
b3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyArK3JvdykKKyAgICAgICAgY2VsbHMuYXBw
ZW5kUmFuZ2UobV9yb3dzW3Jvd10tPmNoaWxkcmVuKCkuYmVnaW4oKSwgbV9yb3dzW3Jvd10tPmNo
aWxkcmVuKCkuZW5kKCkpOwogfQogICAgIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpj
b2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0M2Zi
MDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi44YjQ1N2I0M2RjZDIwZjE4MTY3YmU3MTBm
ZDNlNmQyYzU2NzdiOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1LDgg
KzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBv
dGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRyc0lu
UnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBhdHRyc0luUnVsZXMuYWRk
KCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwotICAg
IHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVs
ZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRSYW5nZShvdGhlci5zaWJsaW5nUnVsZXMuYmVn
aW4oKSwgb3RoZXIuc2libGluZ1J1bGVzLmVuZCgpKTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1
bGVzLmFwcGVuZFJhbmdlKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMuYmVnaW4oKSwgb3Ro
ZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcy5lbmQoKSk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVz
ID0gdXNlc0ZpcnN0TGluZVJ1bGVzIHx8IG90aGVyLnVzZXNGaXJzdExpbmVSdWxlczsKICAgICB1
c2VzQmVmb3JlQWZ0ZXJSdWxlcyA9IHVzZXNCZWZvcmVBZnRlclJ1bGVzIHx8IG90aGVyLnVzZXNC
ZWZvcmVBZnRlclJ1bGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4
IDY5NTI3OTNlN2UyMmFhNWVhMDM2NmM4NWQ4MmU3NGE0NDlhNjRlMmMuLjU5MDQyMGQxNGIxZjA3
ZmMzN2QzMGU2ZWRjYTYwOTUzNWVkOGU1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkVG9NYXRj
aGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QKIAogICAg
IEFTU0VSVChoYXNoKTsKICAgICBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSBjYWNoZUl0ZW07
Ci0gICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVzLmFwcGVuZChtYXRjaFJlc3VsdC5tYXRj
aGVkUHJvcGVydGllcyk7CisgICAgY2FjaGVJdGVtLm1hdGNoZWRQcm9wZXJ0aWVzLmFwcGVuZFJh
bmdlKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmJlZ2luKCksIG1hdGNoUmVzdWx0Lm1h
dGNoZWRQcm9wZXJ0aWVzLmVuZCgpKTsKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1
bHQucmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwg
UmVuZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8v
IFRoZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9y
IHRoZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYw
YzljMTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2MTcuLmViOTQ4ZDk4NmFlOGZjOWI5Y2Q4
N2M3ODlhZTFjMDgxY2FkMzk4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ0MSw3ICs0NDEsOSBAQCBzdGF0aWMg
dm9pZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElG
cmFtZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxl
c3NQYXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1s
ZXNzUGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMgPSBzZWFtbGVzc1BhcmVudElGcmFt
ZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+YWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMoKTsKKyAgICBzaGVldHMuYXBwZW5kUmFuZ2UoYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMu
YmVnaW4oKSwgYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuZW5kKCkpOwogfQogCiBib29sIERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZs
YWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0NjQsOCBAQCBib29sIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxh
ZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0g
ICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMo
KSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVT
aGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kUmFuZ2UoaW5qZWN0ZWRB
dXRob3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKS5l
bmQoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kUmFuZ2UoZG9jdW1lbnRBdXRo
b3JTdHlsZVNoZWV0cygpLmJlZ2luKCksIGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKS5lbmQo
KSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhh
Y3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0
eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJkNzEyOWQ4MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3
OWUuLmIwNzUwNmZmMTBhMGEzZmZiODM0NzU5NGRjYTQwYWQ3YzJkNjk4ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4
dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICBy
ZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhlbGVtZW50UXVhZHMpOwogICAgICAg
ICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFi
c29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVudFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVj
dCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAg
ICAgICAgICAgICBxdWFkcy5hcHBlbmRSYW5nZShlbGVtZW50UXVhZHMuYmVnaW4oKSwgZWxlbWVu
dFF1YWRzLmVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5p
c1RleHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7CkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFJh
bmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25z
dAogICAgICAgICAgICAgICAgIHJlbmRlclRleHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0
UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogICAgICAgICAgICAgICAgIG1fb3duZXJE
b2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1l
U2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFw
cGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFJhbmdlKHRleHRR
dWFkcy5iZWdpbigpLCB0ZXh0UXVhZHMuZW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CmluZGV4IDA5Y2MyODc0NDE4MTAzOTA5ODExODM0MzkyODQ1MzRhMzI1ZDJiNjMuLjc1ODkzYTU1
MmYyODBhZjhmYzFlMGQ2MDhlMDZmNGE1NmU0YWYxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZwogICAgICAgICBpZiAocmVzdWx0cy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXN1bHRzLnN3YXAoc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChzcGVsbGluZ1Jlc3VsdCk7CisgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZFJhbmdlKHNwZWxsaW5nUmVzdWx0LmJlZ2luKCksIHNwZWxsaW5nUmVzdWx0LmVuZCgp
KTsKICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
aW5kZXggOGE4YWYwNWE5N2ZiNTliZjMwZjlhNTg0N2I0NWIzYzRmZDMwYjcwMS4uNzRiYzk3ZDk0
MmVkYjI5NTQyYTA0NGM3MDEzMmVmZDk2NWYwMzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKQEAgLTUxMCw4ICs1MTAsMTAgQEAgVmVjdG9yPFN0cmluZz4gRm9ybUNv
bnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0
YXQKICAgICBWZWN0b3I8U3RyaW5nPiB0b1JldHVybjsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBt
YXA7CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsKLSAg
ICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigp
OyBpdCAhPSBtYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+dmFs
dWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7CisgICAgZm9yIChTYXZlZEZvcm1TdGF0ZU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKSwgZW5kID0gbWFwLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVmZXJlbmNlZEZpbGVQYXRo
cyA9IGl0LT52YWx1ZS0+Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpOworICAgICAgICB0b1JldHVy
bi5hcHBlbmRSYW5nZShyZWZlcmVuY2VkRmlsZVBhdGhzLmJlZ2luKCksIHJlZmVyZW5jZWRGaWxl
UGF0aHMuZW5kKCkpOworICAgIH0KICAgICByZXR1cm4gdG9SZXR1cm47CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDE5YmM5NTBjYWQzYmRkYTg5MmE0ZGRkNzA1MTE4MDkzZmE4ZTA3OGMuLjk5MmU0
YjcwOGRkOTM0NzE1YjFlOGQyODM5OGRhYjcwZTFhNmNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
NTQzLDcgKzU0Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRMaW5lRGFz
aChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBkYXNoKQogICAgIC8vIFNwZWMgcmVxdWlyZXMgdGhlIGNv
bmNhdGVuYXRpb24gb2YgdHdvIGNvcGllcyB0aGUgZGFzaCBsaXN0IHdoZW4gdGhlCiAgICAgLy8g
bnVtYmVyIG9mIGVsZW1lbnRzIGlzIG9kZAogICAgIGlmIChkYXNoLnNpemUoKSAlIDIpCi0gICAg
ICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fbGluZURhc2guYXBwZW5kKGRhc2gpOworICAgICAgICBt
b2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNoLmFwcGVuZFJhbmdlKGRhc2guYmVnaW4oKSwgZGFz
aC5lbmQoKSk7CiAKICAgICBhcHBseUxpbmVEYXNoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4
IGY2ZjlhMjhiMTRhYTcxNzQyMmJlZDEzODgzMjI5ZTFhMjYwZTMwMDAuLjc4NTc0MzNiNmQ2ZDlj
YTgwMTE1OTkyN2VkODlkYzc5ZjYxOWM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCkBAIC0xNTgsNyAr
MTU4LDcgQEAgdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhz
QXJrQ29uZGl0aW9uUXVpY2tseShIVE1MU3RhY2tJdGUKICAgICBpZiAoY2FuZGlkYXRlcy5zaXpl
KCkgPCBrTm9haHNBcmtDYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIHJvb20g
Zm9yIHRoZSBuZXcgZWxlbWVudCBpbiB0aGUgYXJrLiBUaGVyZSdzIG5vIG5lZWQgdG8gY29weSBv
dXQgdGhlIHJlbWFpbmluZ0NhbmRpZGF0ZXMuCiAKLSAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFw
cGVuZChjYW5kaWRhdGVzKTsKKyAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZFJhbmdlKGNh
bmRpZGF0ZXMuYmVnaW4oKSwgY2FuZGlkYXRlcy5lbmQoKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSog
bmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNTQyNGJk
MTQ2YzBhYWJiMmI2OTBhOWVhYWIwMjI5Zjk3YzA4YjEyMy4uZjk0OGY5NmFkNDFiMTZmNDYyYmMw
NmMzN2IyYzNhOTFiNDUxYTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
LmgKQEAgLTI3Nyw3ICsyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0
ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwogCi0gICAgICAgIG1fZGF0YS5h
cHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgICAgIG1fZGF0YS5hcHBlbmRSYW5nZShjaGFy
YWN0ZXJzLmJlZ2luKCksIGNoYXJhY3RlcnMuZW5kKCkpOwogICAgIH0KIAogICAgIHZvaWQgYWRk
TmV3QXR0cmlidXRlKCkKQEAgLTM5OCw3ICszOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBl
bmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFw
cGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZFJhbmdlKGNoYXJh
Y3RlcnMuYmVnaW4oKSwgY2hhcmFjdGVycy5lbmQoKSk7CiAgICAgfQogCiAgICAgLyogQ29tbWVu
dCBUb2tlbnMgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
VG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3
ZjZmODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2ZTQ4OTQ3Li5mYTdhZjNkNmVhN2IwZjdj
MDc5YjEzMDQzYzVkZDEwNDk5ZWY0YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRUb2tlbi5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQ2hh
cmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpDaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBw
ZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgICAgICBtX2RhdGEuYXBwZW5kUmFuZ2UoY2hhcmFj
dGVycy5iZWdpbigpLCBjaGFyYWN0ZXJzLmVuZCgpKTsKICAgICB9CiAKICAgICB2b2lkIGJlZ2lu
RW1wdHlTdGFydFRhZygpCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbV9jbGFzc2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2Ns
YXNzZXMuYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRS
YW5nZShtX2N1cnJlbnRCdWZmZXIuYmVnaW4oKSwgbV9jdXJyZW50QnVmZmVyLmVuZCgpKTsKICAg
ICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQogICAgIApAQCAtMTY3LDcgKzE2
Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3Rh
cnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24uY2xlYXIoKTsKLSAgICAgICAgbV9hbm5vdGF0
aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5k
UmFuZ2UobV9jdXJyZW50QnVmZmVyLmJlZ2luKCksIG1fY3VycmVudEJ1ZmZlci5lbmQoKSk7CiAg
ICAgICAgIG1fY3VycmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKaW5kZXggMGE4Y2M2YWI5OTlmM2Nk
MWU2YjFjZmFlMGFlYjIzY2Q4YWUzNjk0Ny4uOTc4NTU5NzI4NmZmZmZlNjBmOTRiNDhkOWIzOGQz
YzQ0N2Q2MzVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVu
dHJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlz
dC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5k
KFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gZW50cnkpCiAKIHZvaWQgUGVyZm9ybWFuY2VF
bnRyeUxpc3Q6OmFwcGVuZEFsbChjb25zdCBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+
ID4mIGVudHJpZXMpCiB7Ci0gICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyaWVzKTsKKyAgICBtX2Vu
dHJpZXMuYXBwZW5kUmFuZ2UoZW50cmllcy5iZWdpbigpLCBlbnRyaWVzLmVuZCgpKTsKIH0KIAog
dm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6c29ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKaW5kZXggMTZmNTI1MjlmOTYwODdmZjE4OThiNzIz
NzRkN2I0Y2RiN2E0YzNjNi4uZjEyMTc1OGEwYzVhOTRkOTYxYjRlYmViNDNkNTQxNWI3ZWNkYTEy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcApA
QCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+
ID4gY29udmVydFRvRW50cnlTZXF1ZW5jZShjb25zdCBQZXJmb3JtYW5jCiAgICAgVmVjdG9yPFJl
ZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGVudHJpZXM7CiAKICAgICBmb3IgKFBlcmZvcm1hbmNl
RW50cnlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGVyZm9ybWFuY2VFbnRyeU1hcC5iZWdpbigp
OyBpdCAhPSBwZXJmb3JtYW5jZUVudHJ5TWFwLmVuZCgpOyArK2l0KQotICAgICAgICBlbnRyaWVz
LmFwcGVuZChpdC0+dmFsdWUpOworICAgICAgICBlbnRyaWVzLmFwcGVuZFJhbmdlKGl0LT52YWx1
ZS5iZWdpbigpLCBpdC0+dmFsdWUuZW5kKCkpOwogCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CkBA
IC0xODEsNyArMTgxLDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4g
PiBnZXRFbnRyeVNlcXVlbmNlQnlOYW1lKGNvbnN0IFBlcmZvcm1hbmMKIAogICAgIFBlcmZvcm1h
bmNlRW50cnlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGVyZm9ybWFuY2VFbnRyeU1hcC5maW5k
KG5hbWUpOwogICAgIGlmIChpdCAhPSBwZXJmb3JtYW5jZUVudHJ5TWFwLmVuZCgpKQotICAgICAg
ICBlbnRyaWVzLmFwcGVuZChpdC0+dmFsdWUpOworICAgICAgICBlbnRyaWVzLmFwcGVuZFJhbmdl
KGl0LT52YWx1ZS5iZWdpbigpLCBpdC0+dmFsdWUuZW5kKCkpOwogCiAgICAgcmV0dXJuIGVudHJp
ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggMGY0NTdk
MTM0ZTk0NGQ1Zjk5NzEwMTYxMzZjZDUzMWExMjI1MDJkZS4uZDI2MTRiODcwMjRiZjQyNmE5NGY4
NDE4ZDE1N2E2ZTJjYzBlYTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2Vy
LmNwcApAQCAtMTAzLDggKzEwMyw4IEBAIFZlY3RvcjxTdHJpbmc+IEZpbGVDaG9vc2VyU2V0dGlu
Z3M6OmFjY2VwdFR5cGVzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBhY2NlcHRUeXBl
czsKICAgICBhY2NlcHRUeXBlcy5yZXNlcnZlQ2FwYWNpdHkoYWNjZXB0TUlNRVR5cGVzLnNpemUo
KSArIGFjY2VwdEZpbGVFeHRlbnNpb25zLnNpemUoKSk7Ci0gICAgYWNjZXB0VHlwZXMuYXBwZW5k
KGFjY2VwdE1JTUVUeXBlcyk7Ci0gICAgYWNjZXB0VHlwZXMuYXBwZW5kKGFjY2VwdEZpbGVFeHRl
bnNpb25zKTsKKyAgICBhY2NlcHRUeXBlcy5hcHBlbmRSYW5nZShhY2NlcHRNSU1FVHlwZXMuYmVn
aW4oKSwgYWNjZXB0TUlNRVR5cGVzLmVuZCgpKTsKKyAgICBhY2NlcHRUeXBlcy5hcHBlbmRSYW5n
ZShhY2NlcHRGaWxlRXh0ZW5zaW9ucy5iZWdpbigpLCBhY2NlcHRGaWxlRXh0ZW5zaW9ucy5lbmQo
KSk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggNWQ3NzZhZGQ4YTFj
M2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uY2RjYzQ5ZGEwOTk2NWJhODM3Y2Q0OTllY2E1
MWQwYjY1ZGMwYTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNsdWRl
U2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCsrOwogICAgICAgICAgICAgaWYg
KG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iuc2l6ZSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAgICAgICAgICAgICAgIGNodW5rLmFwcGVu
ZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZFJhbmdlKG1f
c2VwYXJhdG9yLmJlZ2luKCksIG1fc2VwYXJhdG9yLmVuZCgpKTsKICAgICAgICAgICAgICAgICBt
X3NlcGFyYXRvckluZGV4ID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCBjNTIzODU4MGI5MTlmZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNmLi41
YjE0MDVhMzYzMGE0OTgzMjcxOGE2ZDg0NGQ3NmIxYzA2YmFlNjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05MDIsNyArOTAy
LDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmlu
Zz4mIHNpdGVzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGVuZ2luZVNpdGVzOwogICAgICAgICBlbmdpbmVzW2ldLT5nZXRTaXRlc0luTWVkaWFDYWNoZShl
bmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVzLmFwcGVuZChlbmdpbmVTaXRlcyk7CisgICAgICAg
IHNpdGVzLmFwcGVuZFJhbmdlKGVuZ2luZVNpdGVzLmJlZ2luKCksIGVuZ2luZVNpdGVzLmVuZCgp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMmE0Nzg5Yzg5YTRjYWYwNTQzNjc3Yzgz
NGM0MWVkNDJhY2ExYzIzLi45ODA5Yjc4YWM3ZjBmZGNjYjU1ZWYyODc4ZDhjMjk3OWRiZmEzMDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9y
ZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogICAgIHVuc2lnbmVkIHNpemUgPSBkaXJ0eVRpbGVzLnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgc2l6ZTsgKytuKSB7CiAgICAgICAg
IFZlY3RvcjxJbnRSZWN0PiBwYWludGVkUmVjdHMgPSBkaXJ0eVRpbGVzW25dLT51cGRhdGVCYWNr
QnVmZmVyKCk7Ci0gICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZChwYWludGVkUmVjdHMpOworICAg
ICAgICBwYWludGVkQXJlYS5hcHBlbmRSYW5nZShwYWludGVkUmVjdHMuYmVnaW4oKSwgcGFpbnRl
ZFJlY3RzLmVuZCgpKTsKICAgICAgICAgZGlydHlUaWxlc1tuXS0+c3dhcEJhY2tCdWZmZXJUb0Zy
b250KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlMDIyZmUyN2IwYzM0YzhiMDE3N2M5
ZGFiYzc1YWI5ZmI3YzZjZjI3Li4zZTZjNWVhZmQyMmU1NjA0OGYyODM4OWRjYjQ2OWNlZGUyYWYx
OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEyODQsNyArMTI4NCw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjp1cGRhdGVTdWJsYXllckxpc3QoYm9vbCBtYXhMYXllckRlcHRoUmVhY2hlZCkKICAg
ICBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBjaGlsZExpc3RGb3JTdWJsYXllcnMgPSBtX3N0cnVjdHVy
YWxMYXllciA/IHN0cnVjdHVyYWxMYXllckNoaWxkcmVuIDogcHJpbWFyeUxheWVyQ2hpbGRyZW47
CiAKICAgICBpZiAoY3VzdG9tU3VibGF5ZXJzKQotICAgICAgICBwcmltYXJ5TGF5ZXJDaGlsZHJl
bi5hcHBlbmQoKmN1c3RvbVN1YmxheWVycyk7CisgICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVu
LmFwcGVuZFJhbmdlKGN1c3RvbVN1YmxheWVycy0+YmVnaW4oKSwgY3VzdG9tU3VibGF5ZXJzLT5l
bmQoKSk7CiAKICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCA0OGQzZWJhNTFkNGQ3NmFmNDZmN2Y0YWNmODYyYzI5NjkxOTMwNTZmLi4yZmM5Zjc1
OTA4ZGY1ZWE2NjM0YTk3ZTliZjk1ZjZjN2FjZjdhOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtODksNyArODksNyBAQCBzdGF0aWMgVmVj
dG9yPFN0cmluZz4gc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVzKGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIGJvb2wgcwogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JVUkwoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdy
aXRhYmxlVHlwZXNGb3JVUkwoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIApA
QCAtMTA2LDcgKzEwNiw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3Jp
dGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICAKICAg
ICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5cGUpKTsKLSAgICB0eXBlcy5hcHBl
bmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKKyAgICBmb3IgKGNvbnN0IFN0cmluZyYgdHlwZTog
d3JpdGFibGVUeXBlc0ZvclVSTCgpKQorICAgICAgICB0eXBlcy5hcHBlbmQodHlwZSk7CiAgICAg
dHlwZXMuYXBwZW5kKFN0cmluZyhOU1JURkRQYm9hcmRUeXBlKSk7CiAgICAgcmV0dXJuIHR5cGVz
OwogfQpAQCAtMTE0LDcgKzExNSw4IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3Jl
YXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3cml0YWJs
ZVR5cGVzRm9ySW1hZ2UoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHR5cGVz
LmFwcGVuZChjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSk7CisgICAgZm9yIChjb25zdCBT
dHJpbmcmIHR5cGU6IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpKQorICAgICAgICB0eXBl
cy5hcHBlbmQodHlwZSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBAIC0xODcsNyArMTg5LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGIKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBl
czsKICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiBjbGllbnREYXRhOwogICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNsaWVudFR5cGVzLCBjbGll
bnREYXRhKTsKLSAgICB0eXBlcy5hcHBlbmQoY2xpZW50VHlwZXMpOworICAgIHR5cGVzLmFwcGVu
ZFJhbmdlKGNsaWVudFR5cGVzLmJlZ2luKCksIGNsaWVudFR5cGVzLmVuZCgpKTsKIAogICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMs
IG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNl
dFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDU2N2JkNjBiOTk3NDky
NzE0M2JlMmJkYTIyMDM3OGNmNjk1N2U2OTMuLjk2NzAzY2RhNTE0NzA1OTE4YmNhM2E3YTRhNjQ2
OGI0MWI3OGM1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBWZWN0b3I8Y2hhcj4gRm9y
bURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCkKICAgICAgICAgcmFu
ZG9tQnl0ZXMuYXBwZW5kKGFscGhhTnVtZXJpY0VuY29kaW5nTWFwW3JhbmRvbW5lc3MgJiAweDNG
XSk7CiAgICAgfQogCi0gICAgYm91bmRhcnkuYXBwZW5kKHJhbmRvbUJ5dGVzKTsKKyAgICBib3Vu
ZGFyeS5hcHBlbmRSYW5nZShyYW5kb21CeXRlcy5iZWdpbigpLCByYW5kb21CeXRlcy5lbmQoKSk7
CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAwIGF0IHRoZSBlbmQgc28gd2UgY2Fu
IHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAgcmV0dXJuIGJvdW5kYXJ5OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA0ZDBmZmJlYzNm
MTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3NGFiLi5mY2UwNTk1OWFkNzE1ZGE4Mzg3NGJmNzQx
NDk3ZjM1MzA5ODEzN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpk
ZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG1velBhdGhzOwog
ICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigiTU9aX1BMVUdJTl9QQVRIIikpOwogICAgIG1velBh
dGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIG1velBh
dGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96UGF0aHMpOworICAgIHBhdGhzLmFwcGVuZFJhbmdl
KG1velBhdGhzLmJlZ2luKCksIG1velBhdGhzLmVuZCgpKTsKICNlbGlmIGRlZmluZWQoWFBfTUFD
T1NYKQogICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IGhvbWVEaXJlY3RvcnlQYXRoKCk7CiAg
ICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygiL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1J
bnMiKSk7CkBAIC00NDUsNyArNDQ1LDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6
OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAgICAgVmVjdG9yPFN0cmluZz4gcXRQYXRoczsK
ICAgICBTdHJpbmcgcXRQYXRoKHFnZXRlbnYoIlFUV0VCS0lUX1BMVUdJTl9QQVRIIikuY29uc3RE
YXRhKCkpOwogICAgIHF0UGF0aC5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmll
cyAqLyBmYWxzZSwgcXRQYXRocyk7Ci0gICAgcGF0aHMuYXBwZW5kKHF0UGF0aHMpOworICAgIHBh
dGhzLmFwcGVuZFJhbmdlKHF0UGF0aHMuYmVnaW4oKSwgcXRQYXRocy5lbmQoKSk7CiAjZW5kaWYK
IAogICAgIHJldHVybiBwYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzAyYzRhN2E3NDRmYWYxMzk2YjUzYzQ1ZjA4
NzAzOWI4YjZlMWNhNi4uZTZjMWM4MmVjZTU0OTlhYjZlYWI5MDNhODI1YmE0OGI5N2EzNTdiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RC
aWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNvbHZlciwKICAgICAg
ICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55IG5lc3RlZCBpc29sYXRlIHJ1bnMsIGp1c3QgbW92
ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2ZXIncyBsaXN0IGZvciBsYXRlciBw
cm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBl
bmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7CisgICAgICAgICAgICB0b3BSZXNv
bHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRSYW5nZShpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVk
UnVucygpLmJlZ2luKCksIGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuZW5kKCkpOwog
ICAgICAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5jbGVhcigpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhM2E0OTExYzNhOTUxMDY2MzliZDY0ZDU3NjZhNDIyYTU0
NTYyYzI3Li42OTZmOTgzZjQ0NTlkZWRlZjIxYzQxNTMzNzg0NzQzYTUxNzRlOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wQ29tcG9zaXRpbmdDb250
YWluZXIoKQogICAgIHsKLSAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6
ZSgpIC0gMl0uYXBwZW5kKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CisgICAgICAgIG1fb3Zlcmxh
cFN0YWNrW21fb3ZlcmxhcFN0YWNrLnNpemUoKSAtIDJdLmFwcGVuZFJhbmdlKG1fb3ZlcmxhcFN0
YWNrLmxhc3QoKS5iZWdpbigpLCBtX292ZXJsYXBTdGFjay5sYXN0KCkuZW5kKCkpOwogICAgICAg
ICBtX292ZXJsYXBTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDNkNTEyOTNkMTJjMmM4
OGUzMGI4MzBlYWZmODZhYTc3OWJiOGU5MWEuLmY1YmIxN2NmZTI1MmU3ZjI3MGFlYzFjMDlkY2E5
NzRlM2VhNDM0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6c3BsaXRDb2x1bW4odW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCkKICAgICAgICAgUm93
JiByID0gbV9ncmlkW3Jvd10ucm93OwogICAgICAgICByLmluc2VydChwb3MgKyAxLCBDZWxsU3Ry
dWN0KCkpOwogICAgICAgICBpZiAocltwb3NdLmhhc0NlbGxzKCkpIHsKLSAgICAgICAgICAgIHJb
cG9zICsgMV0uY2VsbHMuYXBwZW5kKHJbcG9zXS5jZWxscyk7CisgICAgICAgICAgICByW3BvcyAr
IDFdLmNlbGxzLmFwcGVuZFJhbmdlKHJbcG9zXS5jZWxscy5iZWdpbigpLCByW3Bvc10uY2VsbHMu
ZW5kKCkpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gcltwb3NdLnByaW1h
cnlDZWxsKCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbCk7CiAgICAgICAgICAgICBBU1NFUlQo
Y2VsbC0+Y29sU3BhbigpID49IChyW3Bvc10uaW5Db2xTcGFuID8gMXUgOiAwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaE1hcC5oCmluZGV4IDkyOTQ1MjY5NjU5MWQ3YTcwYjRiMWE3N2ViMDQ2N2M3MmRk
Mzg0NDIuLmViY2ZhY2E5ZDczZTQzNWU0ZTgxODgzNmI2NjdlNWIzMTdhNWJhYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHbHlwaE1hcC5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgUmVmUHRyPEdseXBoTWFwTm9kZT4gbm9kZSA9IGN1cnJlbnRMYXllci0+Z2V0KGNoYXJhY3Rl
cik7CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBnbHlwaHMuYXBwZW5kKG5vZGUtPmdseXBocyk7CisgICAgICAgICAgICBnbHlwaHMu
YXBwZW5kUmFuZ2Uobm9kZS0+Z2x5cGhzLmJlZ2luKCksIG5vZGUtPmdseXBocy5lbmQoKSk7CiAg
ICAgICAgICAgICBjdXJyZW50TGF5ZXIgPSAmbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0
ZXh0SXRlcmF0b3IuYWR2YW5jZShjbHVzdGVyTGVuZ3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoTm9kZVNldC5oCmluZGV4IGJjNzY3ZDVjMzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMw
MGMzNTguLjEwNmU4NTAyMmMyNTkxNjJlZTY1YTE1ODZiMmFmYmViZWVjOTY1YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhOb2RlU2V0LmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgLy8gTm9kZVNldCBpdHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9k
ZXMgaW4gaXQgYXJlIHVuaXF1ZS4KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUp
IHsgbV9ub2Rlcy5hcHBlbmQobm9kZSk7IH0KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSkgeyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQotICAgICAgICAgICAg
dm9pZCBhcHBlbmQoY29uc3QgTm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2Rl
U2V0Lm1fbm9kZXMpOyB9CisgICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBu
b2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kUmFuZ2Uobm9kZVNldC5tX25vZGVzLmJlZ2luKCksIG5v
ZGVTZXQubV9ub2Rlcy5lbmQoKSk7IH0KIAogICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2V0
J3MgZmlyc3Qgbm9kZSBpbiBkb2N1bWVudCBvcmRlciwgb3IgMCBpZiB0aGUgc2V0IGlzIGVtcHR5
LgogICAgICAgICAgICAgTm9kZSogZmlyc3ROb2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmNwcAppbmRleCAyZTMwYmNiNzg3ZTI2MjE1NmQ2MGE5OWQzNzllOTM4YTE1MjJhNzg1Li43
ZDhhNWM5YzNmMGIzOGNmN2MzOWI2MTlhNWU3MTdjMDY4YzMxNTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5jcHAKQEAgLTU1LDggKzU1LDEwIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAg
ICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+IHNhbmRib3hFeHRlbnNpb25zID0g
bmV3U2FuZGJveEV4dGVuc2lvbnM7CiAgICAgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYgaXRlbXMg
PSBkYXRhLT5pdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGl0ZW1zLnNp
emUoKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUgPT0gQmxv
YkRhdGFJdGVtOjpCbG9iKQotICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKG1f
c2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJpbmcoKSkpOworICAgICAgICBp
ZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJsb2IpIHsKKyAgICAgICAgICAgIGF1
dG8gZXh0ZW5zaW9ucyA9IG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0KGl0ZW1zW2ldLnVybC5zdHJp
bmcoKSk7CisgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZFJhbmdlKGV4dGVuc2lvbnMuYmVn
aW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBkYXRhKTsKQEAgLTEwNyw3ICsxMDksNyBAQCB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLnJlbW92ZShj
b25uZWN0aW9uKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiA+
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCkKK1ZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVn
aXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXggNTJkMmRmOWMxOTg5MjkzYTEwMzY1Yjk0ODY0NTFh
MWFkODY5NzFhNS4uNjdkMGNjZmVjZWYwOThlMDUzNmQ2MzY1NzhhYTQyZjg5MTIwYmZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxv
YlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9O
ZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gPiBz
YW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VS
TCYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAK
aW5kZXggOWQ0NmY3NDhiZjRjMjBmYzY5ZjYwYTVhNzU2ZGE2ZGEwMmFmNWNiNS4uMDJhNzAyOGVk
MmM2Y2M5YjNkZTMyZTk1YzQ1ODY1MmQzZDMxZDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1bGFibGVMb2FkZXIoY29uc3QgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
ZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsKICAg
ICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gYmxvYkVsZW1l
bnRFeHRlbnNpb25zID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkuc2FuZGJveEV4dGVu
c2lvbnMoZWxlbWVudHNbaV0ubV91cmwpOwotICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKKyAgICAgICAg
ICAgICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kUmFuZ2UoYmxvYkVs
ZW1lbnRFeHRlbnNpb25zLmJlZ2luKCksIGJsb2JFbGVtZW50RXh0ZW5zaW9ucy5lbmQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1
YjhiMmVkMDU1M2ViODQ5Li5iZmVhZTMxNDkzNGZkMTllOTVmNWNlMWRlNzdlNjc4ZTQ1MTg4OThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAK
QEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRp
c3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiogYWxsb3dlZENvbm5lY3RpbwogCiAgICAgaWYgKCFt
ZXNzYWdlc1RvUHV0QmFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fbXV0ZXgpOwotICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5
bmNSZXBseS5hcHBlbmQobWVzc2FnZXNUb1B1dEJhY2spOworICAgICAgICBtX21lc3NhZ2VzVG9E
aXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmRSYW5nZShtZXNzYWdlc1RvUHV0
QmFjay5iZWdpbigpLCBtZXNzYWdlc1RvUHV0QmFjay5lbmQoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9T
dG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBkNGM5ZWMyYzVmMmU1MmZmMGFjYTQ1OWJlNzQyNmMz
MWE5ZmEzZTRjLi40NzMzMmYwZjk0YzVhYWQyOWY3Yjk0YmFiMTRiYzlmYTlkNTJlMDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9T
dG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgVmVjdG9yPFN0cmluZz4g
UGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIGlmICghbW96aWxsYVBh
dGhzLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAg
bW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZh
bHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGF0aHMpOworICAgICAgICByZXN1
bHQuYXBwZW5kUmFuZ2UocGF0aHMuYmVnaW4oKSwgcGF0aHMuZW5kKCkpOwogICAgIH0KIAogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzEyYjlkNzAyMjM5YmI5ZTE3NTUxYWIzY2RjMzczOTI1Nzc5ZmRhMS4uNjUz
ZTI2MDQxOGNhMzYyMTczYWUzZGI5YjgyN2FjODM2MDQyM2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1
LTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjph
cHBlbmRSYW5nZSBpbnN0ZWFkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKToKKwogMjAxMy0wNS0wMiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGEgc3RhbGUgc2NyaXB0IGZpbGUuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CmluZGV4IDM1M2VhOGQ2N2M5M2Q5Njk2M2QxYWFiNDg1YTJkYWVhNGRmZTY1MDcuLjJiNjI3YmNj
ZjllYTQxNzUyMDJkNmY3NmRkODViMmYxMmI1YzQ1MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0xNjIsNyAr
MTYyLDcgQEAgc3RhdGljIEpTU3RyaW5nUmVmIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUo
TlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNTdHJpbmcqIHYKIAogICAgIFZlY3RvcjxVbmlDaGFyPiB2
YWx1ZUJ1ZmZlcihbdmFsdWUgbGVuZ3RoXSk7CiAgICAgW3ZhbHVlIGdldENoYXJhY3RlcnM6dmFs
dWVCdWZmZXIuZGF0YSgpXTsKLSAgICBidWZmZXIuYXBwZW5kKHZhbHVlQnVmZmVyKTsKKyAgICBi
dWZmZXIuYXBwZW5kUmFuZ2UodmFsdWVCdWZmZXIuYmVnaW4oKSwgdmFsdWVCdWZmZXIuZW5kKCkp
OwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQppbmRleCA4YTk1NTFjODVmYThhODdiZGU0MDVhMzk3YWY1ZTgwMjBlOGI5OTE2Li45
NWNmYWU4Y2Y0NzNiZjQyNzg1YzQyMWEwZjkyZmVmMjA1ODU5Yzg4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMg
SlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmli
dXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1
ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCld
OwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRSYW5n
ZSh2YWx1ZUJ1ZmZlci5iZWdpbigpLCB2YWx1ZUJ1ZmZlci5lbmQoKSk7CiAKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200590</attachid>
            <date>2013-05-05 09:44:28 -0700</date>
            <delta_ts>2013-05-05 09:59:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130505094338.patch</filename>
            <type>text/plain</type>
            <size>44703</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5MDMxZTA3ZGI5NTQ1YTYyMWFlMTJh
MmI1OTkzZjM3MjI2NjdiMGMuLjJlMjA0NGQ0OGNmYTZhMzgxN2FhMjVkOWJmNWEzNWFjNDcwYWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2Vz
IGEgVmVjdG9yIGNvbmZsaWN0cyB3aXRoIHJ2YWx1ZXMgaW4gQysrMTEsIHNvIHJlbW92ZSBpdCBh
bmQKKyAgICAgICAgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoIGNhbGxzIHRvIGFwcGVuZFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFZlY3Rvcik6CisKIDIwMTMt
MDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDk1NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlNWNjNGU3MGFhZjNk
MWNjMTc1NThiODJlOTIxYjcyOTAxNDFmYi4uMjRiY2ZiM2E3ZjVmYzQ0NDdlZWY5NzUyNmE4YWNj
MmI4Njg0YmFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA1LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBW
ZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YVZlcnNpb25L
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFz
ZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlz
dEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5OjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNz
UGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAq
IGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRU
b2tlbjo6YWRkTmV3Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFkZE5l
d0Fubm90YXRpb24pOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJl
ZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKToKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICogeG1sL1hQ
YXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmFwcGVuZCk6
CisKIDIwMTMtMDUtMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIHNob3VsZCBub3Qgc3RhcnQgd2hlbiBnbG9iYWxs
eSBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYWUxNzgwYjRjOTllNzM2Yjg1Yzg5YTYxNzZmODAy
YzRiNzE5YjRkLi5kM2Q5ZjZjNjg0OWJmNjBmMTBlYmFmZDFhMmQxMjI2ZTE2YmUzMjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZlY3RvciBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcik6CisgICAgICAg
ICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKToKKwogMjAxMy0w
NS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCAqIHBsYWNl
bWVudCBpbiBhIGZldyBmdW5jdGlvbnMgYXMgbm90aWNlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IDY4OTYyNTU5Zjk1N2NiNmI1MDYzMjU0YzA4YmRhNzFjYzdmNTEzN2MuLjdmYmNjMDVjNDUy
ZDNmYTljZjEzZDkxNjY4ODY1MjkzYTlkZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02MjAsNyArNjIwLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBw
ZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgdW5j
aGVja2VkQXBwZW5kKGNvbnN0IFUmIHZhbCk7Ci0gICAgICAgIHRlbXBsYXRlPHNpemVfdCBvdGhl
ckNhcGFjaXR5PiB2b2lkIGFwcGVuZChjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQg
YXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHRyeUFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKIApA
QCAtMTA2MiwxNSArMTA2MSw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICArK21fc2l6ZTsK
ICAgICB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBhcHBlbmQs
IGEgYmV0dGVyIG5hbWUgd291bGQgYmUgYXBwZW5kRWxlbWVudHMuCi0gICAgLy8gSXQgY291bGQg
YWxzbyBiZSBlbGltaW5hdGVkIGVudGlyZWx5LCBhbmQgY2FsbCBzaXRlcyBjb3VsZCBqdXN0IHVz
ZQotICAgIC8vIGFwcGVuZFJhbmdlKHZhbC5iZWdpbigpLCB2YWwuZW5kKCkpLgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPiB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4KLSAgICBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OmFwcGVuZChjb25zdCBW
ZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKLSAgICB7Ci0gICAgICAgIGFwcGVuZCh2YWwu
YmVnaW4oKSwgdmFsLnNpemUoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PgogICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kVmVjdG9yKGNvbnN0
IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdkNGM4
YWUxZjEwOTg5ODIwYzY4YjU2ZDVlZDg4ZWZiNDU4Y2NhZDIuLjQ4ZTBkMzE2MmM2MzEyOWM1MjYx
YzU5YTUyMDY1MTM3OTIwODJhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA3LDcgKzkwNyw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlZGF0
YUtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGtleSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gdjsKLSAgICB2LmFwcGVuZChlbmNvZGVWYXJJ
bnQodmVyc2lvbikpOworICAgIHYuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludCh2ZXJzaW9uKSk7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIHYuYXBwZW5kKHZhbHVlLT5kYXRhKCksIHZhbHVlLT5zaXplKCkpOwpAQCAt
MTE5MCw4ICsxMTkwLDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2EKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50aWZp
ZXIucHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIGRhdGEuYXBw
ZW5kKGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOwotICAgIGRhdGEu
YXBwZW5kKHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZFZl
Y3RvcihlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRh
LmFwcGVuZFZlY3RvcihyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZl
bERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFj
Li4yZWEyOWNjNjI3YmQxOTkwOTdhODU3MWQ4OTcwN2QwNWExZjA5ZGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApA
QCAtMzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNv
bnN0IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMu
bGVuZ3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNDE5
LDMwICs0MTksMzAgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXksIFZlY3Rv
cjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElEQktleTo6
SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bGxU
eXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElEQktleU51
bGxUeXBlQnl0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlw
ZTogewotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleUFycmF5VHlwZUJ5dGUp
KTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVC
eXRlKSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZVZhckludChsZW5ndGgpKTsKKyAgICAgICAgaW50by5hcHBl
bmRWZWN0b3IoZW5jb2RlVmFySW50KGxlbmd0aCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgZW5jb2RlSURCS2V5KCprZXkuYXJyYXko
KVtpXSwgaW50byk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNp
emUoKSA+IHByZXZpb3VzU2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5
U3RyaW5nVHlwZUJ5dGUpKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChrZXkuc3RyaW5nKCkpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0
ZShJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVCeXRlKElEQktleURhdGVUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KElEQktleURhdGVUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElEQktleTo6TnVtYmVyVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJ
REJLZXlOdW1iZXJUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUo
a2V5Lm51bWJlcigpKSk7CisgICAgICAgIGludG8uYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoSURC
S2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlRG91
YmxlKGtleS5udW1iZXIoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02NjgsMTQgKzY2OCwxNCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKLSAgICAgICAg
cmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3Ry
aW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6
IHsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgp
OwogICAgICAgICBzaXplX3QgY291bnQgPSBhcnJheS5zaXplKCk7Ci0gICAgICAgIHJldC5hcHBl
bmQoZW5jb2RlVmFySW50KGNvdW50KSk7CisgICAgICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KGNvdW50KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtp
XSkpOworICAgICAgICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3Ro
KGFycmF5W2ldKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMTM1LDIxICsx
MTM1LDIxIEBAIEtleVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9y
PGNoYXI+IFNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJl
dCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
U2NoZW1hVmVyc2lvblR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KFNjaGVtYVZlcnNpb25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3Rvcjxj
aGFyPiBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQg
PSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1h
eERhdGFiYXNlSWRUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShN
YXhEYXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hh
cj4gRGF0YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtl
eVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZl
cnNpb25UeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShEYXRhVmVy
c2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTgwLDgg
QEAgY29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0
S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQg
PSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERh
dGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRh
dGFiYXNlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVl
TGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQoZGF0YWJh
c2VJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0
IGNoYXIqIERhdGFiYXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFw
cGVuZChlbmNvZGVCeXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3Ry
aW5nV2l0aExlbmd0aChkYXRhYmFzZU5hbWUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29k
ZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVT
dHJpbmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAg
LTEyNTUsNyArMTI1NSw3IEBAIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNv
ZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUgbWV0YURhCiB7CiAgICAgS2V5UHJl
Zml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVu
Y29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICBy
ZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KIApAQCAtMTI5NCw5ICsxMjk0LDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0
YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsK
ICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQg
PSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3Jl
TWV0YURhdGFUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0
b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAg
cmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkp
OworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAg
ICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KIApAQCAtMTM2OSwxMCArMTM2OSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRh
RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhN
ZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3Rv
cmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAgICByZXQu
YXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZlY3Rvcihl
bmNvZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3Io
ZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29k
ZVZhckludChpbmRleElkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKG1ldGFE
YXRhVHlwZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQzMiw4IEBAIFZl
Y3RvcjxjaGFyPiBPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlk
KTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBw
ZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgcmV0LmFwcGVuZFZlY3Rvcihl
bmNvZGVCeXRlKE9iamVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1cm4gcmV0OwogfQog
CkBAIC0xNDg5LDkgKzE0ODksOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVlTGlzdEtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVC
eXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9y
KGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3Rv
cihlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5j
b2RlVmFySW50KGluZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTQ1LDggKzE1
NDUsOCBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgo
ZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOworICAg
IHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsK
KyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVO
YW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTU4OCw5ICsxNTg4LDkgQEAgVmVjdG9y
PGNoYXI+IEluZGV4TmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY28KIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwog
ICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgoaW5kZXhOYW1lKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKEluZGV4
TmFtZXNLZXlUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9i
amVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5n
dGgoaW5kZXhOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTYyMCw3ICsxNjIwLDcg
QEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KEtleVBy
ZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBT
cGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29k
ZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOworICAgIHJldC5hcHBlbmRWZWN0
b3IoZW5jb2RlZFVzZXJLZXkpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTE2NjIsNyArMTY2
Miw3IEBAIFZlY3RvcjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChL
ZXlQcmVmaXg6OmNyZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgU3BlY2lhbEluZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRLZXkpOworICAgIHJldC5hcHBlbmRWZWN0
b3IoZW5jb2RlZEtleSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTczMyw5ICsxNzMzLDkg
QEAgVmVjdG9yPGNoYXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBw
cmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7Ci0gICAgcmV0
LmFwcGVuZChlbmNvZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKLSAgICByZXQuYXBwZW5kKGVu
Y29kZWRQcmltYXJ5S2V5KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZWRVc2VyS2V5KTsK
KyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOworICAg
IHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cAppbmRleCAwNDcyNjZlYjc5NGIwZThlZDBiZjUxNmUzYjc1MmY2YTc4MmNiYzYyLi40MjQzYTEz
NWJiOGNlYWEzMTdkYTA3YTY1MzMzMGQxYjY0MTMxOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKICAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4g
Tm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91
cnNlbHZlcy4KICAgICBkbyB7CiAgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAg
ICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24p
OwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9IHdoaWxl
IChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1cmUgdG8g
Y2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBpZiAobV9u
b2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7
Ci0gICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
KTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9y
RGVsZXRpb24pOwogICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAog
ICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2
NjRhYzc0ZmQ4YWRiZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLjk4YWQzNGQ4ODFiYmM0NTk0
ZTBmYWM2ZGE4MTI0NWUzZTRjMTViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNoaWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKQogICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmRWZWN0b3Iocm93LT5jaGlsZHJlbigpKTsKIAogICAgIGFwcGVuZGVkUm93cy5hZGQo
cm93KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFmYWI1ZDg3ZDc5NjBiNjAyNWU0
NzVmNGU0NmFjNTk3OTYwYjYxLi5jYjVmMDBkZGM3ZjFhNmM0YzYxZDQ0OGMyMTZmYmZiNWRlOWYy
MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCkBAIC00NjYsMTEgKzQ2Niw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
OjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
CiAgICAgCiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIAotICAgIGludCBu
dW1Sb3dzID0gbV9yb3dzLnNpemUoKTsKLSAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1S
b3dzOyArK3JvdykgewotICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hp
bGRyZW4gPSBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKTsKLSAgICAgICAgY2VsbHMuYXBwZW5kKHJv
d0NoaWxkcmVuKTsKLSAgICB9CisgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgbV9yb3dz
LnNpemUoKTsgKytyb3cpCisgICAgICAgIGNlbGxzLmFwcGVuZFZlY3RvcihtX3Jvd3Nbcm93XS0+
Y2hpbGRyZW4oKSk7CiB9CiAgICAgCiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVt
bkNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2
ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2ZTAuLjkzYThlYzhmMjJjM2Q3NjhjMTk5ODkyN2Q2Y2Ri
MWY1NWNjZTQ5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUs
OCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVy
KQogICAgIGVuZCA9IG90aGVyLmF0dHJzSW5SdWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxl
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0
KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBwZW5kKG90aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5j
b21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7
CisgICAgc2libGluZ1J1bGVzLmFwcGVuZFZlY3RvcihvdGhlci5zaWJsaW5nUnVsZXMpOworICAg
IHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmli
dXRlUnVsZXMpOwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8
fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSB1
c2VzQmVmb3JlQWZ0ZXJSdWxlcyB8fCBvdGhlci51c2VzQmVmb3JlQWZ0ZXJSdWxlczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyNDYzMGY1MzQ1NzQ0YjI1ZjcxN2Fm
ODQ2OGE2ODNiZjRmZDBkY2UzLi5kMzJhMGE4MTIxZGU0MWVmYzllY2YzNGJjZTk0NmU2ZjUzMzI0
NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xODI3LDcgKzE4Mjcs
NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0CiAKICAgICBBU1NFUlQoaGFzaCk7CiAgICAgTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0gY2FjaGVJdGVtOwotICAgIGNhY2hlSXRlbS5tYXRjaGVk
UHJvcGVydGllcy5hcHBlbmQobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMpOworICAgIGNh
Y2hlSXRlbS5tYXRjaGVkUHJvcGVydGllcy5hcHBlbmRWZWN0b3IobWF0Y2hSZXN1bHQubWF0Y2hl
ZFByb3BlcnRpZXMpOwogICAgIGNhY2hlSXRlbS5yYW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7
CiAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGNhY2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHls
ZSBpbnN0YW5jZS4gSXQgbWF5IGJlIGZ1cnRoZXIgbW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRl
clN0eWxlIGluIHRoZSBjYWNoZSBpcyByZWFsbHkganVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0
cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQgYXMtaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMw
MWM5MjI0YWIwMTgwY2VmY2I5M2FhYTYxNy4uZDMxNGQ5MGI5MmY0NGE0YTM0YjQ5NjNkZjQ0NzBj
MDAxZjVhNjE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uLmNwcApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxD
U1NTdHlsCiAgICAgSFRNTElGcmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9j
dW1lbnQtPnNlYW1sZXNzUGFyZW50SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElG
cmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNoZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJ
RnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzKCkpOworICAgIHNoZWV0cy5hcHBlbmRWZWN0b3Ioc2VhbWxlc3NQYXJlbnRJRnJh
bWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzKCkpOwogfQogCiBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0
ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0NjIs
OCBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxl
U2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0
cyhhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
ID4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5k
KGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMu
YXBwZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVT
aGVldHMuYXBwZW5kVmVjdG9yKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0
aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMo
KSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhh
Y3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1bWVudCk7CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0
eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJkNzEyOWQ4MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3
OWUuLjBmYWUzMWNlNTU4YmYxMDJmN2VkOWIwM2RlNjBkZWRjYWQ0NGM4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4
dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICBy
ZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhlbGVtZW50UXVhZHMpOwogICAgICAg
ICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFi
c29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVudFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVj
dCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAg
ICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IoZWxlbWVudFF1YWRzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKICAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7
CkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdAogICAgICAgICAgICAgICAgIHJlbmRlclRl
eHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0Zv
clNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0
KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAg
ICAgICAgIHF1YWRzLmFwcGVuZFZlY3Rvcih0ZXh0UXVhZHMpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4
YThhZjA1YTk3ZmI1OWJmMzBmOWE1ODQ3YjQ1YjNjNGZkMzBiNzAxLi5lMjk1ZTUxM2Y2ZjliYWRl
MGM2ZWZhZmIwNTc0NmQzYmIxNzMzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcApAQCAtNTEwLDggKzUxMCw4IEBAIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVy
OjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0CiAgICAg
VmVjdG9yPFN0cmluZz4gdG9SZXR1cm47CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbWFwOwogICAg
IGZvcm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1hcCk7Ci0gICAgZm9yIChT
YXZlZEZvcm1TdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0g
bWFwLmVuZCgpOyArK2l0KQotICAgICAgICB0b1JldHVybi5hcHBlbmQoaXQtPnZhbHVlLT5nZXRS
ZWZlcmVuY2VkRmlsZVBhdGhzKCkpOworICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCksIGVuZCA9IG1hcC5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICB0b1JldHVybi5hcHBlbmRWZWN0b3IoaXQtPnZhbHVlLT5nZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggMTliYzk1MGNhZDNiZGRhODkyYTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uMGIzODlhZGFi
YzE3OWVmOGE2NDY2NzNjYzBkMTI5NjhmN2Y0YTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMs
NyArNTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGRhc2gpCiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0
ZW5hdGlvbiBvZiB0d28gY29waWVzIHRoZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1i
ZXIgb2YgZWxlbWVudHMgaXMgb2RkCiAgICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAg
bW9kaWZpYWJsZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlm
aWFibGVTdGF0ZSgpLm1fbGluZURhc2guYXBwZW5kVmVjdG9yKGRhc2gpOwogCiAgICAgYXBwbHlM
aW5lRGFzaCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmNmY5YTI4YjE0YWE3MTc0MjJiZWQx
Mzg4MzIyOWUxYTI2MGUzMDAwLi40NmRjNWJiOGIyOTM2MGEwMjFhMjU5MDY2NTFmYjc0NDAyNDNi
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRN
TFN0YWNrSXRlCiAgICAgaWYgKGNhbmRpZGF0ZXMuc2l6ZSgpIDwga05vYWhzQXJrQ2FwYWNpdHkp
CiAgICAgICAgIHJldHVybjsgLy8gVGhlcmUncyByb29tIGZvciB0aGUgbmV3IGVsZW1lbnQgaW4g
dGhlIGFyay4gVGhlcmUncyBubyBuZWVkIHRvIGNvcHkgb3V0IHRoZSByZW1haW5pbmdDYW5kaWRh
dGVzLgogCi0gICAgcmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlcyk7CisgICAg
cmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmRWZWN0b3IoY2FuZGlkYXRlcyk7CiB9CiAKIHZvaWQg
SFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oSFRNTFN0
YWNrSXRlbSogbmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaApp
bmRleCA3ZjZmODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2ZTQ4OTQ3Li43Y2YxYTI3ZDNm
YmE0OWM5MWMwZGU5OThlMzczZjE5ZTViMDFiZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRUb2tlbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbV9jbGFzc2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2Ns
YXNzZXMuYXBwZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRW
ZWN0b3IobV9jdXJyZW50QnVmZmVyKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7
CiAgICAgfQogICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24u
Y2xlYXIoKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOwor
ICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kVmVjdG9yKG1fY3VycmVudEJ1ZmZlcik7CiAgICAg
ICAgIG1fY3VycmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQppbmRleCBiMTk5OGM0MDdl
NjNmMGFlMDgzNzA0MTlhODA5ZDU3YzlmZDkxMjg2Li41YTg4NGM2YmM5MWRkMTY1ZjkxZDkyYjQ3
ZjY1NjE3MTFkNmMwYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjLm1tCkBAIC00NzUsNyArNDc1LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKIAotICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2VzKTsKKyAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZFZlY3RvcihwbGF0Zm9ybUxhbmd1YWdlcyk7CiAKICAgICByZXR1cm4g
dXNlclByZWZlcnJlZExhbmd1YWdlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9v
c2VyLmNwcAppbmRleCAwZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUwMmRlLi5j
ZDUwZWUyYTE2MmU4ZmNmOGQwMDZiNTJjZWU3Y2JjNTBhODQ4N2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9yPFN0cmlu
Zz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAgIFZlY3Rv
cjxTdHJpbmc+IGFjY2VwdFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBhY2l0eShh
Y2NlcHRNSU1FVHlwZXMuc2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAg
ICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRUeXBlcy5h
cHBlbmQoYWNjZXB0RmlsZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3Rv
cihhY2NlcHRNSU1FVHlwZXMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3RvcihhY2NlcHRG
aWxlRXh0ZW5zaW9ucyk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXgg
NWQ3NzZhZGQ4YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uNmExM2ZlNmI0NzZlZjQz
ZjIwNGM2M2U0YTU1ODg4NTU5N2NjNzc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29s
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywg
Ym9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCsrOwogICAg
ICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iuc2l6ZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAgICAgICAgICAgICAg
IGNodW5rLmFwcGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGNodW5rLmFw
cGVuZFZlY3RvcihtX3NlcGFyYXRvcik7CiAgICAgICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRl
eCA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
YzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZi4uNTNlNjc4MTdmMTQ3NmQ1
NWQxNzViMmVmNmY2MmI3NTU5ZjVmMGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsK
ICAgICAgICAgZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwot
ICAgICAgICBzaXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMpOworICAgICAgICBzaXRlcy5hcHBlbmRW
ZWN0b3IoZW5naW5lU2l0ZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZl
MjdiMGMzNGM4YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uMjEyZTkyZWQ3OGExNmE0YWM4OGJj
ZGJhYmM0N2IwZmI0YzQ3MzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJE
ZXB0aFJlYWNoZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5
ZXJzID0gbV9zdHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1h
cnlMYXllckNoaWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJp
bWFyeUxheWVyQ2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmlt
YXJ5TGF5ZXJDaGlsZHJlbi5hcHBlbmRWZWN0b3IoKmN1c3RvbVN1YmxheWVycyk7CiAKICAgICBp
ZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0OGQzZWJh
NTFkNGQ3NmFmNDZmN2Y0YWNmODYyYzI5NjkxOTMwNTZmLi5lNjQwZjBjOGNlYmFhZTYyNmZlOTg0
ODhhMTQ2NmU4MWMzYjhiMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0
cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKICAgICAKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5cGUpKTsK
LSAgICB0eXBlcy5hcHBlbmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKKyAgICB0eXBlcy5hcHBl
bmRWZWN0b3Iod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5n
KE5TUlRGRFBib2FyZFR5cGUpKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CkBAIC0xMTQsNyArMTE0
LDcgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0YWJsZVR5cGVzRm9y
SW1hZ2UoKQogc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgdHlwZXMuYXBwZW5kKGNyZWF0ZVdyaXRh
YmxlVHlwZXNGb3JJbWFnZSgpKTsKKyAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY3JlYXRlV3JpdGFi
bGVUeXBlc0ZvckltYWdlKCkpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3LDcgKzE4
Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50
VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywg
Y2xpZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0eXBlcy5h
cHBlbmRWZWN0b3IoY2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0
ZWJvYXJkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhQnVpbGRlci5jcHAKaW5kZXggNTY3YmQ2MGI5OTc0OTI3MTQzYmUyYmRhMjIwMzc4Y2Y2OTU3
ZTY5My4uMTc0NGJhYzEyY2UzYzc5NjhjYWQ3MDZjZGM4NzA0ODRjNDk1N2NhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIFZlY3RvcjxjaGFyPiBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRl
VW5pcXVlQm91bmRhcnlTdHJpbmcoKQogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoYWxwaGFO
dW1lcmljRW5jb2RpbmdNYXBbcmFuZG9tbmVzcyAmIDB4M0ZdKTsKICAgICB9CiAKLSAgICBib3Vu
ZGFyeS5hcHBlbmQocmFuZG9tQnl0ZXMpOworICAgIGJvdW5kYXJ5LmFwcGVuZFZlY3RvcihyYW5k
b21CeXRlcyk7CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAwIGF0IHRoZSBlbmQg
c28gd2UgY2FuIHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAgcmV0dXJuIGJvdW5k
YXJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA0
ZDBmZmJlYzNmMTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3NGFiLi4yMjIxNzI2ODVmYzk3Nzk1
ZDgwNmZmNjMwZTBhZWE3ZmEwN2IyOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRh
dGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG1v
elBhdGhzOwogICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigiTU9aX1BMVUdJTl9QQVRIIikpOwog
ICAgIG1velBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFs
c2UsIG1velBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96UGF0aHMpOworICAgIHBhdGhzLmFw
cGVuZFZlY3Rvcihtb3pQYXRocyk7CiAjZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICBTdHJp
bmcgdXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0b3J5UGF0aCgpOwogICAgIHVzZXJQbHVnaW5Q
YXRoLmFwcGVuZChTdHJpbmcoIi9MaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zIikpOwpAQCAtNDQ1
LDcgKzQ0NSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2lu
RGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IHF0UGF0aHM7CiAgICAgU3RyaW5nIHF0
UGF0aChxZ2V0ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmNvbnN0RGF0YSgpKTsKICAgICBx
dFBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHF0
UGF0aHMpOwotICAgIHBhdGhzLmFwcGVuZChxdFBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRWZWN0
b3IocXRQYXRocyk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXRoczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzAyYzRh
N2E3NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uNjZjMDYyNGUxZTk0NjMyYjk3Yzdm
YWU0NmU2ZmZkMTAxNmRhZGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVy
JiB0b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55IG5lc3RlZCBp
c29sYXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2
ZXIncyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlzb2xhdGVkUmVz
b2x2ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0b3BSZXNvbHZl
ci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7
CisgICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRWZWN0b3IoaXNv
bGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7CiAgICAgICAgICAgICBpc29sYXRlZFJlc29s
dmVyLmlzb2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGEz
YTQ5MTFjM2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJjMjcuLjUwOWI1OTFlNjg3ODZiYjk2
MDJlMmJmYmVhNDlhNDYxOGIxOGU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCiAgICAgewotICAgICAgICBt
X292ZXJsYXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBlbmQobV9vdmVybGFw
U3RhY2subGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6
ZSgpIC0gMl0uYXBwZW5kVmVjdG9yKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CiAgICAgICAgIG1f
b3ZlcmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggOTIwNTk0MDU5ZThiZDRhMWVj
YWE3YTVlY2VhNmNkNWMwMmQzMjEzNC4uYmNiNjNiZDE0MDI5ZTQ3NDAxMGJkMTJlYjc1OWMzYzE1
YjkyNDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpz
cGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIg
PSBtX2dyaWRbcm93XS5yb3c7CiAgICAgICAgIHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3Qo
KSk7CiAgICAgICAgIGlmIChyW3Bvc10uaGFzQ2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3Mg
KyAxXS5jZWxscy5hcHBlbmQocltwb3NdLmNlbGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0u
Y2VsbHMuYXBwZW5kVmVjdG9yKHJbcG9zXS5jZWxscyk7CiAgICAgICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChj
ZWxsKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNv
bFNwYW4gPyAxdSA6IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2
NTkxZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQzODQ0Mi4uZDA4MzFjNGE1NjU5NGY4YjI0NDgyMGQx
ZWIyZjFmOWEyZjg4NjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsx
MjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0g
Y3VycmVudExheWVyLT5nZXQoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5
cGhzKTsKKyAgICAgICAgICAgIGdseXBocy5hcHBlbmRWZWN0b3Iobm9kZS0+Z2x5cGhzKTsKICAg
ICAgICAgICAgIGN1cnJlbnRMYXllciA9ICZub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRl
eHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMzOGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAw
YzM1OC4uODM5YmU4ZDhmMDQwM2Q3YTEyYzY5ZmQ0Y2QxNTdjZDMyNzhkMDQxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2Rl
cyBpbiBpdCBhcmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkg
eyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQogICAgICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2
b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVT
ZXQubV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5v
ZGVTZXQpIHsgbV9ub2Rlcy5hcHBlbmRWZWN0b3Iobm9kZVNldC5tX25vZGVzKTsgfQogCiAgICAg
ICAgICAgICAvLyBSZXR1cm5zIHRoZSBzZXQncyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVy
LCBvciAwIGlmIHRoZSBzZXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2
ZDYwYTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjYyNzYzNzYwZTM2MTA5NzhkYTI0ZmUyMjkyOTAzNzQw
NjE3ZWFjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyogY29ubmVjdAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1z
ID0gZGF0YS0+aXRlbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBpdGVtcy5z
aXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChpdGVtc1tpXS50eXBlID09IEJs
b2JEYXRhSXRlbTo6QmxvYikKLSAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZCht
X3NhbmRib3hFeHRlbnNpb25zLmdldChpdGVtc1tpXS51cmwuc3RyaW5nKCkpKTsKKyAgICAgICAg
ICAgIHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZFZlY3RvcihtX3NhbmRib3hFeHRlbnNpb25zLmdl
dChpdGVtc1tpXS51cmwuc3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkwodXJsLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlm
NjBhNWE3NTZkYTZkYTAyYWY1Y2I1Li40MjllMjY1NGJhY2IxNGQxNjNkYjVlZDU0ZGRkNGUyM2Fm
MDQxNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVs
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1
bGFibGVMb2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hl
ZHVsYWJsZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1l
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8
IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gRm9y
bURhdGFFbGVtZW50OjplbmNvZGVkQmxvYikgewogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7
Ci0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChi
bG9iRWxlbWVudEV4dGVuc2lvbnMpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5k
Ym94RXh0ZW5zaW9ucy5hcHBlbmRWZWN0b3IoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIy
ZWQwNTUzZWI4NDkuLjVkZDA3NGE1ZTI4OTM0MzYyN2FlODZmM2Y0N2E1NzViYjhlM2FjZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAt
MTkwLDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0
Y2hNZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3Nh
Z2VzVG9QdXRCYWNrLmlzRW1wdHkoKSkgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1Jl
cGx5LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFjayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3Bh
dGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZFZlY3RvcihtZXNzYWdlc1RvUHV0QmFj
ayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBkNGM5ZWMyYzVm
MmU1MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi4zNzI2NDAxZjZjY2M2M2I1ZDlkM2FjNmE3
MTVhMTkwODEyZGNhYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMo
KQogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFs
bG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
cGF0aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBhdGhzKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDg5MzdjMzZjZGJlOGE4NTM4MzljMjczZmY4N2M1YjZlMmI4OWIwODIuLmQ4
MTEyZThkYThhMTRhNjM0YzU1YTEwODYxODFkNzlkYzc4NzQxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0w
NS0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6
YXBwZW5kVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRl
QXR0cmlidXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTQ4MzEyKTogQ3Jhc2ggd2hlbiBjYWxsaW5n
IFdLUGFnZUNsb3NlKHBhZ2UpIGZvbGxvd2VkIGJ5IFdLUGFnZVRlcm1pbmF0ZShwYWdlKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQppbmRleCAzNTNlYThkNjdjOTNkOTY5NjNkMWFhYjQ4NWEyZGFlYTRkZmU2NTA3Li42NTE1
NzVmMjQzZmU5ZjM0ZjcxNDYyODJiNTQ1YjYzNDljMjU2MzA2IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTYy
LDcgKzE2Miw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZh
bHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hh
cj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJz
OnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7Cisg
ICAgYnVmZmVyLmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDhhOTU1MWM4
NWZhOGE4N2JkZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjgwNTE5OTlmZDQyN2NlMTk2YTg2OWJm
YzMyYWI0N2EwNGUyYjI4MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAg
ICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1
ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2
YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200591</attachid>
            <date>2013-05-05 09:59:46 -0700</date>
            <delta_ts>2013-05-05 10:13:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130505095856.patch</filename>
            <type>text/plain</type>
            <size>46233</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5MDMxZTA3ZGI5NTQ1YTYyMWFlMTJh
MmI1OTkzZjM3MjI2NjdiMGMuLjJlMjA0NGQ0OGNmYTZhMzgxN2FhMjVkOWJmNWEzNWFjNDcwYWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2Vz
IGEgVmVjdG9yIGNvbmZsaWN0cyB3aXRoIHJ2YWx1ZXMgaW4gQysrMTEsIHNvIHJlbW92ZSBpdCBh
bmQKKyAgICAgICAgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoIGNhbGxzIHRvIGFwcGVuZFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFZlY3Rvcik6CisKIDIwMTMt
MDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDk1NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlNWNjNGU3MGFhZjNk
MWNjMTc1NThiODJlOTIxYjcyOTAxNDFmYi4uMjRiY2ZiM2E3ZjVmYzQ0NDdlZWY5NzUyNmE4YWNj
MmI4Njg0YmFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA1LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBW
ZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YVZlcnNpb25L
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFz
ZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlz
dEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5OjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNz
UGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAq
IGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRU
b2tlbjo6YWRkTmV3Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFkZE5l
d0Fubm90YXRpb24pOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJl
ZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKToKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICogeG1sL1hQ
YXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmFwcGVuZCk6
CisKIDIwMTMtMDUtMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIHNob3VsZCBub3Qgc3RhcnQgd2hlbiBnbG9iYWxs
eSBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYWUxNzgwYjRjOTllNzM2Yjg1Yzg5YTYxNzZmODAy
YzRiNzE5YjRkLi5kM2Q5ZjZjNjg0OWJmNjBmMTBlYmFmZDFhMmQxMjI2ZTE2YmUzMjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZlY3RvciBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcik6CisgICAgICAg
ICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKToKKwogMjAxMy0w
NS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCAqIHBsYWNl
bWVudCBpbiBhIGZldyBmdW5jdGlvbnMgYXMgbm90aWNlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IDY4OTYyNTU5Zjk1N2NiNmI1MDYzMjU0YzA4YmRhNzFjYzdmNTEzN2MuLjdmYmNjMDVjNDUy
ZDNmYTljZjEzZDkxNjY4ODY1MjkzYTlkZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02MjAsNyArNjIwLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBw
ZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgdW5j
aGVja2VkQXBwZW5kKGNvbnN0IFUmIHZhbCk7Ci0gICAgICAgIHRlbXBsYXRlPHNpemVfdCBvdGhl
ckNhcGFjaXR5PiB2b2lkIGFwcGVuZChjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQg
YXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHRyeUFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKIApA
QCAtMTA2MiwxNSArMTA2MSw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICArK21fc2l6ZTsK
ICAgICB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBhcHBlbmQs
IGEgYmV0dGVyIG5hbWUgd291bGQgYmUgYXBwZW5kRWxlbWVudHMuCi0gICAgLy8gSXQgY291bGQg
YWxzbyBiZSBlbGltaW5hdGVkIGVudGlyZWx5LCBhbmQgY2FsbCBzaXRlcyBjb3VsZCBqdXN0IHVz
ZQotICAgIC8vIGFwcGVuZFJhbmdlKHZhbC5iZWdpbigpLCB2YWwuZW5kKCkpLgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPiB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4KLSAgICBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OmFwcGVuZChjb25zdCBW
ZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKLSAgICB7Ci0gICAgICAgIGFwcGVuZCh2YWwu
YmVnaW4oKSwgdmFsLnNpemUoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PgogICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kVmVjdG9yKGNvbnN0
IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdkNGM4
YWUxZjEwOTg5ODIwYzY4YjU2ZDVlZDg4ZWZiNDU4Y2NhZDIuLjQ4ZTBkMzE2MmM2MzEyOWM1MjYx
YzU5YTUyMDY1MTM3OTIwODJhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA3LDcgKzkwNyw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlZGF0
YUtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGtleSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gdjsKLSAgICB2LmFwcGVuZChlbmNvZGVWYXJJ
bnQodmVyc2lvbikpOworICAgIHYuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludCh2ZXJzaW9uKSk7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIHYuYXBwZW5kKHZhbHVlLT5kYXRhKCksIHZhbHVlLT5zaXplKCkpOwpAQCAt
MTE5MCw4ICsxMTkwLDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2EKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50aWZp
ZXIucHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIGRhdGEuYXBw
ZW5kKGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOwotICAgIGRhdGEu
YXBwZW5kKHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZFZl
Y3RvcihlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRh
LmFwcGVuZFZlY3RvcihyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZl
bERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFj
Li44OGUwZTBiMGU4MTAwMDgyMWYwMzRiZjliMGQyZjU2MTNmZjMzOGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApA
QCAtMzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNv
bnN0IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMu
bGVuZ3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNDE5
LDMwICs0MTksMzAgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXksIFZlY3Rv
cjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElEQktleTo6
SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bGxU
eXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElEQktleU51
bGxUeXBlQnl0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlw
ZTogewotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleUFycmF5VHlwZUJ5dGUp
KTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVC
eXRlKSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZVZhckludChsZW5ndGgpKTsKKyAgICAgICAgaW50by5hcHBl
bmRWZWN0b3IoZW5jb2RlVmFySW50KGxlbmd0aCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgZW5jb2RlSURCS2V5KCprZXkuYXJyYXko
KVtpXSwgaW50byk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNp
emUoKSA+IHByZXZpb3VzU2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5
U3RyaW5nVHlwZUJ5dGUpKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChrZXkuc3RyaW5nKCkpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0
ZShJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVCeXRlKElEQktleURhdGVUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KElEQktleURhdGVUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElEQktleTo6TnVtYmVyVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJ
REJLZXlOdW1iZXJUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUo
a2V5Lm51bWJlcigpKSk7CisgICAgICAgIGludG8uYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoSURC
S2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlRG91
YmxlKGtleS5udW1iZXIoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02NjgsMTQgKzY2OCwxNCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKLSAgICAgICAg
cmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3Ry
aW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6
IHsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgp
OwogICAgICAgICBzaXplX3QgY291bnQgPSBhcnJheS5zaXplKCk7Ci0gICAgICAgIHJldC5hcHBl
bmQoZW5jb2RlVmFySW50KGNvdW50KSk7CisgICAgICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KGNvdW50KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtp
XSkpOworICAgICAgICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3Ro
KGFycmF5W2ldKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMDg4LDkgKzEw
ODgsOSBAQCBWZWN0b3I8Y2hhcj4gS2V5UHJlZml4OjplbmNvZGVJbnRlcm5hbChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZAogICAgIENPTVBJTEVfQVNTRVJUKGtNYXhE
YXRhYmFzZUlkU2l6ZUJpdHMgKyBrTWF4T2JqZWN0U3RvcmVJZFNpemVCaXRzICsga01heEluZGV4
SWRTaXplQml0cyA9PSBzaXplb2YoZmlyc3RCeXRlKSAqIDgsIENBTlRfRU5DT0RFX0lEUyk7CiAg
ICAgVmVjdG9yPGNoYXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiByZXQ7CiAgICAgcmV0LmFw
cGVuZChmaXJzdEJ5dGUpOwotICAgIHJldC5hcHBlbmQoZGF0YWJhc2VJZFN0cmluZyk7Ci0gICAg
cmV0LmFwcGVuZChvYmplY3RTdG9yZUlkU3RyaW5nKTsKLSAgICByZXQuYXBwZW5kKGluZGV4SWRT
dHJpbmcpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZGF0YWJhc2VJZFN0cmluZyk7CisgICAgcmV0
LmFwcGVuZFZlY3RvcihvYmplY3RTdG9yZUlkU3RyaW5nKTsKKyAgICByZXQuYXBwZW5kVmVjdG9y
KGluZGV4SWRTdHJpbmcpOwogCiAgICAgQVNTRVJUKHJldC5zaXplKCkgPD0gRGVmYXVsdElubGlu
ZUJ1ZmZlclNpemUpOwogICAgIHJldHVybiByZXQ7CkBAIC0xMTM1LDIxICsxMTM1LDIxIEBAIEtl
eVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+IFNjaGVt
YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZp
eDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1hVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKFNjaGVtYVZlcnNp
b25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBNYXhEYXRh
YmFzZUlkS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1heERhdGFiYXNlSWRU
eXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlk
VHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4gRGF0YVZlcnNp
b25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5j
b2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0
ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShEYXRhVmVyc2lvblR5cGVCeXRl
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTgwLDggQEAgY29uc3QgY2hh
ciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5OjplbmNvZGUo
aW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsK
KyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRl
KSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQoZGF0YWJhc2VJZCkpOwogICAg
IHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0IGNoYXIqIERhdGFi
YXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwg
RGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVC
eXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdX
aXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0
aChkYXRhYmFzZU5hbWUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJh
c2VOYW1lVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgob3JpZ2luKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKGRhdGFiYXNlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyNTUsNyArMTI1
NSw3IEBAIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBk
YXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUgbWV0YURhCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICByZXQuYXBwZW5kVmVj
dG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTI5NCw5ICsxMjk0LDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVm
aXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5j
b2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBl
Qnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZl
Y3RvcihlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5h
cHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5k
VmVjdG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTM2OSwxMCArMTM2OSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhNZXRhRGF0YVR5cGVC
eXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElu
ZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50
KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludChpbmRl
eElkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOwog
ICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQzMiw4IEBAIFZlY3RvcjxjaGFyPiBP
YmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0
b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZh
ckludChvYmplY3RTdG9yZUlkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKE9i
amVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDg5LDkg
KzE0ODksOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUo
SW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJ
bnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KGlu
ZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTQ1LDggKzE1NDUsOCBAQCBWZWN0
b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTU4OCw5ICsxNTg4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4
TmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY28KIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKElu
ZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhO
YW1lKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQp
KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhOYW1l
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTYyMCw3ICsxNjIwLDcgQEAgVmVjdG9yPGNo
YXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRl
V2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhO
dW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJl
dC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZFVz
ZXJLZXkpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTE2NjIsNyArMTY2Miw3IEBAIFZlY3Rv
cjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNy
ZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbElu
ZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZWRLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZEtl
eSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTczMyw5ICsxNzMzLDkgQEAgVmVjdG9yPGNo
YXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2Rl
KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5
S2V5KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZWRVc2VyS2V5KTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcy
NjZlYjc5NGIwZThlZDBiZjUxNmUzYjc1MmY2YTc4MmNiYzYyLi40MjQzYTEzNWJiOGNlYWEzMTdk
YTA3YTY1MzMzMGQxYjY0MTMxOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OmNsZWFyKCkKICAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAg
ICBkbyB7CiAgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwogICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpz
Y2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVN
YXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7Ci0gICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAg
bV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLjk4YWQzNGQ4ODFiYmM0NTk0ZTBmYWM2ZGE4MTI0
NWUzZTRjMTViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRWZWN0
b3Iocm93LT5jaGlsZHJlbigpKTsKIAogICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFmYWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3
OTYwYjYxLi41NmUyZTk0OTU3MWFlNDYxM2IxMzRkM2YzZGZmZmEyNTk1NzEyYjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KCkKICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kVmVj
dG9yKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93cy5h
ZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY2LDExICs0NjYsOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJgogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKLSAg
ICBpbnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgbnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJvd0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFw
cGVuZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8
IG1fcm93cy5zaXplKCk7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRWZWN0b3IobV9yb3dz
W3Jvd10tPmNoaWxkcmVuKCkpOwogfQogICAgIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0
M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi45M2E4ZWM4ZjIyYzNkNzY4YzE5OTg5
MjdkNmNkYjFmNTVjY2U0OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1
LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0
JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRy
c0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBhdHRyc0luUnVsZXMu
YWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwot
ICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRl
UnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIuc2libGluZ1J1bGVz
KTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1v
bkF0dHJpYnV0ZVJ1bGVzKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5l
UnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1
bGVzID0gdXNlc0JlZm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjQ2MzBmNTM0NTc0NGIy
NWY3MTdhZjg0NjhhNjgzYmY0ZmQwZGNlMy4uZDMyYTBhODEyMWRlNDFlZmM5ZWNmMzRiY2U5NDZl
NmY1MzMyNDUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3
ICsxODI3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwog
ICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0u
bWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsK
KyAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kVmVjdG9yKG1hdGNoUmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQu
cmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVu
ZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRo
ZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRo
ZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzlj
MTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2MTcuLmQzMTRkOTBiOTJmNDRhNGEzNGI0OTYz
ZGY0NDcwYzAwMWY1YTYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFt
ZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQ
YXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNz
UGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBzaGVldHMuYXBwZW5kVmVjdG9yKHNlYW1sZXNzUGFy
ZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cygpKTsKIH0KIAogYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCkBAIC00NjIs
OCArNDYyLDggQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3Rp
dmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICBjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRz
LmFwcGVuZChpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxl
U2hlZXRzLmFwcGVuZChkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwor
ICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3Rvcihkb2N1bWVudEF1dGhvclN0eWxl
U2hlZXRzKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1Bh
cmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwogICAgIGZpbHRlckVuYWJs
ZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA2ZDhjZDYyZDcxMjlkODIyZTY5MmE1OTNkNTM0NzI3
YmE4ZDcxNzllLi4wZmFlMzFjZTU1OGJmMTAyZjdlZDliMDNkZTYwZGVkY2FkNDRjODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRl
ckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMoZWxlbWVudFF1YWRzKTsK
ICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0UXVhZHNGb3JTY3Jv
bGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKGVsZW1lbnRRdWFkcywgcmVuZGVyQm94TW9k
ZWxPYmplY3QpOwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKGVsZW1lbnRRdWFkcyk7
CisgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKGVsZW1lbnRRdWFkcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRvVGV4dChub2RlKS0+cmVuZGVy
ZXIoKSkgewpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4
dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICBy
ZW5kZXJUZXh0LT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodGV4dFF1YWRzLCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0
UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHRleHRRdWFkcywgcmVu
ZGVyVGV4dCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsKKyAg
ICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodGV4dFF1YWRzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCAwOWNjMjg3NDQxODEwMzkwOTgxMTgzNDM5Mjg0NTM0YTMyNWQy
YjYzLi4xYWM0Zjc1ZWY5MDY2YjMzMGVkYTIxMGE0OWNhMTQyMDQ3ZWYzNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC02ODEsNyArNjgx
LDcgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCogY2xpZW50
LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICAgICAgICAgaWYgKHJlc3VsdHMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmVzdWx0cy5zd2FwKHNwZWxsaW5nUmVzdWx0KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc3BlbGxpbmdSZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmRWZWN0b3Ioc3BlbGxpbmdSZXN1bHQpOwogICAgIH0KICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3
ZmI1OWJmMzBmOWE1ODQ3YjQ1YjNjNGZkMzBiNzAxLi5lMjk1ZTUxM2Y2ZjliYWRlMGM2ZWZhZmIw
NTc0NmQzYmIxNzMzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApA
QCAtNTEwLDggKzUxMCw4IEBAIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0CiAgICAgVmVjdG9yPFN0
cmluZz4gdG9SZXR1cm47CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbWFwOwogICAgIGZvcm1TdGF0
ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1hcCk7Ci0gICAgZm9yIChTYXZlZEZvcm1T
dGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgp
OyArK2l0KQotICAgICAgICB0b1JldHVybi5hcHBlbmQoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCkpOworICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWFwLmJlZ2luKCksIGVuZCA9IG1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICB0b1JldHVybi5hcHBlbmRWZWN0b3IoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTli
Yzk1MGNhZDNiZGRhODkyYTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uMGIzODlhZGFiYzE3OWVmOGE2
NDY2NzNjYzBkMTI5NjhmN2Y0YTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIGRhc2gpCiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBv
ZiB0d28gY29waWVzIHRoZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxl
bWVudHMgaXMgb2RkCiAgICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJs
ZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0
ZSgpLm1fbGluZURhc2guYXBwZW5kVmVjdG9yKGRhc2gpOwogCiAgICAgYXBwbHlMaW5lRGFzaCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmNmY5YTI4YjE0YWE3MTc0MjJiZWQxMzg4MzIyOWUx
YTI2MGUzMDAwLi40NmRjNWJiOGIyOTM2MGEwMjFhMjU5MDY2NTFmYjc0NDAyNDNiZDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRNTFN0YWNrSXRl
CiAgICAgaWYgKGNhbmRpZGF0ZXMuc2l6ZSgpIDwga05vYWhzQXJrQ2FwYWNpdHkpCiAgICAgICAg
IHJldHVybjsgLy8gVGhlcmUncyByb29tIGZvciB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGFyay4g
VGhlcmUncyBubyBuZWVkIHRvIGNvcHkgb3V0IHRoZSByZW1haW5pbmdDYW5kaWRhdGVzLgogCi0g
ICAgcmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlcyk7CisgICAgcmVtYWluaW5n
Q2FuZGlkYXRlcy5hcHBlbmRWZWN0b3IoY2FuZGlkYXRlcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSog
bmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZm
ODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2ZTQ4OTQ3Li43Y2YxYTI3ZDNmYmE0OWM5MWMw
ZGU5OThlMzczZjE5ZTViMDFiZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9jbGFzc2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBw
ZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRWZWN0b3IobV9j
dXJyZW50QnVmZmVyKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQog
ICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24uY2xlYXIoKTsK
LSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAgICAgICBt
X2Fubm90YXRpb24uYXBwZW5kVmVjdG9yKG1fY3VycmVudEJ1ZmZlcik7CiAgICAgICAgIG1fY3Vy
cmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQppbmRleCBiMTk5OGM0MDdlNjNmMGFlMDgz
NzA0MTlhODA5ZDU3YzlmZDkxMjg2Li41YTg4NGM2YmM5MWRkMTY1ZjkxZDkyYjQ3ZjY1NjE3MTFk
NmMwYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tCkBAIC00NzUsNyArNDc1LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKIAotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2VzKTsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
LmFwcGVuZFZlY3RvcihwbGF0Zm9ybUxhbmd1YWdlcyk7CiAKICAgICByZXR1cm4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApp
bmRleCAwZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUwMmRlLi5jZDUwZWUyYTE2
MmU4ZmNmOGQwMDZiNTJjZWU3Y2JjNTBhODQ4N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9yPFN0cmluZz4gRmlsZUNo
b29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+
IGFjY2VwdFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBhY2l0eShhY2NlcHRNSU1F
VHlwZXMuc2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBhY2NlcHRU
eXBlcy5hcHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNj
ZXB0RmlsZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3RvcihhY2NlcHRN
SU1FVHlwZXMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3RvcihhY2NlcHRGaWxlRXh0ZW5z
aW9ucyk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggNWQ3NzZhZGQ4
YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uNmExM2ZlNmI0NzZlZjQzZjIwNGM2M2U0
YTU1ODg4NTU5N2NjNzc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNs
dWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCsrOwogICAgICAgICAgICAg
aWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iuc2l6ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAgICAgICAgICAgICAgIGNodW5rLmFw
cGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZFZlY3Rv
cihtX3NlcGFyYXRvcik7CiAgICAgICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCA9IDA7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYzUyMzg1ODBi
OTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZi4uNTNlNjc4MTdmMTQ3NmQ1NWQxNzViMmVm
NmY2MmI3NTU5ZjVmMGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKICAgICAgICAg
ZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBz
aXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMpOworICAgICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5n
aW5lU2l0ZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZlMjdiMGMzNGM4
YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uMjEyZTkyZWQ3OGExNmE0YWM4OGJjZGJhYmM0N2Iw
ZmI0YzQ3MzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJlYWNo
ZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5ZXJzID0gbV9z
dHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1hcnlMYXllckNo
aWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJpbWFyeUxheWVy
Q2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmltYXJ5TGF5ZXJD
aGlsZHJlbi5hcHBlbmRWZWN0b3IoKmN1c3RvbVN1YmxheWVycyk7CiAKICAgICBpZiAobV9zdHJ1
Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0OGQzZWJhNTFkNGQ3NmFm
NDZmN2Y0YWNmODYyYzI5NjkxOTMwNTZmLi5lNjQwZjBjOGNlYmFhZTYyNmZlOTg0ODhhMTQ2NmU4
MWMzYjhiMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3Jl
YXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAg
ICAKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5cGUpKTsKLSAgICB0eXBl
cy5hcHBlbmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKKyAgICB0eXBlcy5hcHBlbmRWZWN0b3Io
d3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TUlRGRFBi
b2FyZFR5cGUpKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CkBAIC0xMTQsNyArMTE0LDcgQEAgc3Rh
dGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKQog
c3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7CiAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgdHlwZXMuYXBwZW5kKGNyZWF0ZVdyaXRhYmxlVHlwZXNG
b3JJbWFnZSgpKTsKKyAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY3JlYXRlV3JpdGFibGVUeXBlc0Zv
ckltYWdlKCkpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CiAg
ICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0
YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0eXBlcy5hcHBlbmRWZWN0
b3IoY2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgZnJhbWUt
PmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRl
ci5jcHAKaW5kZXggNTY3YmQ2MGI5OTc0OTI3MTQzYmUyYmRhMjIwMzc4Y2Y2OTU3ZTY5My4uMTc0
NGJhYzEyY2UzYzc5NjhjYWQ3MDZjZGM4NzA0ODRjNDk1N2NhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIFZlY3RvcjxjaGFyPiBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91
bmRhcnlTdHJpbmcoKQogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoYWxwaGFOdW1lcmljRW5j
b2RpbmdNYXBbcmFuZG9tbmVzcyAmIDB4M0ZdKTsKICAgICB9CiAKLSAgICBib3VuZGFyeS5hcHBl
bmQocmFuZG9tQnl0ZXMpOworICAgIGJvdW5kYXJ5LmFwcGVuZFZlY3RvcihyYW5kb21CeXRlcyk7
CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAwIGF0IHRoZSBlbmQgc28gd2UgY2Fu
IHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAgcmV0dXJuIGJvdW5kYXJ5OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA0ZDBmZmJlYzNm
MTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3NGFiLi4yMjIxNzI2ODVmYzk3Nzk1ZDgwNmZmNjMw
ZTBhZWE3ZmEwN2IyOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpk
ZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG1velBhdGhzOwog
ICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigiTU9aX1BMVUdJTl9QQVRIIikpOwogICAgIG1velBh
dGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIG1velBh
dGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96UGF0aHMpOworICAgIHBhdGhzLmFwcGVuZFZlY3Rv
cihtb3pQYXRocyk7CiAjZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICBTdHJpbmcgdXNlclBs
dWdpblBhdGggPSBob21lRGlyZWN0b3J5UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRoLmFwcGVu
ZChTdHJpbmcoIi9MaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zIikpOwpAQCAtNDQ1LDcgKzQ0NSw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3Jp
ZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IHF0UGF0aHM7CiAgICAgU3RyaW5nIHF0UGF0aChxZ2V0
ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmNvbnN0RGF0YSgpKTsKICAgICBxdFBhdGguc3Bs
aXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHF0UGF0aHMpOwot
ICAgIHBhdGhzLmFwcGVuZChxdFBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRWZWN0b3IocXRQYXRo
cyk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzAyYzRhN2E3NDRmYWYx
Mzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uNjZjMDYyNGUxZTk0NjMyYjk3YzdmYWU0NmU2ZmZk
MTAxNmRhZGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVyJiB0b3BSZXNv
bHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55IG5lc3RlZCBpc29sYXRlIHJ1
bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2ZXIncyBsaXN0
IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlzb2xhdGVkUmVzb2x2ZXIuaXNv
bGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRl
ZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7CisgICAgICAg
ICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRWZWN0b3IoaXNvbGF0ZWRSZXNv
bHZlci5pc29sYXRlZFJ1bnMoKSk7CiAgICAgICAgICAgICBpc29sYXRlZFJlc29sdmVyLmlzb2xh
dGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5MTFjM2E5
NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJjMjcuLjUwOWI1OTFlNjg3ODZiYjk2MDJlMmJmYmVh
NDlhNDYxOGIxOGU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCiAgICAgewotICAgICAgICBtX292ZXJsYXBT
dGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBlbmQobV9vdmVybGFwU3RhY2subGFz
dCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0u
YXBwZW5kVmVjdG9yKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CiAgICAgICAgIG1fb3ZlcmxhcFN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggOTIwNTk0MDU5ZThiZDRhMWVjYWE3YTVlY2Vh
NmNkNWMwMmQzMjEzNC4uYmNiNjNiZDE0MDI5ZTQ3NDAxMGJkMTJlYjc1OWMzYzE1YjkyNDM5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAK
QEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVt
bih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIgPSBtX2dyaWRb
cm93XS5yb3c7CiAgICAgICAgIHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3QoKSk7CiAgICAg
ICAgIGlmIChyW3Bvc10uaGFzQ2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3MgKyAxXS5jZWxs
cy5hcHBlbmQocltwb3NdLmNlbGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBw
ZW5kVmVjdG9yKHJbcG9zXS5jZWxscyk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNl
bGwgPSByW3Bvc10ucHJpbWFyeUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsKTsKICAg
ICAgICAgICAgIEFTU0VSVChjZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNvbFNwYW4gPyAx
dSA6IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2NTkxZDdhNzBi
NGIxYTc3ZWIwNDY3YzcyZGQzODQ0Mi4uZDA4MzFjNGE1NjU5NGY4YjI0NDgyMGQxZWIyZjFmOWEy
Zjg4NjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0gY3VycmVudExh
eWVyLT5nZXQoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5cGhzKTsKKyAg
ICAgICAgICAgIGdseXBocy5hcHBlbmRWZWN0b3Iobm9kZS0+Z2x5cGhzKTsKICAgICAgICAgICAg
IGN1cnJlbnRMYXllciA9ICZub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRleHRJdGVyYXRv
ci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2Rl
U2V0LmgKaW5kZXggYmM3NjdkNWMzOGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAwYzM1OC4uODM5
YmU4ZDhmMDQwM2Q3YTEyYzY5ZmQ0Y2QxNTdjZDMyNzhkMDQxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aE5vZGVTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBpbiBpdCBh
cmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBtX25vZGVz
LmFwcGVuZChub2RlKTsgfQogICAgICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2b2lkIGFwcGVu
ZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVTZXQubV9ub2Rl
cyk7IH0KKyAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVTZXQpIHsg
bV9ub2Rlcy5hcHBlbmRWZWN0b3Iobm9kZVNldC5tX25vZGVzKTsgfQogCiAgICAgICAgICAgICAv
LyBSZXR1cm5zIHRoZSBzZXQncyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVyLCBvciAwIGlm
IHRoZSBzZXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
L05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2ZDYwYTk5ZDM3
OWU5MzhhMTUyMmE3ODUuLjYyNzYzNzYwZTM2MTA5NzhkYTI0ZmUyMjkyOTAzNzQwNjE3ZWFjMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29y
a0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIE5ldHdv
cmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyogY29ubmVjdAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zID0gZGF0YS0+
aXRlbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBpdGVtcy5zaXplKCk7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChpdGVtc1tpXS50eXBlID09IEJsb2JEYXRhSXRl
bTo6QmxvYikKLSAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChtX3NhbmRib3hF
eHRlbnNpb25zLmdldChpdGVtc1tpXS51cmwuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIHNhbmRi
b3hFeHRlbnNpb25zLmFwcGVuZFZlY3RvcihtX3NhbmRib3hFeHRlbnNpb25zLmdldChpdGVtc1tp
XS51cmwuc3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwodXJsLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBhNWE3NTZk
YTZkYTAyYWY1Y2I1Li40MjllMjY1NGJhY2IxNGQxNjNkYjVlZDU0ZGRkNGUyM2FmMDQxNGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2Fk
ZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxv
YWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNvdW50OyAr
K2kpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gRm9ybURhdGFFbGVt
ZW50OjplbmNvZGVkQmxvYikgewogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7Ci0gICAgICAg
ICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChibG9iRWxlbWVu
dEV4dGVuc2lvbnMpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5z
aW9ucy5hcHBlbmRWZWN0b3IoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIyZWQwNTUzZWI4
NDkuLjVkZDA3NGE1ZTI4OTM0MzYyN2FlODZmM2Y0N2E1NzViYjhlM2FjZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAtMTkwLDcgKzE5
MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hNZXNzYWdl
cyhDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRC
YWNrLmlzRW1wdHkoKSkgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVu
ZChtZXNzYWdlc1RvUHV0QmFjayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVX
YWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZFZlY3RvcihtZXNzYWdlc1RvUHV0QmFjayk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBkNGM5ZWMyYzVmMmU1MmZmMGFj
YTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi4zNzI2NDAxZjZjY2M2M2I1ZDlkM2FjNmE3MTVhMTkwODEy
ZGNhYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgVmVj
dG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIGlm
ICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRo
czsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlF
bnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGF0aHMpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBhdGhzKTsKICAgICB9CiAKICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDg5MzdjMzZjZGJlOGE4NTM4MzljMjczZmY4N2M1YjZlMmI4OWIwODIuLmQ4MTEyZThkYThh
MTRhNjM0YzU1YTEwODYxODFkNzlkYzc4NzQxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNS0wNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUg
VmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5kVmVj
dG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUpOgorCiAyMDEzLTA1LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTQ4MzEyKTogQ3Jhc2ggd2hlbiBjYWxsaW5nIFdLUGFnZUNs
b3NlKHBhZ2UpIGZvbGxvd2VkIGJ5IFdLUGFnZVRlcm1pbmF0ZShwYWdlKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRl
eCAzNTNlYThkNjdjOTNkOTY5NjNkMWFhYjQ4NWEyZGFlYTRkZmU2NTA3Li42NTE1NzVmMjQzZmU5
ZjM0ZjcxNDYyODJiNTQ1YjYzNDljMjU2MzA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3
IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3Ry
aW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hhcj4gdmFsdWVC
dWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZhbHVlQnVm
ZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAgYnVmZmVy
LmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDhhOTU1MWM4NWZhOGE4N2Jk
ZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjgwNTE5OTlmZDQyN2NlMTk2YTg2OWJmYzMyYWI0N2Ew
NGUyYjI4MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpA
QCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8
VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFy
YWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZl
cik7CisgICAgYnVmZmVyLmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200592</attachid>
            <date>2013-05-05 10:13:56 -0700</date>
            <delta_ts>2013-05-05 10:42:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130505101305.patch</filename>
            <type>text/plain</type>
            <size>47581</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5MDMxZTA3ZGI5NTQ1YTYyMWFlMTJh
MmI1OTkzZjM3MjI2NjdiMGMuLjJlMjA0NGQ0OGNmYTZhMzgxN2FhMjVkOWJmNWEzNWFjNDcwYWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2Vz
IGEgVmVjdG9yIGNvbmZsaWN0cyB3aXRoIHJ2YWx1ZXMgaW4gQysrMTEsIHNvIHJlbW92ZSBpdCBh
bmQKKyAgICAgICAgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoIGNhbGxzIHRvIGFwcGVuZFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFZlY3Rvcik6CisKIDIwMTMt
MDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDk1NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlNWNjNGU3MGFhZjNk
MWNjMTc1NThiODJlOTIxYjcyOTAxNDFmYi4uMjRiY2ZiM2E3ZjVmYzQ0NDdlZWY5NzUyNmE4YWNj
MmI4Njg0YmFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA1LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBW
ZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YVZlcnNpb25L
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFz
ZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlz
dEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5OjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNz
UGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAq
IGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRU
b2tlbjo6YWRkTmV3Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFkZE5l
d0Fubm90YXRpb24pOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJl
ZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKToKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICogeG1sL1hQ
YXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmFwcGVuZCk6
CisKIDIwMTMtMDUtMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIHNob3VsZCBub3Qgc3RhcnQgd2hlbiBnbG9iYWxs
eSBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYWUxNzgwYjRjOTllNzM2Yjg1Yzg5YTYxNzZmODAy
YzRiNzE5YjRkLi5kM2Q5ZjZjNjg0OWJmNjBmMTBlYmFmZDFhMmQxMjI2ZTE2YmUzMjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZlY3RvciBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcik6CisgICAgICAg
ICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKToKKwogMjAxMy0w
NS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCAqIHBsYWNl
bWVudCBpbiBhIGZldyBmdW5jdGlvbnMgYXMgbm90aWNlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IDY4OTYyNTU5Zjk1N2NiNmI1MDYzMjU0YzA4YmRhNzFjYzdmNTEzN2MuLjdmYmNjMDVjNDUy
ZDNmYTljZjEzZDkxNjY4ODY1MjkzYTlkZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02MjAsNyArNjIwLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBw
ZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgdW5j
aGVja2VkQXBwZW5kKGNvbnN0IFUmIHZhbCk7Ci0gICAgICAgIHRlbXBsYXRlPHNpemVfdCBvdGhl
ckNhcGFjaXR5PiB2b2lkIGFwcGVuZChjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQg
YXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHRyeUFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKIApA
QCAtMTA2MiwxNSArMTA2MSw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICArK21fc2l6ZTsK
ICAgICB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBhcHBlbmQs
IGEgYmV0dGVyIG5hbWUgd291bGQgYmUgYXBwZW5kRWxlbWVudHMuCi0gICAgLy8gSXQgY291bGQg
YWxzbyBiZSBlbGltaW5hdGVkIGVudGlyZWx5LCBhbmQgY2FsbCBzaXRlcyBjb3VsZCBqdXN0IHVz
ZQotICAgIC8vIGFwcGVuZFJhbmdlKHZhbC5iZWdpbigpLCB2YWwuZW5kKCkpLgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPiB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4KLSAgICBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OmFwcGVuZChjb25zdCBW
ZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKLSAgICB7Ci0gICAgICAgIGFwcGVuZCh2YWwu
YmVnaW4oKSwgdmFsLnNpemUoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PgogICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kVmVjdG9yKGNvbnN0
IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdkNGM4
YWUxZjEwOTg5ODIwYzY4YjU2ZDVlZDg4ZWZiNDU4Y2NhZDIuLjQ4ZTBkMzE2MmM2MzEyOWM1MjYx
YzU5YTUyMDY1MTM3OTIwODJhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA3LDcgKzkwNyw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlZGF0
YUtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGtleSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gdjsKLSAgICB2LmFwcGVuZChlbmNvZGVWYXJJ
bnQodmVyc2lvbikpOworICAgIHYuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludCh2ZXJzaW9uKSk7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIHYuYXBwZW5kKHZhbHVlLT5kYXRhKCksIHZhbHVlLT5zaXplKCkpOwpAQCAt
MTE5MCw4ICsxMTkwLDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2EKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50aWZp
ZXIucHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIGRhdGEuYXBw
ZW5kKGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOwotICAgIGRhdGEu
YXBwZW5kKHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZFZl
Y3RvcihlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRh
LmFwcGVuZFZlY3RvcihyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZl
bERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFj
Li44OGUwZTBiMGU4MTAwMDgyMWYwMzRiZjliMGQyZjU2MTNmZjMzOGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApA
QCAtMzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNv
bnN0IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMu
bGVuZ3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNDE5
LDMwICs0MTksMzAgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXksIFZlY3Rv
cjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElEQktleTo6
SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bGxU
eXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElEQktleU51
bGxUeXBlQnl0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlw
ZTogewotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleUFycmF5VHlwZUJ5dGUp
KTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVC
eXRlKSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZVZhckludChsZW5ndGgpKTsKKyAgICAgICAgaW50by5hcHBl
bmRWZWN0b3IoZW5jb2RlVmFySW50KGxlbmd0aCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgZW5jb2RlSURCS2V5KCprZXkuYXJyYXko
KVtpXSwgaW50byk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNp
emUoKSA+IHByZXZpb3VzU2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5
U3RyaW5nVHlwZUJ5dGUpKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChrZXkuc3RyaW5nKCkpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0
ZShJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVCeXRlKElEQktleURhdGVUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KElEQktleURhdGVUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElEQktleTo6TnVtYmVyVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJ
REJLZXlOdW1iZXJUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUo
a2V5Lm51bWJlcigpKSk7CisgICAgICAgIGludG8uYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoSURC
S2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlRG91
YmxlKGtleS5udW1iZXIoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02NjgsMTQgKzY2OCwxNCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKLSAgICAgICAg
cmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3Ry
aW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6
IHsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgp
OwogICAgICAgICBzaXplX3QgY291bnQgPSBhcnJheS5zaXplKCk7Ci0gICAgICAgIHJldC5hcHBl
bmQoZW5jb2RlVmFySW50KGNvdW50KSk7CisgICAgICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KGNvdW50KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtp
XSkpOworICAgICAgICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3Ro
KGFycmF5W2ldKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMDg4LDkgKzEw
ODgsOSBAQCBWZWN0b3I8Y2hhcj4gS2V5UHJlZml4OjplbmNvZGVJbnRlcm5hbChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZAogICAgIENPTVBJTEVfQVNTRVJUKGtNYXhE
YXRhYmFzZUlkU2l6ZUJpdHMgKyBrTWF4T2JqZWN0U3RvcmVJZFNpemVCaXRzICsga01heEluZGV4
SWRTaXplQml0cyA9PSBzaXplb2YoZmlyc3RCeXRlKSAqIDgsIENBTlRfRU5DT0RFX0lEUyk7CiAg
ICAgVmVjdG9yPGNoYXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiByZXQ7CiAgICAgcmV0LmFw
cGVuZChmaXJzdEJ5dGUpOwotICAgIHJldC5hcHBlbmQoZGF0YWJhc2VJZFN0cmluZyk7Ci0gICAg
cmV0LmFwcGVuZChvYmplY3RTdG9yZUlkU3RyaW5nKTsKLSAgICByZXQuYXBwZW5kKGluZGV4SWRT
dHJpbmcpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZGF0YWJhc2VJZFN0cmluZyk7CisgICAgcmV0
LmFwcGVuZFZlY3RvcihvYmplY3RTdG9yZUlkU3RyaW5nKTsKKyAgICByZXQuYXBwZW5kVmVjdG9y
KGluZGV4SWRTdHJpbmcpOwogCiAgICAgQVNTRVJUKHJldC5zaXplKCkgPD0gRGVmYXVsdElubGlu
ZUJ1ZmZlclNpemUpOwogICAgIHJldHVybiByZXQ7CkBAIC0xMTM1LDIxICsxMTM1LDIxIEBAIEtl
eVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+IFNjaGVt
YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZp
eDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1hVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKFNjaGVtYVZlcnNp
b25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBNYXhEYXRh
YmFzZUlkS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1heERhdGFiYXNlSWRU
eXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlk
VHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4gRGF0YVZlcnNp
b25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5j
b2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0
ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShEYXRhVmVyc2lvblR5cGVCeXRl
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTgwLDggQEAgY29uc3QgY2hh
ciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5OjplbmNvZGUo
aW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsK
KyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRl
KSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQoZGF0YWJhc2VJZCkpOwogICAg
IHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0IGNoYXIqIERhdGFi
YXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwg
RGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVC
eXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdX
aXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0
aChkYXRhYmFzZU5hbWUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJh
c2VOYW1lVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgob3JpZ2luKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKGRhdGFiYXNlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyNTUsNyArMTI1
NSw3IEBAIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBk
YXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUgbWV0YURhCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICByZXQuYXBwZW5kVmVj
dG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTI5NCw5ICsxMjk0LDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVm
aXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5j
b2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBl
Qnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZl
Y3RvcihlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5h
cHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5k
VmVjdG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTM2OSwxMCArMTM2OSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhNZXRhRGF0YVR5cGVC
eXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElu
ZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50
KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludChpbmRl
eElkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOwog
ICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQzMiw4IEBAIFZlY3RvcjxjaGFyPiBP
YmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0
b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZh
ckludChvYmplY3RTdG9yZUlkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKE9i
amVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDg5LDkg
KzE0ODksOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUo
SW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJ
bnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KGlu
ZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTQ1LDggKzE1NDUsOCBAQCBWZWN0
b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTU4OCw5ICsxNTg4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4
TmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY28KIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKElu
ZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhO
YW1lKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQp
KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhOYW1l
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTYyMCw3ICsxNjIwLDcgQEAgVmVjdG9yPGNo
YXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRl
V2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhO
dW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJl
dC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZFVz
ZXJLZXkpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTE2NjIsNyArMTY2Miw3IEBAIFZlY3Rv
cjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNy
ZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbElu
ZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZWRLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZEtl
eSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTczMyw5ICsxNzMzLDkgQEAgVmVjdG9yPGNo
YXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2Rl
KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5
S2V5KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZWRVc2VyS2V5KTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcy
NjZlYjc5NGIwZThlZDBiZjUxNmUzYjc1MmY2YTc4MmNiYzYyLi40MjQzYTEzNWJiOGNlYWEzMTdk
YTA3YTY1MzMzMGQxYjY0MTMxOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OmNsZWFyKCkKICAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAg
ICBkbyB7CiAgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwogICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpz
Y2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVN
YXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7Ci0gICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAg
bV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLjk4YWQzNGQ4ODFiYmM0NTk0ZTBmYWM2ZGE4MTI0
NWUzZTRjMTViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRWZWN0
b3Iocm93LT5jaGlsZHJlbigpKTsKIAogICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFmYWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3
OTYwYjYxLi41NmUyZTk0OTU3MWFlNDYxM2IxMzRkM2YzZGZmZmEyNTk1NzEyYjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KCkKICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kVmVj
dG9yKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93cy5h
ZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY2LDExICs0NjYsOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJgogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKLSAg
ICBpbnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgbnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJvd0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFw
cGVuZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8
IG1fcm93cy5zaXplKCk7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRWZWN0b3IobV9yb3dz
W3Jvd10tPmNoaWxkcmVuKCkpOwogfQogICAgIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0
M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi45M2E4ZWM4ZjIyYzNkNzY4YzE5OTg5
MjdkNmNkYjFmNTVjY2U0OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1
LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0
JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRy
c0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBhdHRyc0luUnVsZXMu
YWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwot
ICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRl
UnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIuc2libGluZ1J1bGVz
KTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1v
bkF0dHJpYnV0ZVJ1bGVzKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5l
UnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1
bGVzID0gdXNlc0JlZm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjQ2MzBmNTM0NTc0NGIy
NWY3MTdhZjg0NjhhNjgzYmY0ZmQwZGNlMy4uZDMyYTBhODEyMWRlNDFlZmM5ZWNmMzRiY2U5NDZl
NmY1MzMyNDUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3
ICsxODI3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwog
ICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0u
bWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsK
KyAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kVmVjdG9yKG1hdGNoUmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQu
cmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVu
ZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRo
ZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRo
ZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzlj
MTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2MTcuLmQzMTRkOTBiOTJmNDRhNGEzNGI0OTYz
ZGY0NDcwYzAwMWY1YTYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFt
ZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQ
YXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNz
UGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBzaGVldHMuYXBwZW5kVmVjdG9yKHNlYW1sZXNzUGFy
ZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cygpKTsKIH0KIAogYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCkBAIC00NjIs
OCArNDYyLDggQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3Rp
dmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICBjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRz
LmFwcGVuZChpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxl
U2hlZXRzLmFwcGVuZChkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwor
ICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3Rvcihkb2N1bWVudEF1dGhvclN0eWxl
U2hlZXRzKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1Bh
cmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwogICAgIGZpbHRlckVuYWJs
ZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA2ZDhjZDYyZDcxMjlkODIyZTY5MmE1OTNkNTM0NzI3
YmE4ZDcxNzllLi4wZmFlMzFjZTU1OGJmMTAyZjdlZDliMDNkZTYwZGVkY2FkNDRjODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRl
ckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMoZWxlbWVudFF1YWRzKTsK
ICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0UXVhZHNGb3JTY3Jv
bGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKGVsZW1lbnRRdWFkcywgcmVuZGVyQm94TW9k
ZWxPYmplY3QpOwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKGVsZW1lbnRRdWFkcyk7
CisgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKGVsZW1lbnRRdWFkcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRvVGV4dChub2RlKS0+cmVuZGVy
ZXIoKSkgewpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4
dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICBy
ZW5kZXJUZXh0LT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodGV4dFF1YWRzLCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0
UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHRleHRRdWFkcywgcmVu
ZGVyVGV4dCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsKKyAg
ICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodGV4dFF1YWRzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCAwOWNjMjg3NDQxODEwMzkwOTgxMTgzNDM5Mjg0NTM0YTMyNWQy
YjYzLi4xYWM0Zjc1ZWY5MDY2YjMzMGVkYTIxMGE0OWNhMTQyMDQ3ZWYzNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC02ODEsNyArNjgx
LDcgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCogY2xpZW50
LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICAgICAgICAgaWYgKHJlc3VsdHMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmVzdWx0cy5zd2FwKHNwZWxsaW5nUmVzdWx0KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc3BlbGxpbmdSZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmRWZWN0b3Ioc3BlbGxpbmdSZXN1bHQpOwogICAgIH0KICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3
ZmI1OWJmMzBmOWE1ODQ3YjQ1YjNjNGZkMzBiNzAxLi5lMjk1ZTUxM2Y2ZjliYWRlMGM2ZWZhZmIw
NTc0NmQzYmIxNzMzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApA
QCAtNTEwLDggKzUxMCw4IEBAIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0CiAgICAgVmVjdG9yPFN0
cmluZz4gdG9SZXR1cm47CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbWFwOwogICAgIGZvcm1TdGF0
ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1hcCk7Ci0gICAgZm9yIChTYXZlZEZvcm1T
dGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgp
OyArK2l0KQotICAgICAgICB0b1JldHVybi5hcHBlbmQoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCkpOworICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWFwLmJlZ2luKCksIGVuZCA9IG1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICB0b1JldHVybi5hcHBlbmRWZWN0b3IoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTli
Yzk1MGNhZDNiZGRhODkyYTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uMGIzODlhZGFiYzE3OWVmOGE2
NDY2NzNjYzBkMTI5NjhmN2Y0YTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIGRhc2gpCiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBv
ZiB0d28gY29waWVzIHRoZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxl
bWVudHMgaXMgb2RkCiAgICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJs
ZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0
ZSgpLm1fbGluZURhc2guYXBwZW5kVmVjdG9yKGRhc2gpOwogCiAgICAgYXBwbHlMaW5lRGFzaCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmNmY5YTI4YjE0YWE3MTc0MjJiZWQxMzg4MzIyOWUx
YTI2MGUzMDAwLi40NmRjNWJiOGIyOTM2MGEwMjFhMjU5MDY2NTFmYjc0NDAyNDNiZDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRNTFN0YWNrSXRl
CiAgICAgaWYgKGNhbmRpZGF0ZXMuc2l6ZSgpIDwga05vYWhzQXJrQ2FwYWNpdHkpCiAgICAgICAg
IHJldHVybjsgLy8gVGhlcmUncyByb29tIGZvciB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGFyay4g
VGhlcmUncyBubyBuZWVkIHRvIGNvcHkgb3V0IHRoZSByZW1haW5pbmdDYW5kaWRhdGVzLgogCi0g
ICAgcmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlcyk7CisgICAgcmVtYWluaW5n
Q2FuZGlkYXRlcy5hcHBlbmRWZWN0b3IoY2FuZGlkYXRlcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSog
bmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZm
ODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2ZTQ4OTQ3Li43Y2YxYTI3ZDNmYmE0OWM5MWMw
ZGU5OThlMzczZjE5ZTViMDFiZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9jbGFzc2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBw
ZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRWZWN0b3IobV9j
dXJyZW50QnVmZmVyKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQog
ICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24uY2xlYXIoKTsK
LSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAgICAgICBt
X2Fubm90YXRpb24uYXBwZW5kVmVjdG9yKG1fY3VycmVudEJ1ZmZlcik7CiAgICAgICAgIG1fY3Vy
cmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQppbmRleCBiMTk5OGM0MDdlNjNmMGFlMDgz
NzA0MTlhODA5ZDU3YzlmZDkxMjg2Li41YTg4NGM2YmM5MWRkMTY1ZjkxZDkyYjQ3ZjY1NjE3MTFk
NmMwYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tCkBAIC00NzUsNyArNDc1LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKIAotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2VzKTsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
LmFwcGVuZFZlY3RvcihwbGF0Zm9ybUxhbmd1YWdlcyk7CiAKICAgICByZXR1cm4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApp
bmRleCAwZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMxYTEyMjUwMmRlLi5jZDUwZWUyYTE2
MmU4ZmNmOGQwMDZiNTJjZWU3Y2JjNTBhODQ4N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAgVmVjdG9yPFN0cmluZz4gRmlsZUNo
b29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+
IGFjY2VwdFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2VydmVDYXBhY2l0eShhY2NlcHRNSU1F
VHlwZXMuc2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBhY2NlcHRU
eXBlcy5hcHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNj
ZXB0RmlsZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3RvcihhY2NlcHRN
SU1FVHlwZXMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZlY3RvcihhY2NlcHRGaWxlRXh0ZW5z
aW9ucyk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggNWQ3NzZhZGQ4
YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uNmExM2ZlNmI0NzZlZjQzZjIwNGM2M2U0
YTU1ODg4NTU5N2NjNzc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNoYXI+JiBjaHVuaywgYm9vbCBpbmNs
dWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCsrOwogICAgICAgICAgICAg
aWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iuc2l6ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAgICAgICAgICAgICAgIGNodW5rLmFw
cGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIGNodW5rLmFwcGVuZFZlY3Rv
cihtX3NlcGFyYXRvcik7CiAgICAgICAgICAgICAgICAgbV9zZXBhcmF0b3JJbmRleCA9IDA7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggYzUyMzg1ODBi
OTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZi4uNTNlNjc4MTdmMTQ3NmQ1NWQxNzViMmVm
NmY2MmI3NTU5ZjVmMGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKICAgICAgICAg
ZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBz
aXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMpOworICAgICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5n
aW5lU2l0ZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEyYTQ3ODljODlhNGNhZjA1
NDM2NzdjODM0YzQxZWQ0MmFjYTFjMjMuLmVjMDBkZDYxZDBmZjVlODVlYzJkMjY3NzRhOTZjZGU3
OWUzMGFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFRpbGVkQmFj
a2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCiAgICAgdW5zaWduZWQgc2l6ZSA9IGRpcnR5
VGlsZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBzaXplOyArK24pIHsK
ICAgICAgICAgVmVjdG9yPEludFJlY3Q+IHBhaW50ZWRSZWN0cyA9IGRpcnR5VGlsZXNbbl0tPnVw
ZGF0ZUJhY2tCdWZmZXIoKTsKLSAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5kKHBhaW50ZWRSZWN0
cyk7CisgICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3RvcihwYWludGVkUmVjdHMpOwogICAg
ICAgICBkaXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRvRnJvbnQoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCmluZGV4IGUwMjJmZTI3YjBjMzRjOGIwMTc3YzlkYWJjNzVhYjlmYjdjNmNmMjcu
LjIxMmU5MmVkNzhhMTZhNGFjODhiY2RiYWJjNDdiMGZiNGM0NzM3ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN1Ymxh
eWVyTGlzdChib29sIG1heExheWVyRGVwdGhSZWFjaGVkKQogICAgIFBsYXRmb3JtQ0FMYXllckxp
c3QmIGNoaWxkTGlzdEZvclN1YmxheWVycyA9IG1fc3RydWN0dXJhbExheWVyID8gc3RydWN0dXJh
bExheWVyQ2hpbGRyZW4gOiBwcmltYXJ5TGF5ZXJDaGlsZHJlbjsKIAogICAgIGlmIChjdXN0b21T
dWJsYXllcnMpCi0gICAgICAgIHByaW1hcnlMYXllckNoaWxkcmVuLmFwcGVuZCgqY3VzdG9tU3Vi
bGF5ZXJzKTsKKyAgICAgICAgcHJpbWFyeUxheWVyQ2hpbGRyZW4uYXBwZW5kVmVjdG9yKCpjdXN0
b21TdWJsYXllcnMpOwogCiAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CiAgICAgICAgIGlm
IChtX3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
S2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCmluZGV4IDY4NjRmNTNiNjYzYzM1ZjA2YmJjZTdjNmM2
ZjI3NDA5MTBlMDEwYTcuLmM2MjFmZDM0YzI0YjhjZGE1MWQyZmQxYTdhOWUxYmY2NDUyZDQzNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNs
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFu
c2xhdG9yLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgS2V5QmluZGluZ1RyYW5zbGF0b3I6
OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50LCBFdmVuCiAj
ZW5kaWYKIAogICAgIGlmICghbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGNvbW1hbmRMaXN0LmFwcGVuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAg
ICAgIGNvbW1hbmRMaXN0LmFwcGVuZFZlY3RvcihtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZhZjQ2ZjdmNGFjZjg2MmMyOTY5MTkz
MDU2Zi4uZTY0MGYwYzhjZWJhYWU2MjZmZTk4NDg4YTE0NjZlODFjM2I4YjE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwNiw3ICsxMDYs
NyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+IGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJ
bWFnZSgpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgCiAgICAgdHlwZXMuYXBwZW5k
KFN0cmluZyhOU1RJRkZQYm9hcmRUeXBlKSk7Ci0gICAgdHlwZXMuYXBwZW5kKHdyaXRhYmxlVHlw
ZXNGb3JVUkwoKSk7CisgICAgdHlwZXMuYXBwZW5kVmVjdG9yKHdyaXRhYmxlVHlwZXNGb3JVUkwo
KSk7CiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1JURkRQYm9hcmRUeXBlKSk7CiAgICAgcmV0
dXJuIHR5cGVzOwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0
cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKIHN0YXRpYyBWZWN0b3I8U3RyaW5n
PiB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwot
ICAgIHR5cGVzLmFwcGVuZChjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2UoKSk7CisgICAgdHlw
ZXMuYXBwZW5kVmVjdG9yKGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpKTsKICAgICByZXR1
cm4gdHlwZXM7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
U2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
YgogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPiA+IGNsaWVudERhdGE7CiAgICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
UmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOwotICAgIHR5cGVzLmFwcGVu
ZChjbGllbnRUeXBlcyk7CisgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNsaWVudFR5cGVzKTsKIAog
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXMo
dHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCkt
PmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDU2N2JkNjBi
OTk3NDkyNzE0M2JlMmJkYTIyMDM3OGNmNjk1N2U2OTMuLjE3NDRiYWMxMmNlM2M3OTY4Y2FkNzA2
Y2RjODcwNDg0YzQ5NTdjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBWZWN0b3I8Y2hh
cj4gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCkKICAgICAg
ICAgcmFuZG9tQnl0ZXMuYXBwZW5kKGFscGhhTnVtZXJpY0VuY29kaW5nTWFwW3JhbmRvbW5lc3Mg
JiAweDNGXSk7CiAgICAgfQogCi0gICAgYm91bmRhcnkuYXBwZW5kKHJhbmRvbUJ5dGVzKTsKKyAg
ICBib3VuZGFyeS5hcHBlbmRWZWN0b3IocmFuZG9tQnl0ZXMpOwogICAgIGJvdW5kYXJ5LmFwcGVu
ZCgwKTsgLy8gQWRkIGEgMCBhdCB0aGUgZW5kIHNvIHdlIGNhbiB1c2UgdGhpcyBhcyBhIEMtc3R5
bGUgc3RyaW5nLgogICAgIHJldHVybiBib3VuZGFyeTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNGQwZmZiZWMzZjEwZGUyODQ5NmY4NmQwMjEyY2Uz
MTA4MGM4NzRhYi4uMjIyMTcyNjg1ZmM5Nzc5NWQ4MDZmZjYzMGUwYWVhN2ZhMDdiMjk4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTQyOCw3ICs0Mjgs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9y
aWVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBtb3pQYXRoczsKICAgICBTdHJpbmcgbW96UGF0aChn
ZXRlbnYoIk1PWl9QTFVHSU5fUEFUSCIpKTsKICAgICBtb3pQYXRoLnNwbGl0KFVDaGFyKCc6Jyks
IC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBtb3pQYXRocyk7Ci0gICAgcGF0aHMuYXBw
ZW5kKG1velBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRWZWN0b3IobW96UGF0aHMpOwogI2VsaWYg
ZGVmaW5lZChYUF9NQUNPU1gpCiAgICAgU3RyaW5nIHVzZXJQbHVnaW5QYXRoID0gaG9tZURpcmVj
dG9yeVBhdGgoKTsKICAgICB1c2VyUGx1Z2luUGF0aC5hcHBlbmQoU3RyaW5nKCIvTGlicmFyeS9J
bnRlcm5ldCBQbHVnLUlucyIpKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAgICBWZWN0b3I8U3Ry
aW5nPiBxdFBhdGhzOwogICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExVR0lO
X1BBVEgiKS5jb25zdERhdGEoKSk7CiAgICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFs
bG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBxdFBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQocXRQ
YXRocyk7CisgICAgcGF0aHMuYXBwZW5kVmVjdG9yKHF0UGF0aHMpOwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gcGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCmluZGV4IDcwMmM0YTdhNzQ0ZmFmMTM5NmI1M2M0NWYwODcwMzliOGI2
ZTFjYTYuLjY2YzA2MjRlMWU5NDYzMmI5N2M3ZmFlNDZlNmZmZDEwMTZkYWRmNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBA
IC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVzb2x2ZXIsCiAgICAgICAgIC8vIElm
IHdlIGVuY291bnRlcmVkIGFueSBuZXN0ZWQgaXNvbGF0ZSBydW5zLCBqdXN0IG1vdmUgdGhlbQog
ICAgICAgICAvLyB0byB0aGUgdG9wIHJlc29sdmVyJ3MgbGlzdCBmb3IgbGF0ZXIgcHJvY2Vzc2lu
Zy4KICAgICAgICAgaWYgKCFpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgdG9wUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuYXBwZW5kKGlzb2xh
dGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkpOworICAgICAgICAgICAgdG9wUmVzb2x2ZXIuaXNv
bGF0ZWRSdW5zKCkuYXBwZW5kVmVjdG9yKGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkp
OwogICAgICAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5jbGVhcigpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhM2E0OTExYzNhOTUxMDY2MzliZDY0ZDU3NjZhNDIy
YTU0NTYyYzI3Li41MDliNTkxZTY4Nzg2YmI5NjAyZTJiZmJlYTQ5YTQ2MThiMThlNzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wQ29tcG9zaXRpbmdD
b250YWluZXIoKQogICAgIHsKLSAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2su
c2l6ZSgpIC0gMl0uYXBwZW5kKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CisgICAgICAgIG1fb3Zl
cmxhcFN0YWNrW21fb3ZlcmxhcFN0YWNrLnNpemUoKSAtIDJdLmFwcGVuZFZlY3RvcihtX292ZXJs
YXBTdGFjay5sYXN0KCkpOwogICAgICAgICBtX292ZXJsYXBTdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCmluZGV4IDkyMDU5NDA1OWU4YmQ0YTFlY2FhN2E1ZWNlYTZjZDVjMDJkMzIxMzQuLmJjYjYz
YmQxNDAyOWU0NzQwMTBiZDEyZWI3NTljM2MxNWI5MjQzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xMzIyLDcgKzEzMjIsNyBA
QCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1bW4odW5zaWduZWQgcG9zLCB1bnNp
Z25lZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlkW3Jvd10ucm93OwogICAgICAgICBy
Lmluc2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAgICAgICBpZiAocltwb3NdLmhhc0Nl
bGxzKCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2VsbHMuYXBwZW5kKHJbcG9zXS5jZWxs
cyk7CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFwcGVuZFZlY3RvcihyW3Bvc10uY2Vs
bHMpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gcltwb3NdLnByaW1hcnlD
ZWxsKCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbCk7CiAgICAgICAgICAgICBBU1NFUlQoY2Vs
bC0+Y29sU3BhbigpID49IChyW3Bvc10uaW5Db2xTcGFuID8gMXUgOiAwKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaE1hcC5oCmluZGV4IDkyOTQ1MjY5NjU5MWQ3YTcwYjRiMWE3N2ViMDQ2N2M3MmRkMzg0
NDIuLmQwODMxYzRhNTY1OTRmOGIyNDQ4MjBkMWViMmYxZjlhMmY4ODY1YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaE1hcC5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
UmVmUHRyPEdseXBoTWFwTm9kZT4gbm9kZSA9IGN1cnJlbnRMYXllci0+Z2V0KGNoYXJhY3Rlcik7
CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBnbHlwaHMuYXBwZW5kKG5vZGUtPmdseXBocyk7CisgICAgICAgICAgICBnbHlwaHMuYXBw
ZW5kVmVjdG9yKG5vZGUtPmdseXBocyk7CiAgICAgICAgICAgICBjdXJyZW50TGF5ZXIgPSAmbm9k
ZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0b3IuYWR2YW5jZShjbHVzdGVyTGVu
Z3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCmluZGV4IGJjNzY3ZDVj
MzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjgzOWJlOGQ4ZjA0MDNkN2ExMmM2OWZk
NGNkMTU3Y2QzMjc4ZDA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5v
ZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmgKQEAgLTUwLDcg
KzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLy8gTm9kZVNldCBpdHNl
bGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJlIHVuaXF1ZS4KICAgICAgICAg
ICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rlcy5hcHBlbmQobm9kZSk7IH0KICAg
ICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkgeyBtX25vZGVzLmFw
cGVuZChub2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBlbmQoY29uc3QgTm9kZVNldCYgbm9k
ZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9kZXMpOyB9CisgICAgICAgICAgICB2
b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kVmVjdG9y
KG5vZGVTZXQubV9ub2Rlcyk7IH0KIAogICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2V0J3Mg
Zmlyc3Qgbm9kZSBpbiBkb2N1bWVudCBvcmRlciwgb3IgMCBpZiB0aGUgc2V0IGlzIGVtcHR5Lgog
ICAgICAgICAgICAgTm9kZSogZmlyc3ROb2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmNwcAppbmRleCAyZTMwYmNiNzg3ZTI2MjE1NmQ2MGE5OWQzNzllOTM4YTE1MjJhNzg1Li42Mjc2
Mzc2MGUzNjEwOTc4ZGEyNGZlMjI5MjkwMzc0MDYxN2VhYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdp
c3RyeS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBj
b25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IGRhdGEtPml0ZW1zKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkJsb2IpCi0gICAgICAgICAg
ICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNb
aV0udXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmRW
ZWN0b3IobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKSk7CiAg
ICAgfQogCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgZGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5j
cHAKaW5kZXggOWQ0NmY3NDhiZjRjMjBmYzY5ZjYwYTVhNzU2ZGE2ZGEwMmFmNWNiNS4uNDI5ZTI2
NTRiYWNiMTRkMTYzZGI1ZWQ1NGRkZDRlMjNhZjA0MTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcApAQCAtNjIsNyArNjIs
NyBAQCBTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1bGFibGVMb2FkZXIoY29uc3QgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwg
Y291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEJsb2IpIHsK
ICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+ID4gYmxvYkVs
ZW1lbnRFeHRlbnNpb25zID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkuc2FuZGJveEV4
dGVuc2lvbnMoZWxlbWVudHNbaV0ubV91cmwpOwotICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKKyAgICAg
ICAgICAgICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kVmVjdG9yKGJs
b2JFbGVtZW50RXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCA3
YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2ViODQ5Li41ZGQwNzRhNWUyODkzNDM2
MjdhZTg2ZjNmNDdhNTc1YmI4ZTNhY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIENvbm5lY3Rp
b246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiogYWxsb3dl
ZENvbm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0QmFjay5pc0VtcHR5KCkpIHsKICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBtX21lc3NhZ2VzVG9E
aXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmQobWVzc2FnZXNUb1B1dEJhY2sp
OworICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5h
cHBlbmRWZWN0b3IobWVzc2FnZXNUb1B1dEJhY2spOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKaW5kZXggZDRjOWVjMmM1ZjJlNTJmZjBhY2E0NTliZTc0MjZjMzFhOWZhM2U0
Yy4uMzcyNjQwMWY2Y2NjNjNiNWQ5ZDNhYzZhNzE1YTE5MDgxMmRjYWIyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbklu
Zm9TdG9yZVVuaXguY3BwCkBAIC03Miw3ICs3Miw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbklu
Zm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKCkKICAgICBpZiAoIW1vemlsbGFQYXRocy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAgICAgICAgIG1vemlsbGFQ
YXRocy5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0
aHMpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhdGhzKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZFZlY3RvcihwYXRocyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OTM3YzM2Y2RiZThhODUz
ODM5YzI3M2ZmODdjNWI2ZTJiODliMDgyLi5kODExMmU4ZGE4YTE0YTYzNGM1NWExMDg2MTgxZDc5
ZGM3ODc0MTc0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92ZXJs
b2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZlY3RvciBpbnN0ZWFkLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06Cisg
ICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
OgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKToKKwogMjAxMy0w
NS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjE0ODMxMik6IENyYXNoIHdoZW4gY2FsbGluZyBXS1BhZ2VDbG9zZShwYWdlKSBmb2xsb3dlZCBi
eSBXS1BhZ2VUZXJtaW5hdGUocGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggMzUzZWE4ZDY3YzkzZDk2OTYz
ZDFhYWI0ODVhMmRhZWE0ZGZlNjUwNy4uNjUxNTc1ZjI0M2ZlOWYzNGY3MTQ2MjgyYjU0NWI2MzQ5
YzI1NjMwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgSlNTdHJpbmdS
ZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0
cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhd
KTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1
ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBlbmRWZWN0b3IodmFsdWVC
dWZmZXIpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQppbmRleCA4YTk1NTFjODVmYThhODdiZGU0MDVhMzk3YWY1ZTgwMjBlOGI5
OTE2Li44MDUxOTk5ZmQ0MjdjZTE5NmE4NjliZmMzMmFiNDdhMDRlMmIyODAxIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE3Myw3ICsxNzMsNyBAQCBz
dGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0cmluZyog
YXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVlQnVmZmVy
KFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1ZmZlci5k
YXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZlci5hcHBl
bmRWZWN0b3IodmFsdWVCdWZmZXIpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200593</attachid>
            <date>2013-05-05 10:42:33 -0700</date>
            <delta_ts>2013-05-05 10:52:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130505104143.patch</filename>
            <type>text/plain</type>
            <size>48856</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5MDMxZTA3ZGI5NTQ1YTYyMWFlMTJh
MmI1OTkzZjM3MjI2NjdiMGMuLjJlMjA0NGQ0OGNmYTZhMzgxN2FhMjVkOWJmNWEzNWFjNDcwYWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2Vz
IGEgVmVjdG9yIGNvbmZsaWN0cyB3aXRoIHJ2YWx1ZXMgaW4gQysrMTEsIHNvIHJlbW92ZSBpdCBh
bmQKKyAgICAgICAgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoIGNhbGxzIHRvIGFwcGVuZFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFZlY3Rvcik6CisKIDIwMTMt
MDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDk1NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlNWNjNGU3MGFhZjNk
MWNjMTc1NThiODJlOTIxYjcyOTAxNDFmYi4uMjRiY2ZiM2E3ZjVmYzQ0NDdlZWY5NzUyNmE4YWNj
MmI4Njg0YmFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTA1LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRoZSBW
ZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YVZlcnNpb25L
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFz
ZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlz
dEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5OjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNz
UGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAq
IGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRU
b2tlbjo6YWRkTmV3Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFkZE5l
d0Fubm90YXRpb24pOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJl
ZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKToKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICogeG1sL1hQ
YXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmFwcGVuZCk6
CisKIDIwMTMtMDUtMDQgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAg
IEFuaW1hdGlvbnMgYW5kIFRyYW5zaXRpb25zIHNob3VsZCBub3Qgc3RhcnQgd2hlbiBnbG9iYWxs
eSBzdXNwZW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYWUxNzgwYjRjOTllNzM2Yjg1Yzg5YTYxNzZmODAy
YzRiNzE5YjRkLi5kM2Q5ZjZjNjg0OWJmNjBmMTBlYmFmZDFhMmQxMjI2ZTE2YmUzMjA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZlY3RvciBpbnN0ZWFkLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVsYWJsZUxvYWRlcik6CisgICAgICAg
ICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKToKKwogMjAxMy0w
NS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCAqIHBsYWNl
bWVudCBpbiBhIGZldyBmdW5jdGlvbnMgYXMgbm90aWNlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IDY4OTYyNTU5Zjk1N2NiNmI1MDYzMjU0YzA4YmRhNzFjYzdmNTEzN2MuLjdmYmNjMDVjNDUy
ZDNmYTljZjEzZDkxNjY4ODY1MjkzYTlkZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02MjAsNyArNjIwLDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBw
ZW5kKGNvbnN0IFUqLCBzaXplX3QpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IGFwcGVuZChjb25zdCBVJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgdW5j
aGVja2VkQXBwZW5kKGNvbnN0IFUmIHZhbCk7Ci0gICAgICAgIHRlbXBsYXRlPHNpemVfdCBvdGhl
ckNhcGFjaXR5PiB2b2lkIGFwcGVuZChjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mKTsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQg
YXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYpOwogICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHRyeUFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKIApA
QCAtMTA2MiwxNSArMTA2MSw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICArK21fc2l6ZTsK
ICAgICB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBhcHBlbmQs
IGEgYmV0dGVyIG5hbWUgd291bGQgYmUgYXBwZW5kRWxlbWVudHMuCi0gICAgLy8gSXQgY291bGQg
YWxzbyBiZSBlbGltaW5hdGVkIGVudGlyZWx5LCBhbmQgY2FsbCBzaXRlcyBjb3VsZCBqdXN0IHVz
ZQotICAgIC8vIGFwcGVuZFJhbmdlKHZhbC5iZWdpbigpLCB2YWwuZW5kKCkpLgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyPiB0ZW1wbGF0ZTxzaXplX3Qgb3RoZXJDYXBhY2l0eT4KLSAgICBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj46OmFwcGVuZChjb25zdCBW
ZWN0b3I8VCwgb3RoZXJDYXBhY2l0eT4mIHZhbCkKLSAgICB7Ci0gICAgICAgIGFwcGVuZCh2YWwu
YmVnaW4oKSwgdmFsLnNpemUoKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRl
PHR5cGVuYW1lIFUsIHNpemVfdCBvdGhlckNhcGFjaXR5PgogICAgIGlubGluZSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPjo6YXBwZW5kVmVjdG9yKGNvbnN0
IFZlY3RvcjxVLCBvdGhlckNhcGFjaXR5PiYgdmFsKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdkNGM4
YWUxZjEwOTg5ODIwYzY4YjU2ZDVlZDg4ZWZiNDU4Y2NhZDIuLjQ4ZTBkMzE2MmM2MzEyOWM1MjYx
YzU5YTUyMDY1MTM3OTIwODJhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA3LDcgKzkwNyw3IEBAIGJvb2wg
SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlZGF0
YUtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGtleSk7CiAKICAgICBWZWN0b3I8Y2hhcj4gdjsKLSAgICB2LmFwcGVuZChlbmNvZGVWYXJJ
bnQodmVyc2lvbikpOworICAgIHYuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludCh2ZXJzaW9uKSk7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIHYuYXBwZW5kKHZhbHVlLT5kYXRhKCksIHZhbHVlLT5zaXplKCkpOwpAQCAt
MTE5MCw4ICsxMTkwLDggQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJl
Y29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2EKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gaW5kZXhEYXRhS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZW5jb2RlSURCS2V5KGtleSksIHJlY29yZElkZW50aWZp
ZXIucHJpbWFyeUtleSgpKTsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIGRhdGEuYXBw
ZW5kKGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZlcnNpb24oKSkpOwotICAgIGRhdGEu
YXBwZW5kKHJlY29yZElkZW50aWZpZXIucHJpbWFyeUtleSgpKTsKKyAgICBkYXRhLmFwcGVuZFZl
Y3RvcihlbmNvZGVWYXJJbnQocmVjb3JkSWRlbnRpZmllci52ZXJzaW9uKCkpKTsKKyAgICBkYXRh
LmFwcGVuZFZlY3RvcihyZWNvcmRJZGVudGlmaWVyLnByaW1hcnlLZXkoKSk7CiAKICAgICBsZXZl
bERCVHJhbnNhY3Rpb24tPnB1dChpbmRleERhdGFLZXksIGRhdGEpOwogICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmNwcAppbmRleCA3MjQwNTUyYjE2ZDNjMzgyZjVkMGNkMDQzMTFhMjM2YmJiOTljYjFj
Li44OGUwZTBiMGU4MTAwMDgyMWYwMzRiZjliMGQyZjU2MTNmZjMzOGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcApA
QCAtMzI2LDcgKzMyNiw3IEBAIFN0cmluZyBkZWNvZGVTdHJpbmcoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGNv
bnN0IFN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gZW5jb2RlVmFySW50KHMu
bGVuZ3RoKCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nKHMpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZyhzKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNDE5
LDMwICs0MTksMzAgQEAgdm9pZCBlbmNvZGVJREJLZXkoY29uc3QgSURCS2V5JiBrZXksIFZlY3Rv
cjxjaGFyLCBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGludG8KICAgICBjYXNlIElEQktleTo6
SW52YWxpZFR5cGU6CiAgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bGxU
eXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElEQktleU51
bGxUeXBlQnl0ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlw
ZTogewotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleUFycmF5VHlwZUJ5dGUp
KTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVC
eXRlKSk7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZVZhckludChsZW5ndGgpKTsKKyAgICAgICAgaW50by5hcHBl
bmRWZWN0b3IoZW5jb2RlVmFySW50KGxlbmd0aCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICAgZW5jb2RlSURCS2V5KCprZXkuYXJyYXko
KVtpXSwgaW50byk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNp
emUoKSA+IHByZXZpb3VzU2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
REJLZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5
U3RyaW5nVHlwZUJ5dGUpKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExl
bmd0aChrZXkuc3RyaW5nKCkpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0
ZShJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNv
ZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByZXZpb3VzU2l6ZSwgaW50by5zaXplKCkgPiBwcmV2aW91c1NpemUpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVCeXRlKElEQktleURhdGVUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KElEQktleURhdGVUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVE
b3VibGUoa2V5LmRhdGUoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElEQktleTo6TnVtYmVyVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJ
REJLZXlOdW1iZXJUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUo
a2V5Lm51bWJlcigpKSk7CisgICAgICAgIGludG8uYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoSURC
S2V5TnVtYmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgaW50by5hcHBlbmRWZWN0b3IoZW5jb2RlRG91
YmxlKGtleS5udW1iZXIoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwg
aW50by5zaXplKCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02NjgsMTQgKzY2OCwxNCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5UGF0aDo6U3RyaW5nVHlwZToKLSAgICAgICAg
cmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleVBhdGguc3Ry
aW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6
IHsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5ID0ga2V5UGF0aC5hcnJheSgp
OwogICAgICAgICBzaXplX3QgY291bnQgPSBhcnJheS5zaXplKCk7Ci0gICAgICAgIHJldC5hcHBl
bmQoZW5jb2RlVmFySW50KGNvdW50KSk7CisgICAgICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KGNvdW50KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChhcnJheVtp
XSkpOworICAgICAgICAgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVuZ3Ro
KGFycmF5W2ldKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0xMDg4LDkgKzEw
ODgsOSBAQCBWZWN0b3I8Y2hhcj4gS2V5UHJlZml4OjplbmNvZGVJbnRlcm5hbChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZAogICAgIENPTVBJTEVfQVNTRVJUKGtNYXhE
YXRhYmFzZUlkU2l6ZUJpdHMgKyBrTWF4T2JqZWN0U3RvcmVJZFNpemVCaXRzICsga01heEluZGV4
SWRTaXplQml0cyA9PSBzaXplb2YoZmlyc3RCeXRlKSAqIDgsIENBTlRfRU5DT0RFX0lEUyk7CiAg
ICAgVmVjdG9yPGNoYXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiByZXQ7CiAgICAgcmV0LmFw
cGVuZChmaXJzdEJ5dGUpOwotICAgIHJldC5hcHBlbmQoZGF0YWJhc2VJZFN0cmluZyk7Ci0gICAg
cmV0LmFwcGVuZChvYmplY3RTdG9yZUlkU3RyaW5nKTsKLSAgICByZXQuYXBwZW5kKGluZGV4SWRT
dHJpbmcpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZGF0YWJhc2VJZFN0cmluZyk7CisgICAgcmV0
LmFwcGVuZFZlY3RvcihvYmplY3RTdG9yZUlkU3RyaW5nKTsKKyAgICByZXQuYXBwZW5kVmVjdG9y
KGluZGV4SWRTdHJpbmcpOwogCiAgICAgQVNTRVJUKHJldC5zaXplKCkgPD0gRGVmYXVsdElubGlu
ZUJ1ZmZlclNpemUpOwogICAgIHJldHVybiByZXQ7CkBAIC0xMTM1LDIxICsxMTM1LDIxIEBAIEtl
eVByZWZpeDo6VHlwZSBLZXlQcmVmaXg6OnR5cGUoKSBjb25zdAogVmVjdG9yPGNoYXI+IFNjaGVt
YVZlcnNpb25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZp
eDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1hVmVyc2lv
blR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKFNjaGVtYVZlcnNp
b25UeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZlY3RvcjxjaGFyPiBNYXhEYXRh
YmFzZUlkS2V5OjplbmNvZGUoKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1heERhdGFiYXNlSWRU
eXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlk
VHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCiBWZWN0b3I8Y2hhcj4gRGF0YVZlcnNp
b25LZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5j
b2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YVZlcnNpb25UeXBlQnl0
ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShEYXRhVmVyc2lvblR5cGVCeXRl
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTE4MCw4ICsxMTgwLDggQEAgY29uc3QgY2hh
ciogRGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBsaW1pdCwgRGEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZUZyZWVMaXN0S2V5OjplbmNvZGUo
aW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBLZXlQcmVmaXg6
OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxp
c3RUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsK
KyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRl
KSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQoZGF0YWJhc2VJZCkpOwogICAg
IHJldHVybiByZXQ7CiB9CiAKQEAgLTEyMjcsOSArMTIyNyw5IEBAIGNvbnN0IGNoYXIqIERhdGFi
YXNlTmFtZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwg
RGF0YWJhCiBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFZlY3RvcjxjaGFy
PiByZXQgPSBLZXlQcmVmaXg6OmVuY29kZUVtcHR5KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVC
eXRlKERhdGFiYXNlTmFtZVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdX
aXRoTGVuZ3RoKG9yaWdpbikpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0
aChkYXRhYmFzZU5hbWUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoRGF0YWJh
c2VOYW1lVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgob3JpZ2luKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmdXaXRoTGVu
Z3RoKGRhdGFiYXNlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyNTUsNyArMTI1
NSw3IEBAIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBk
YXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUgbWV0YURhCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChk
YXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICByZXQuYXBwZW5kVmVj
dG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTI5NCw5ICsxMjk0LDkgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVm
aXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5j
b2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBl
Qnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZl
Y3RvcihlbmNvZGVCeXRlKE9iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5h
cHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5k
VmVjdG9yKGVuY29kZUJ5dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTM2OSwxMCArMTM2OSwxMCBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhNZXRhRGF0YVR5cGVC
eXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUobWV0YURhdGFUeXBlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKElu
ZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50
KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludChpbmRl
eElkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOwog
ICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzIsOCArMTQzMiw4IEBAIFZlY3RvcjxjaGFyPiBP
YmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0CiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0
b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZh
ckludChvYmplY3RTdG9yZUlkKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKE9i
amVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNDg5LDkg
KzE0ODksOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUo
SW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJ
bnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KGlu
ZGV4SWQpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTQ1LDggKzE1NDUsOCBAQCBWZWN0
b3I8Y2hhcj4gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5k
KGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7CiAgICAg
cmV0dXJuIHJldDsKIH0KIApAQCAtMTU4OCw5ICsxNTg4LDkgQEAgVmVjdG9yPGNoYXI+IEluZGV4
TmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY28KIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKElu
ZGV4TmFtZXNLZXlUeXBlQnl0ZSkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVj
dFN0b3JlSWQpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhO
YW1lKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKEluZGV4TmFtZXNLZXlUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQp
KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhOYW1l
KSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTYyMCw3ICsxNjIwLDcgQEAgVmVjdG9yPGNo
YXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KEtleVByZWZpeDo6Y3JlYXRl
V2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhO
dW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJl
dC5hcHBlbmQoZW5jb2RlZFVzZXJLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZFVz
ZXJLZXkpOwogCiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTE2NjIsNyArMTY2Miw3IEBAIFZlY3Rv
cjxjaGFyPiBFeGlzdHNFbnRyeUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChLZXlQcmVmaXg6OmNy
ZWF0ZVdpdGhTcGVjaWFsSW5kZXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgU3BlY2lhbElu
ZGV4TnVtYmVyKSk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZWRLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZEtl
eSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTczMyw5ICsxNzMzLDkgQEAgVmVjdG9yPGNo
YXI+IEluZGV4RGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIGluZGV4SWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2Rl
KCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7Ci0gICAgcmV0LmFwcGVuZChlbmNv
ZGVWYXJJbnQoc2VxdWVuY2VOdW1iZXIpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRQcmltYXJ5
S2V5KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZWRVc2VyS2V5KTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOworICAgIHJldC5hcHBlbmRW
ZWN0b3IoZW5jb2RlZFByaW1hcnlLZXkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwNDcy
NjZlYjc5NGIwZThlZDBiZjUxNmUzYjc1MmY2YTc4MmNiYzYyLi40MjQzYTEzNWJiOGNlYWEzMTdk
YTA3YTY1MzMzMGQxYjY0MTMxOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OmNsZWFyKCkKICAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KICAg
ICBkbyB7CiAgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Ci0gICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwogICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKICAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKIApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpz
Y2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVN
YXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7Ci0gICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAg
bV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOwog
ICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKIAogICAgICAgICBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IDg2NjRhYzc0ZmQ4YWRi
ZGRmMWUwMjFkODM2NmYxODVjMDEzY2VlYTMuLjk4YWQzNGQ4ODFiYmM0NTk0ZTBmYWM2ZGE4MTI0
NWUzZTRjMTViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNo
aWxkLCBIYXNoU2UKICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmRWZWN0
b3Iocm93LT5jaGlsZHJlbigpKTsKIAogICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAppbmRleCA3MWFmYWI1ZDg3ZDc5NjBiNjAyNWU0NzVmNGU0NmFjNTk3
OTYwYjYxLi41NmUyZTk0OTU3MWFlNDYxM2IxMzRkM2YzZGZmZmEyNTk1NzEyYjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVu
KCkKICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kVmVj
dG9yKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGFwcGVuZGVkUm93cy5h
ZGQocm93KTsKICAgICAgICAgfQpAQCAtNDY2LDExICs0NjYsOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6Y2VsbHMoQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJgogICAgIAogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICAKLSAg
ICBpbnQgbnVtUm93cyA9IG1fcm93cy5zaXplKCk7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgbnVtUm93czsgKytyb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJvd0NoaWxkcmVuID0gbV9yb3dzW3Jvd10tPmNoaWxkcmVuKCk7Ci0gICAgICAgIGNlbGxzLmFw
cGVuZChyb3dDaGlsZHJlbik7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8
IG1fcm93cy5zaXplKCk7ICsrcm93KQorICAgICAgICBjZWxscy5hcHBlbmRWZWN0b3IobV9yb3dz
W3Jvd10tPmNoaWxkcmVuKCkpOwogfQogICAgIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojpjb2x1bW5Db3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkMDNiMDc0
M2ZiMDIwNmVjODY0YWRkYmJkYzllNzRiNzNiNTEwNmUwLi45M2E4ZWM4ZjIyYzNkNzY4YzE5OTg5
MjdkNmNkYjFmNTVjY2U0OTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZl
YXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTY1
LDggKzY1LDggQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0
JiBvdGhlcikKICAgICBlbmQgPSBvdGhlci5hdHRyc0luUnVsZXMuZW5kKCk7CiAgICAgZm9yIChI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvdGhlci5hdHRy
c0luUnVsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBhdHRyc0luUnVsZXMu
YWRkKCppdCk7Ci0gICAgc2libGluZ1J1bGVzLmFwcGVuZChvdGhlci5zaWJsaW5nUnVsZXMpOwot
ICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kKG90aGVyLnVuY29tbW9uQXR0cmlidXRl
UnVsZXMpOworICAgIHNpYmxpbmdSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIuc2libGluZ1J1bGVz
KTsKKyAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1v
bkF0dHJpYnV0ZVJ1bGVzKTsKICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5l
UnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNCZWZvcmVBZnRlclJ1
bGVzID0gdXNlc0JlZm9yZUFmdGVyUnVsZXMgfHwgb3RoZXIudXNlc0JlZm9yZUFmdGVyUnVsZXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjQ2MzBmNTM0NTc0NGIy
NWY3MTdhZjg0NjhhNjgzYmY0ZmQwZGNlMy4uZDMyYTBhODEyMWRlNDFlZmM5ZWNmMzRiY2U5NDZl
NmY1MzMyNDUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTgyNyw3
ICsxODI3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRUb01hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdAogCiAgICAgQVNTRVJUKGhhc2gpOwog
ICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtIGNhY2hlSXRlbTsKLSAgICBjYWNoZUl0ZW0u
bWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKTsK
KyAgICBjYWNoZUl0ZW0ubWF0Y2hlZFByb3BlcnRpZXMuYXBwZW5kVmVjdG9yKG1hdGNoUmVzdWx0
Lm1hdGNoZWRQcm9wZXJ0aWVzKTsKICAgICBjYWNoZUl0ZW0ucmFuZ2VzID0gbWF0Y2hSZXN1bHQu
cmFuZ2VzOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBjYWNoZSB0aGUgb3JpZ2luYWwgUmVu
ZGVyU3R5bGUgaW5zdGFuY2UuIEl0IG1heSBiZSBmdXJ0aGVyIG1vZGlmaWVkLgogICAgIC8vIFRo
ZSBSZW5kZXJTdHlsZSBpbiB0aGUgY2FjaGUgaXMgcmVhbGx5IGp1c3QgYSBob2xkZXIgZm9yIHRo
ZSBzdWJzdHJ1Y3R1cmVzIGFuZCBuZXZlciB1c2VkIGFzLWlzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4IGRiZWYwYzlj
MTk0NzBjMDFjOTIyNGFiMDE4MGNlZmNiOTNhYWE2MTcuLmQzMTRkOTBiOTJmNDRhNGEzNGI0OTYz
ZGY0NDcwYzAwMWY1YTYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bAogICAgIEhUTUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFt
ZSA9IGRvY3VtZW50LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpOwogICAgIGlmICghc2VhbWxlc3NQ
YXJlbnRJRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBzaGVldHMuYXBwZW5kKHNlYW1sZXNz
UGFyZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBzaGVldHMuYXBwZW5kVmVjdG9yKHNlYW1sZXNzUGFy
ZW50SUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cygpKTsKIH0KIAogYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCkBAIC00NjIs
OCArNDYyLDggQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3Rp
dmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKICAgICBjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRz
LmFwcGVuZChpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxl
U2hlZXRzLmFwcGVuZChkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwor
ICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3Rvcihkb2N1bWVudEF1dGhvclN0eWxl
U2hlZXRzKCkpOwogICAgIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1Bh
cmVudHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIG1fZG9jdW1lbnQpOwogICAgIGZpbHRlckVuYWJs
ZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA2ZDhjZDYyZDcxMjlkODIyZTY5MmE1OTNkNTM0NzI3
YmE4ZDcxNzllLi4wZmFlMzFjZTU1OGJmMTAyZjdlZDliMDNkZTYwZGVkY2FkNDRjODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRl
ckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMoZWxlbWVudFF1YWRzKTsK
ICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0UXVhZHNGb3JTY3Jv
bGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKGVsZW1lbnRRdWFkcywgcmVuZGVyQm94TW9k
ZWxPYmplY3QpOwogCi0gICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kKGVsZW1lbnRRdWFkcyk7
CisgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKGVsZW1lbnRRdWFkcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRvVGV4dChub2RlKS0+cmVuZGVy
ZXIoKSkgewpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgdm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4
dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKICAgICAgICAgICAgICAgICBy
ZW5kZXJUZXh0LT5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodGV4dFF1YWRzLCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBtX293bmVyRG9jdW1lbnQtPmFkanVzdEZsb2F0
UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHRleHRRdWFkcywgcmVu
ZGVyVGV4dCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsKKyAg
ICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3IodGV4dFF1YWRzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCAwOWNjMjg3NDQxODEwMzkwOTgxMTgzNDM5Mjg0NTM0YTMyNWQy
YjYzLi4xYWM0Zjc1ZWY5MDY2YjMzMGVkYTIxMGE0OWNhMTQyMDQ3ZWYzNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC02ODEsNyArNjgx
LDcgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCogY2xpZW50
LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICAgICAgICAgaWYgKHJlc3VsdHMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmVzdWx0cy5zd2FwKHNwZWxsaW5nUmVzdWx0KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoc3BlbGxpbmdSZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmRWZWN0b3Ioc3BlbGxpbmdSZXN1bHQpOwogICAgIH0KICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA4YThhZjA1YTk3
ZmI1OWJmMzBmOWE1ODQ3YjQ1YjNjNGZkMzBiNzAxLi5lMjk1ZTUxM2Y2ZjliYWRlMGM2ZWZhZmIw
NTc0NmQzYmIxNzMzNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApA
QCAtNTEwLDggKzUxMCw4IEBAIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpnZXRSZWZl
cmVuY2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0CiAgICAgVmVjdG9yPFN0
cmluZz4gdG9SZXR1cm47CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXAgbWFwOwogICAgIGZvcm1TdGF0
ZXNGcm9tU3RhdGVWZWN0b3Ioc3RhdGVWZWN0b3IsIG1hcCk7Ci0gICAgZm9yIChTYXZlZEZvcm1T
dGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgp
OyArK2l0KQotICAgICAgICB0b1JldHVybi5hcHBlbmQoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2Vk
RmlsZVBhdGhzKCkpOworICAgIGZvciAoU2F2ZWRGb3JtU3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbWFwLmJlZ2luKCksIGVuZCA9IG1hcC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICB0b1JldHVybi5hcHBlbmRWZWN0b3IoaXQtPnZhbHVlLT5nZXRSZWZlcmVuY2VkRmlsZVBh
dGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMTli
Yzk1MGNhZDNiZGRhODkyYTRkZGQ3MDUxMTgwOTNmYThlMDc4Yy4uMGIzODlhZGFiYzE3OWVmOGE2
NDY2NzNjYzBkMTI5NjhmN2Y0YTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDMsNyArNTQzLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIGRhc2gpCiAgICAgLy8gU3BlYyByZXF1aXJlcyB0aGUgY29uY2F0ZW5hdGlvbiBv
ZiB0d28gY29waWVzIHRoZSBkYXNoIGxpc3Qgd2hlbiB0aGUKICAgICAvLyBudW1iZXIgb2YgZWxl
bWVudHMgaXMgb2RkCiAgICAgaWYgKGRhc2guc2l6ZSgpICUgMikKLSAgICAgICAgbW9kaWZpYWJs
ZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmQoZGFzaCk7CisgICAgICAgIG1vZGlmaWFibGVTdGF0
ZSgpLm1fbGluZURhc2guYXBwZW5kVmVjdG9yKGRhc2gpOwogCiAgICAgYXBwbHlMaW5lRGFzaCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcAppbmRleCBmNmY5YTI4YjE0YWE3MTc0MjJiZWQxMzg4MzIyOWUx
YTI2MGUzMDAwLi40NmRjNWJiOGIyOTM2MGEwMjFhMjU5MDY2NTFmYjc0NDAyNDNiZDg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdDo6dHJ5VG9FbnN1cmVOb2Foc0Fya0NvbmRpdGlvblF1aWNrbHkoSFRNTFN0YWNrSXRl
CiAgICAgaWYgKGNhbmRpZGF0ZXMuc2l6ZSgpIDwga05vYWhzQXJrQ2FwYWNpdHkpCiAgICAgICAg
IHJldHVybjsgLy8gVGhlcmUncyByb29tIGZvciB0aGUgbmV3IGVsZW1lbnQgaW4gdGhlIGFyay4g
VGhlcmUncyBubyBuZWVkIHRvIGNvcHkgb3V0IHRoZSByZW1haW5pbmdDYW5kaWRhdGVzLgogCi0g
ICAgcmVtYWluaW5nQ2FuZGlkYXRlcy5hcHBlbmQoY2FuZGlkYXRlcyk7CisgICAgcmVtYWluaW5n
Q2FuZGlkYXRlcy5hcHBlbmRWZWN0b3IoY2FuZGlkYXRlcyk7CiB9CiAKIHZvaWQgSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdDo6ZW5zdXJlTm9haHNBcmtDb25kaXRpb24oSFRNTFN0YWNrSXRlbSog
bmV3SXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAppbmRleCA3ZjZm
ODZmMzM5N2IxMDBmNTM5Y2NiYTViZWYxOTMxYzA2ZTQ4OTQ3Li43Y2YxYTI3ZDNmYmE0OWM5MWMw
ZGU5OThlMzczZjE5ZTViMDFiZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRU
b2tlbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGU6OlN0YXJ0VGFnKTsKICAgICAgICAgaWYgKCFtX2NsYXNzZXMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9jbGFzc2VzLmFwcGVuZCgnICcpOwotICAgICAgICBtX2NsYXNzZXMuYXBw
ZW5kKG1fY3VycmVudEJ1ZmZlcik7CisgICAgICAgIG1fY2xhc3Nlcy5hcHBlbmRWZWN0b3IobV9j
dXJyZW50QnVmZmVyKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQog
ICAgIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBtX2Fubm90YXRpb24uY2xlYXIoKTsK
LSAgICAgICAgbV9hbm5vdGF0aW9uLmFwcGVuZChtX2N1cnJlbnRCdWZmZXIpOworICAgICAgICBt
X2Fubm90YXRpb24uYXBwZW5kVmVjdG9yKG1fY3VycmVudEJ1ZmZlcik7CiAgICAgICAgIG1fY3Vy
cmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQppbmRleCBiMTk5OGM0MDdlNjNmMGFlMDgz
NzA0MTlhODA5ZDU3YzlmZDkxMjg2Li41YTg4NGM2YmM5MWRkMTY1ZjkxZDkyYjQ3ZjY1NjE3MTFk
NmMwYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLm1tCkBAIC00NzUsNyArNDc1LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKIAotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2VzKTsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
LmFwcGVuZFZlY3RvcihwbGF0Zm9ybUxhbmd1YWdlcyk7CiAKICAgICByZXR1cm4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VFbnRyeUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5
TGlzdC5jcHAKaW5kZXggMGE4Y2M2YWI5OTlmM2NkMWU2YjFjZmFlMGFlYjIzY2Q4YWUzNjk0Ny4u
ZjM5OWUwNzY0NTY1MDk5MDc3N2JlYThlMTlkMWU5MmFmN2U3NmJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZUVudHJ5TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRy
eT4gZW50cnkpCiAKIHZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OmFwcGVuZEFsbChjb25zdCBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4mIGVudHJpZXMpCiB7Ci0gICAgbV9lbnRy
aWVzLmFwcGVuZChlbnRyaWVzKTsKKyAgICBtX2VudHJpZXMuYXBwZW5kVmVjdG9yKGVudHJpZXMp
OwogfQogCiB2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0Ojpzb3J0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCAxNmY1MjUyOWY5NjA4N2Zm
MTg5OGI3MjM3NGQ3YjRjZGI3YTRjM2M2Li41NzVjYmUwYjNhNzBjMTVlYzVkYjEzNGNiZDE0NjAw
NDA1Mzg1ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNl
clRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1p
bmcuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFu
Y2VFbnRyeT4gPiBjb252ZXJ0VG9FbnRyeVNlcXVlbmNlKGNvbnN0IFBlcmZvcm1hbmMKICAgICBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gZW50cmllczsKIAogICAgIGZvciAoUGVy
Zm9ybWFuY2VFbnRyeU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwZXJmb3JtYW5jZUVudHJ5TWFw
LmJlZ2luKCk7IGl0ICE9IHBlcmZvcm1hbmNlRW50cnlNYXAuZW5kKCk7ICsraXQpCi0gICAgICAg
IGVudHJpZXMuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kVmVjdG9y
KGl0LT52YWx1ZSk7CiAKICAgICByZXR1cm4gZW50cmllczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCAwZjQ1N2QxMzRlOTQ0ZDVmOTk3MTAxNjEzNmNkNTMx
YTEyMjUwMmRlLi5jZDUwZWUyYTE2MmU4ZmNmOGQwMDZiNTJjZWU3Y2JjNTBhODQ4N2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBAIC0xMDMsOCArMTAzLDggQEAg
VmVjdG9yPFN0cmluZz4gRmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMoKSBjb25zdAog
ewogICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdFR5cGVzOwogICAgIGFjY2VwdFR5cGVzLnJlc2Vy
dmVDYXBhY2l0eShhY2NlcHRNSU1FVHlwZXMuc2l6ZSgpICsgYWNjZXB0RmlsZUV4dGVuc2lvbnMu
c2l6ZSgpKTsKLSAgICBhY2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0TUlNRVR5cGVzKTsKLSAgICBh
Y2NlcHRUeXBlcy5hcHBlbmQoYWNjZXB0RmlsZUV4dGVuc2lvbnMpOworICAgIGFjY2VwdFR5cGVz
LmFwcGVuZFZlY3RvcihhY2NlcHRNSU1FVHlwZXMpOworICAgIGFjY2VwdFR5cGVzLmFwcGVuZFZl
Y3RvcihhY2NlcHRGaWxlRXh0ZW5zaW9ucyk7CiAgICAgcmV0dXJuIGFjY2VwdFR5cGVzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKaW5kZXggNWQ3NzZhZGQ4YTFjM2MxODc1M2I2ODlkNjY0OTYwZDVlYjFhOTViYi4uNmEx
M2ZlNmI0NzZlZjQzZjIwNGM2M2U0YTU1ODg4NTU5N2NjNzc1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPGNo
YXI+JiBjaHVuaywgYm9vbCBpbmNsdWRlU2VwYXJhdAogICAgICAgICAgICAgbV9zZXBhcmF0b3JJ
bmRleCsrOwogICAgICAgICAgICAgaWYgKG1fc2VwYXJhdG9ySW5kZXggPT0gbV9zZXBhcmF0b3Iu
c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVTZXBhcmF0b3IpCi0gICAgICAg
ICAgICAgICAgICAgIGNodW5rLmFwcGVuZChtX3NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAg
ICAgIGNodW5rLmFwcGVuZFZlY3RvcihtX3NlcGFyYXRvcik7CiAgICAgICAgICAgICAgICAgbV9z
ZXBhcmF0b3JJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggYzUyMzg1ODBiOTE5ZmRiYTk1ZDU1MjRjZWFlYjViMTc0NmI3ZDhjZi4uNTNl
Njc4MTdmMTQ3NmQ1NWQxNzViMmVmNmY2MmI3NTU5ZjVmMGM5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTAyLDcgKzkwMiw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+
JiBzaXRlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBl
bmdpbmVTaXRlczsKICAgICAgICAgZW5naW5lc1tpXS0+Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5n
aW5lU2l0ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmQoZW5naW5lU2l0ZXMpOworICAgICAgICBz
aXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDEyYTQ3ODljODlhNGNhZjA1NDM2NzdjODM0YzQxZWQ0MmFjYTFjMjMuLmVjMDBkZDYxZDBm
ZjVlODVlYzJkMjY3NzRhOTZjZGU3OWUzMGFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCiAgICAg
dW5zaWduZWQgc2l6ZSA9IGRpcnR5VGlsZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9
IDA7IG4gPCBzaXplOyArK24pIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IHBhaW50ZWRSZWN0
cyA9IGRpcnR5VGlsZXNbbl0tPnVwZGF0ZUJhY2tCdWZmZXIoKTsKLSAgICAgICAgcGFpbnRlZEFy
ZWEuYXBwZW5kKHBhaW50ZWRSZWN0cyk7CisgICAgICAgIHBhaW50ZWRBcmVhLmFwcGVuZFZlY3Rv
cihwYWludGVkUmVjdHMpOwogICAgICAgICBkaXJ0eVRpbGVzW25dLT5zd2FwQmFja0J1ZmZlclRv
RnJvbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGUwMjJmZTI3YjBjMzRjOGIwMTc3
YzlkYWJjNzVhYjlmYjdjNmNmMjcuLjIxMmU5MmVkNzhhMTZhNGFjODhiY2RiYWJjNDdiMGZiNGM0
NzM3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdChib29sIG1heExheWVyRGVwdGhSZWFjaGVkKQog
ICAgIFBsYXRmb3JtQ0FMYXllckxpc3QmIGNoaWxkTGlzdEZvclN1YmxheWVycyA9IG1fc3RydWN0
dXJhbExheWVyID8gc3RydWN0dXJhbExheWVyQ2hpbGRyZW4gOiBwcmltYXJ5TGF5ZXJDaGlsZHJl
bjsKIAogICAgIGlmIChjdXN0b21TdWJsYXllcnMpCi0gICAgICAgIHByaW1hcnlMYXllckNoaWxk
cmVuLmFwcGVuZCgqY3VzdG9tU3VibGF5ZXJzKTsKKyAgICAgICAgcHJpbWFyeUxheWVyQ2hpbGRy
ZW4uYXBwZW5kVmVjdG9yKCpjdXN0b21TdWJsYXllcnMpOwogCiAgICAgaWYgKG1fc3RydWN0dXJh
bExheWVyKSB7CiAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCmluZGV4IDY4NjRm
NTNiNjYzYzM1ZjA2YmJjZTdjNmM2ZjI3NDA5MTBlMDEwYTcuLmM2MjFmZDM0YzI0YjhjZGE1MWQy
ZmQxYTdhOWUxYmY2NDUyZDQzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQg
S2V5QmluZGluZ1RyYW5zbGF0b3I6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZl
bnRLZXkqIGV2ZW50LCBFdmVuCiAjZW5kaWYKIAogICAgIGlmICghbV9wZW5kaW5nRWRpdG9yQ29t
bWFuZHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvbW1hbmRMaXN0LmFwcGVuZChtX3BlbmRpbmdF
ZGl0b3JDb21tYW5kcyk7CisgICAgICAgIGNvbW1hbmRMaXN0LmFwcGVuZFZlY3RvcihtX3BlbmRp
bmdFZGl0b3JDb21tYW5kcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNDhkM2ViYTUxZDRkNzZh
ZjQ2ZjdmNGFjZjg2MmMyOTY5MTkzMDU2Zi4uZTY0MGYwYzhjZWJhYWU2MjZmZTk4NDg4YTE0NjZl
ODFjM2I4YjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTdHJpbmc+IGNy
ZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAg
ICAgCiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1RJRkZQYm9hcmRUeXBlKSk7Ci0gICAgdHlw
ZXMuYXBwZW5kKHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CisgICAgdHlwZXMuYXBwZW5kVmVjdG9y
KHdyaXRhYmxlVHlwZXNGb3JVUkwoKSk7CiAgICAgdHlwZXMuYXBwZW5kKFN0cmluZyhOU1JURkRQ
Ym9hcmRUeXBlKSk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIHN0
YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkK
IHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHR5cGVzLmFwcGVuZChjcmVhdGVXcml0YWJsZVR5cGVz
Rm9ySW1hZ2UoKSk7CisgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNyZWF0ZVdyaXRhYmxlVHlwZXNG
b3JJbWFnZSgpKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgYgogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwog
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7CiAgICAgZnJhbWUt
PmVkaXRvcigpLT5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERh
dGEpOwotICAgIHR5cGVzLmFwcGVuZChjbGllbnRUeXBlcyk7CisgICAgdHlwZXMuYXBwZW5kVmVj
dG9yKGNsaWVudFR5cGVzKTsKIAogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxk
ZXIuY3BwCmluZGV4IDU2N2JkNjBiOTk3NDkyNzE0M2JlMmJkYTIyMDM3OGNmNjk1N2U2OTMuLjE3
NDRiYWMxMmNlM2M3OTY4Y2FkNzA2Y2RjODcwNDg0YzQ5NTdjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBWZWN0b3I8Y2hhcj4gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJv
dW5kYXJ5U3RyaW5nKCkKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5kKGFscGhhTnVtZXJpY0Vu
Y29kaW5nTWFwW3JhbmRvbW5lc3MgJiAweDNGXSk7CiAgICAgfQogCi0gICAgYm91bmRhcnkuYXBw
ZW5kKHJhbmRvbUJ5dGVzKTsKKyAgICBib3VuZGFyeS5hcHBlbmRWZWN0b3IocmFuZG9tQnl0ZXMp
OwogICAgIGJvdW5kYXJ5LmFwcGVuZCgwKTsgLy8gQWRkIGEgMCBhdCB0aGUgZW5kIHNvIHdlIGNh
biB1c2UgdGhpcyBhcyBhIEMtc3R5bGUgc3RyaW5nLgogICAgIHJldHVybiBib3VuZGFyeTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggNGQwZmZiZWMz
ZjEwZGUyODQ5NmY4NmQwMjEyY2UzMTA4MGM4NzRhYi4uMjIyMTcyNjg1ZmM5Nzc5NWQ4MDZmZjYz
MGUwYWVhN2ZhMDdiMjk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6
ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBtb3pQYXRoczsK
ICAgICBTdHJpbmcgbW96UGF0aChnZXRlbnYoIk1PWl9QTFVHSU5fUEFUSCIpKTsKICAgICBtb3pQ
YXRoLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBtb3pQ
YXRocyk7Ci0gICAgcGF0aHMuYXBwZW5kKG1velBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRWZWN0
b3IobW96UGF0aHMpOwogI2VsaWYgZGVmaW5lZChYUF9NQUNPU1gpCiAgICAgU3RyaW5nIHVzZXJQ
bHVnaW5QYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKICAgICB1c2VyUGx1Z2luUGF0aC5hcHBl
bmQoU3RyaW5nKCIvTGlicmFyeS9JbnRlcm5ldCBQbHVnLUlucyIpKTsKQEAgLTQ0NSw3ICs0NDUs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9y
aWVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBxdFBhdGhzOwogICAgIFN0cmluZyBxdFBhdGgocWdl
dGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5jb25zdERhdGEoKSk7CiAgICAgcXRQYXRoLnNw
bGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBxdFBhdGhzKTsK
LSAgICBwYXRocy5hcHBlbmQocXRQYXRocyk7CisgICAgcGF0aHMuYXBwZW5kVmVjdG9yKHF0UGF0
aHMpOwogI2VuZGlmCiAKICAgICByZXR1cm4gcGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDcwMmM0YTdhNzQ0ZmFm
MTM5NmI1M2M0NWYwODcwMzliOGI2ZTFjYTYuLjY2YzA2MjRlMWU5NDYzMmI5N2M3ZmFlNDZlNmZm
ZDEwMTZkYWRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KElubGluZUJpZGlSZXNvbHZlciYgdG9wUmVz
b2x2ZXIsCiAgICAgICAgIC8vIElmIHdlIGVuY291bnRlcmVkIGFueSBuZXN0ZWQgaXNvbGF0ZSBy
dW5zLCBqdXN0IG1vdmUgdGhlbQogICAgICAgICAvLyB0byB0aGUgdG9wIHJlc29sdmVyJ3MgbGlz
dCBmb3IgbGF0ZXIgcHJvY2Vzc2luZy4KICAgICAgICAgaWYgKCFpc29sYXRlZFJlc29sdmVyLmlz
b2xhdGVkUnVucygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdG9wUmVzb2x2ZXIuaXNvbGF0
ZWRSdW5zKCkuYXBwZW5kKGlzb2xhdGVkUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkpOworICAgICAg
ICAgICAgdG9wUmVzb2x2ZXIuaXNvbGF0ZWRSdW5zKCkuYXBwZW5kVmVjdG9yKGlzb2xhdGVkUmVz
b2x2ZXIuaXNvbGF0ZWRSdW5zKCkpOwogICAgICAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5pc29s
YXRlZFJ1bnMoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhM2E0OTExYzNh
OTUxMDY2MzliZDY0ZDU3NjZhNDIyYTU0NTYyYzI3Li41MDliNTkxZTY4Nzg2YmI5NjAyZTJiZmJl
YTQ5YTQ2MThiMThlNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgbV9vdmVybGFw
U3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgpIC0gMl0uYXBwZW5kKG1fb3ZlcmxhcFN0YWNrLmxh
c3QoKSk7CisgICAgICAgIG1fb3ZlcmxhcFN0YWNrW21fb3ZlcmxhcFN0YWNrLnNpemUoKSAtIDJd
LmFwcGVuZFZlY3RvcihtX292ZXJsYXBTdGFjay5sYXN0KCkpOwogICAgICAgICBtX292ZXJsYXBT
dGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDkyMDU5NDA1OWU4YmQ0YTFlY2FhN2E1ZWNl
YTZjZDVjMDJkMzIxMzQuLmJjYjYzYmQxNDAyOWU0NzQwMTBiZDEyZWI3NTljM2MxNWI5MjQzOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c3BsaXRDb2x1
bW4odW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCkKICAgICAgICAgUm93JiByID0gbV9ncmlk
W3Jvd10ucm93OwogICAgICAgICByLmluc2VydChwb3MgKyAxLCBDZWxsU3RydWN0KCkpOwogICAg
ICAgICBpZiAocltwb3NdLmhhc0NlbGxzKCkpIHsKLSAgICAgICAgICAgIHJbcG9zICsgMV0uY2Vs
bHMuYXBwZW5kKHJbcG9zXS5jZWxscyk7CisgICAgICAgICAgICByW3BvcyArIDFdLmNlbGxzLmFw
cGVuZFZlY3RvcihyW3Bvc10uY2VsbHMpOwogICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBj
ZWxsID0gcltwb3NdLnByaW1hcnlDZWxsKCk7CiAgICAgICAgICAgICBBU1NFUlQoY2VsbCk7CiAg
ICAgICAgICAgICBBU1NFUlQoY2VsbC0+Y29sU3BhbigpID49IChyW3Bvc10uaW5Db2xTcGFuID8g
MXUgOiAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCmluZGV4IDkyOTQ1MjY5NjU5MWQ3YTcw
YjRiMWE3N2ViMDQ2N2M3MmRkMzg0NDIuLmQwODMxYzRhNTY1OTRmOGIyNDQ4MjBkMWViMmYxZjlh
MmY4ODY1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oCkBAIC0xMjQsNyArMTI0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgUmVmUHRyPEdseXBoTWFwTm9kZT4gbm9kZSA9IGN1cnJlbnRM
YXllci0+Z2V0KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBnbHlwaHMuYXBwZW5kKG5vZGUtPmdseXBocyk7Cisg
ICAgICAgICAgICBnbHlwaHMuYXBwZW5kVmVjdG9yKG5vZGUtPmdseXBocyk7CiAgICAgICAgICAg
ICBjdXJyZW50TGF5ZXIgPSAmbm9kZS0+Y2hpbGRyZW47CiAgICAgICAgICAgICB0ZXh0SXRlcmF0
b3IuYWR2YW5jZShjbHVzdGVyTGVuZ3RoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5oCmluZGV4IGJjNzY3ZDVjMzhiZWU3MTI3OGNhMWNmMDIxNzQ3ZjhhYWMwMGMzNTguLjgz
OWJlOGQ4ZjA0MDNkN2ExMmM2OWZkNGNkMTU3Y2QzMjc4ZDA0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhOb2RlU2V0LmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgLy8gTm9kZVNldCBpdHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQg
YXJlIHVuaXF1ZS4KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKE5vZGUqIG5vZGUpIHsgbV9ub2Rl
cy5hcHBlbmQobm9kZSk7IH0KICAgICAgICAgICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8Tm9k
ZT4gbm9kZSkgeyBtX25vZGVzLmFwcGVuZChub2RlKTsgfQotICAgICAgICAgICAgdm9pZCBhcHBl
bmQoY29uc3QgTm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVuZChub2RlU2V0Lm1fbm9k
ZXMpOyB9CisgICAgICAgICAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7
IG1fbm9kZXMuYXBwZW5kVmVjdG9yKG5vZGVTZXQubV9ub2Rlcyk7IH0KIAogICAgICAgICAgICAg
Ly8gUmV0dXJucyB0aGUgc2V0J3MgZmlyc3Qgbm9kZSBpbiBkb2N1bWVudCBvcmRlciwgb3IgMCBp
ZiB0aGUgc2V0IGlzIGVtcHR5LgogICAgICAgICAgICAgTm9kZSogZmlyc3ROb2RlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQ
SS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAyZTMwYmNiNzg3ZTI2MjE1NmQ2MGE5OWQz
NzllOTM4YTE1MjJhNzg1Li42Mjc2Mzc2MGUzNjEwOTc4ZGEyNGZlMjI5MjkwMzc0MDYxN2VhYzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Zp
bGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBOZXR3
b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3QKICAgICBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcyA9IGRhdGEt
Pml0ZW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gaXRlbXMuc2l6ZSgpOyBp
IDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoaXRlbXNbaV0udHlwZSA9PSBCbG9iRGF0YUl0
ZW06OkJsb2IpCi0gICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQobV9zYW5kYm94
RXh0ZW5zaW9ucy5nZXQoaXRlbXNbaV0udXJsLnN0cmluZygpKSk7CisgICAgICAgICAgICBzYW5k
Ym94RXh0ZW5zaW9ucy5hcHBlbmRWZWN0b3IobV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQoaXRlbXNb
aV0udXJsLnN0cmluZygpKSk7CiAgICAgfQogCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMKHVybCwgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9TY2hlZHVsYWJsZUxvYWRlci5jcHAKaW5kZXggOWQ0NmY3NDhiZjRjMjBmYzY5ZjYwYTVhNzU2
ZGE2ZGEwMmFmNWNiNS4uNDI5ZTI2NTRiYWNiMTRkMTYzZGI1ZWQ1NGRkZDRlMjNhZjA0MTRlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9h
ZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTY2hlZHVsYWJsZUxvYWRlcjo6U2NoZWR1bGFibGVM
b2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZQogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRhRWxl
bWVudDo6ZW5jb2RlZEJsb2IpIHsKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+ID4gYmxvYkVsZW1lbnRFeHRlbnNpb25zID0gTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6c2hhcmVkKCkuc2FuZGJveEV4dGVuc2lvbnMoZWxlbWVudHNbaV0ubV91cmwpOwotICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoYmxvYkVsZW1l
bnRFeHRlbnNpb25zKTsKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVu
c2lvbnMuYXBwZW5kVmVjdG9yKGJsb2JFbGVtZW50RXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmNwcAppbmRleCA3YTA4NGM2YTk1OWNlNjhhZTEwYmZiMDI1YjhiMmVkMDU1M2Vi
ODQ5Li41ZGQwNzRhNWUyODkzNDM2MjdhZTg2ZjNmNDdhNTc1YmI4ZTNhY2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE5MCw3ICsx
OTAsNyBAQCB2b2lkIENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2Fn
ZXMoQ29ubmVjdGlvbiogYWxsb3dlZENvbm5lY3RpbwogCiAgICAgaWYgKCFtZXNzYWdlc1RvUHV0
QmFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwot
ICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxlV2FpdGluZ0ZvclN5bmNSZXBseS5hcHBl
bmQobWVzc2FnZXNUb1B1dEJhY2spOworICAgICAgICBtX21lc3NhZ2VzVG9EaXNwYXRjaFdoaWxl
V2FpdGluZ0ZvclN5bmNSZXBseS5hcHBlbmRWZWN0b3IobWVzc2FnZXNUb1B1dEJhY2spOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKaW5kZXggZDRjOWVjMmM1ZjJlNTJmZjBh
Y2E0NTliZTc0MjZjMzFhOWZhM2U0Yy4uMzcyNjQwMWY2Y2NjNjNiNWQ5ZDNhYzZhNzE1YTE5MDgx
MmRjYWIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCkBAIC03Miw3ICs3Miw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKCkKICAgICBp
ZiAoIW1vemlsbGFQYXRocy5pc0VtcHR5KCkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0
aHM7CiAgICAgICAgIG1vemlsbGFQYXRocy5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5
RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHBhdGhzKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihwYXRocyk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4OTM3YzM2Y2RiZThhODUzODM5YzI3M2ZmODdjNWI2ZTJiODliMDgyLi5kODExMmU4ZGE4
YTE0YTYzNGM1NWExMDg2MTgxZDc5ZGM3ODc0MTc0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDUtMDUgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhl
IFZlY3Rvcjo6YXBwZW5kIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3I6OmFwcGVuZFZl
Y3RvciBpbnN0ZWFkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKToKKwogMjAxMy0wNS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE0ODMxMik6IENyYXNoIHdoZW4gY2FsbGluZyBXS1BhZ2VD
bG9zZShwYWdlKSBmb2xsb3dlZCBieSBXS1BhZ2VUZXJtaW5hdGUocGFnZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggMzUzZWE4ZDY3YzkzZDk2OTYzZDFhYWI0ODVhMmRhZWE0ZGZlNjUwNy4uNjUxNTc1ZjI0M2Zl
OWYzNGY3MTQ2MjgyYjU0NWI2MzQ5YzI1NjMwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTE2Miw3ICsxNjIs
NyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShOU1N0
cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9yPFVuaUNoYXI+IHZhbHVl
QnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hhcmFjdGVyczp2YWx1ZUJ1
ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZmZXIpOworICAgIGJ1ZmZl
ci5hcHBlbmRWZWN0b3IodmFsdWVCdWZmZXIpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRleCA4YTk1NTFjODVmYThhODdi
ZGU0MDVhMzk3YWY1ZTgwMjBlOGI5OTE2Li44MDUxOTk5ZmQ0MjdjZTE5NmE4NjliZmMzMmFiNDdh
MDRlMmIyODAxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0K
QEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgSlNTdHJpbmdSZWYgY29uY2F0ZW5hdGVBdHRyaWJ1
dGVBbmRWYWx1ZShOU1N0cmluZyogYXR0cmlidXRlLCBOU1N0cmluZyogdgogCiAgICAgVmVjdG9y
PFVuaUNoYXI+IHZhbHVlQnVmZmVyKFt2YWx1ZSBsZW5ndGhdKTsKICAgICBbdmFsdWUgZ2V0Q2hh
cmFjdGVyczp2YWx1ZUJ1ZmZlci5kYXRhKCldOwotICAgIGJ1ZmZlci5hcHBlbmQodmFsdWVCdWZm
ZXIpOworICAgIGJ1ZmZlci5hcHBlbmRWZWN0b3IodmFsdWVCdWZmZXIpOwogCiAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200594</attachid>
            <date>2013-05-05 10:52:23 -0700</date>
            <delta_ts>2013-05-05 11:59:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115535-20130505105133.patch</filename>
            <type>text/plain</type>
            <size>49203</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM5MDMxZTA3ZGI5NTQ1YTYyMWFlMTJh
MmI1OTkzZjM3MjI2NjdiMGMuLjJlMjA0NGQ0OGNmYTZhMzgxN2FhMjVkOWJmNWEzNWFjNDcwYWE5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFZlY3Rvcjo6YXBwZW5kIG92
ZXJsb2FkIHRoYXQgdGFrZXMgYSBWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTUzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2Vz
IGEgVmVjdG9yIGNvbmZsaWN0cyB3aXRoIHJ2YWx1ZXMgaW4gQysrMTEsIHNvIHJlbW92ZSBpdCBh
bmQKKyAgICAgICAgcmVwbGFjZSBjYWxscyB0byBpdCB3aXRoIGNhbGxzIHRvIGFwcGVuZFZlY3Rv
ci4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFZlY3Rvcik6CisKIDIwMTMt
MDUtMDQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDk1NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0ZDg5ZjZhNmQ4N2Nl
NWJlMDk2MWYwYWNiYzNhNjdiZTAxNDQ2NC4uMGVjYWVlNWY3YjkwOWI5NzdkMTVhZGQ4NjljYWY2
YjZiNTIxNWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkwIEBACiAyMDEzLTA1LTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHRoZSBW
ZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU1MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yOjphcHBlbmRWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5Ojpl
bmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YVZlcnNpb25L
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFz
ZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6RGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlz
dEtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5n
OjpPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5OjplbmNvZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhEYXRhS2V5OjplbmNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxscyk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEFjdGl2ZUNTU1N0eWxlU2hlZXRzRnJvbVNlYW1sZXNz
UGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAq
IGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xs
ZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3Q6OnRyeVRvRW5zdXJlTm9haHNBcmtDb25kaXRpb25RdWlja2x5KToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRU
b2tlbjo6YWRkTmV3Q2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVG9rZW46OmFkZE5l
d0Fubm90YXRpb24pOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJl
ZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5nczo6YWNjZXB0VHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmspOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKToKKyAgICAgICAgKiBwbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
OjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbik6CisgICAgICAgICogc3ZnL1NWR0dseXBoTWFwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICogeG1sL1hQ
YXRoTm9kZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmFwcGVuZCk6
CisKKzIwMTMtMDUtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwog
ICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkLgogCiAgICAgICAgIE1ha2UgcGx1
Z0lucy5qcyBoYXZlIGEgbm9uLXplcm8gbGVuZ3RoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJhZTE3ODBiNGM5
OWU3MzZiODVjODlhNjE3NmY4MDJjNGI3MTliNGQuLmQzZDlmNmM2ODQ5YmY2MGYxMGViYWZkMWEy
ZDEyMjZlMTZiZTMyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wNS0wNSAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBwZW5k
VmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NoZWR1bGFibGVMb2FkZXI6OlNjaGVkdWxh
YmxlTG9hZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hN
ZXNzYWdlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3Rv
cmVVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGly
ZWN0b3JpZXMpOgorCiAyMDEzLTA1LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4ICogcGxhY2VtZW50IGluIGEgZmV3IGZ1bmN0aW9ucyBhcyBub3RpY2VkIGJ5
IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjg5NjI1NTlmOTU3Y2I2YjUwNjMyNTRjMDhiZGE3MWNj
N2Y1MTM3Yy4uN2ZiY2MwNWM0NTJkM2ZhOWNmMTNkOTE2Njg4NjUyOTNhOWRmNzZjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9y
LmgKQEAgLTYyMCw3ICs2MjAsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCBhcHBlbmQoY29uc3QgVSosIHNpemVfdCk7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IHZvaWQgYXBwZW5kKGNvbnN0IFUmKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCB1bmNoZWNrZWRBcHBlbmQoY29uc3QgVSYgdmFsKTsKLSAgICAgICAg
dGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHk+IHZvaWQgYXBwZW5kKGNvbnN0IFZlY3RvcjxU
LCBvdGhlckNhcGFjaXR5PiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBzaXplX3Qg
b3RoZXJDYXBhY2l0eT4gdm9pZCBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVyQ2Fw
YWNpdHk+Jik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgdHJ5QXBwZW5kKGNv
bnN0IFUqLCBzaXplX3QpOwogCkBAIC0xMDYyLDE1ICsxMDYxLDYgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICsrbV9zaXplOwogICAgIH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGFwcGVuZCwgYSBiZXR0ZXIgbmFtZSB3b3VsZCBiZSBhcHBlbmRFbGVtZW50
cy4KLSAgICAvLyBJdCBjb3VsZCBhbHNvIGJlIGVsaW1pbmF0ZWQgZW50aXJlbHksIGFuZCBjYWxs
IHNpdGVzIGNvdWxkIGp1c3QgdXNlCi0gICAgLy8gYXBwZW5kUmFuZ2UodmFsLmJlZ2luKCksIHZh
bC5lbmQoKSkuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5
PgotICAgIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyPjo6YXBwZW5kKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5PiYgdmFsKQotICAgIHsK
LSAgICAgICAgYXBwZW5kKHZhbC5iZWdpbigpLCB2YWwuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVSwgc2l6ZV90IG90aGVyQ2FwYWNpdHk+CiAg
ICAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+
OjphcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFUsIG90aGVyQ2FwYWNpdHk+JiB2YWwpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggN2Q0YzhhZTFmMTA5ODk4MjBjNjhiNTZkNWVkODhlZmI0NThjY2FkMi4u
NDhlMGQzMTYyYzYzMTI5YzUyNjFjNTlhNTIwNjUxMzc5MjA4MmFlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC05
MDcsNyArOTA3LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OnB1dFJlY29yZChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjQKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gb2JqZWN0U3RvcmVkYXRhS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKIAogICAgIFZlY3RvcjxjaGFyPiB2OwotICAg
IHYuYXBwZW5kKGVuY29kZVZhckludCh2ZXJzaW9uKSk7CisgICAgdi5hcHBlbmRWZWN0b3IoZW5j
b2RlVmFySW50KHZlcnNpb24pKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSA9IHBy
cFZhbHVlOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgdi5hcHBlbmQodmFsdWUtPmRhdGEoKSwg
dmFsdWUtPnNpemUoKSk7CkBAIC0xMTkwLDggKzExOTAsOCBAQCBib29sIElEQkJhY2tpbmdTdG9y
ZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRy
YW5zYQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleERhdGFLZXkgPSBJbmRleERhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBlbmNvZGVJREJLZXko
a2V5KSwgcmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkpOwogCiAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgZGF0YS5hcHBlbmQoZW5jb2RlVmFySW50KHJlY29yZElkZW50aWZpZXIudmVy
c2lvbigpKSk7Ci0gICAgZGF0YS5hcHBlbmQocmVjb3JkSWRlbnRpZmllci5wcmltYXJ5S2V5KCkp
OworICAgIGRhdGEuYXBwZW5kVmVjdG9yKGVuY29kZVZhckludChyZWNvcmRJZGVudGlmaWVyLnZl
cnNpb24oKSkpOworICAgIGRhdGEuYXBwZW5kVmVjdG9yKHJlY29yZElkZW50aWZpZXIucHJpbWFy
eUtleSgpKTsKIAogICAgIGxldmVsREJUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwgZGF0
YSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDcyNDA1NTJiMTZkM2MzODJmNWQw
Y2QwNDMxMWEyMzZiYmI5OWNiMWMuLjg4ZTBlMGIwZTgxMDAwODIxZjAzNGJmOWIwZDJmNTYxM2Zm
MzM4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgU3RyaW5nIGRlY29kZVN0cmlu
Zyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogVmVjdG9yPGNoYXI+IGVuY29k
ZVN0cmluZ1dpdGhMZW5ndGgoY29uc3QgU3RyaW5nJiBzKQogewogICAgIFZlY3RvcjxjaGFyPiBy
ZXQgPSBlbmNvZGVWYXJJbnQocy5sZW5ndGgoKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmcocykpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlU3RyaW5nKHMpKTsKICAgICByZXR1
cm4gcmV0OwogfQogCkBAIC00MTksMzAgKzQxOSwzMCBAQCB2b2lkIGVuY29kZUlEQktleShjb25z
dCBJREJLZXkmIGtleSwgVmVjdG9yPGNoYXIsIERlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYgaW50
bwogICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKICAgICBjYXNlIElEQktleTo6TWluVHlw
ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGludG8uYXBwZW5kKGVu
Y29kZUJ5dGUoSURCS2V5TnVsbFR5cGVCeXRlKSk7CisgICAgICAgIGludG8uYXBwZW5kVmVjdG9y
KGVuY29kZUJ5dGUoSURCS2V5TnVsbFR5cGVCeXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIElEQktleTo6QXJyYXlUeXBlOiB7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUo
SURCS2V5QXJyYXlUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVC
eXRlKElEQktleUFycmF5VHlwZUJ5dGUpKTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGtleS5h
cnJheSgpLnNpemUoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlVmFySW50KGxlbmd0aCkp
OworICAgICAgICBpbnRvLmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQobGVuZ3RoKSk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBlbmNv
ZGVJREJLZXkoKmtleS5hcnJheSgpW2ldLCBpbnRvKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChw
cmV2aW91c1NpemUsIGludG8uc2l6ZSgpID4gcHJldmlvdXNTaXplKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKLSAgICAgICAgaW50by5hcHBl
bmQoZW5jb2RlQnl0ZShJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOwotICAgICAgICBpbnRvLmFwcGVu
ZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGtleS5zdHJpbmcoKSkpOworICAgICAgICBpbnRvLmFw
cGVuZFZlY3RvcihlbmNvZGVCeXRlKElEQktleVN0cmluZ1R5cGVCeXRlKSk7CisgICAgICAgIGlu
dG8uYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoa2V5LnN0cmluZygpKSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSA+IHByZXZpb3Vz
U2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5RGF0ZVR5cGVCeXRlKSk7Ci0gICAgICAg
IGludG8uYXBwZW5kKGVuY29kZURvdWJsZShrZXkuZGF0ZSgpKSk7CisgICAgICAgIGludG8uYXBw
ZW5kVmVjdG9yKGVuY29kZUJ5dGUoSURCS2V5RGF0ZVR5cGVCeXRlKSk7CisgICAgICAgIGludG8u
YXBwZW5kVmVjdG9yKGVuY29kZURvdWJsZShrZXkuZGF0ZSgpKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3VzU2l6ZSA9PSA5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgotICAgICAgICBpbnRv
LmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bWJlclR5cGVCeXRlKSk7Ci0gICAgICAgIGludG8u
YXBwZW5kKGVuY29kZURvdWJsZShrZXkubnVtYmVyKCkpKTsKKyAgICAgICAgaW50by5hcHBlbmRW
ZWN0b3IoZW5jb2RlQnl0ZShJREJLZXlOdW1iZXJUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFw
cGVuZFZlY3RvcihlbmNvZGVEb3VibGUoa2V5Lm51bWJlcigpKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAtIHByZXZpb3VzU2l6ZSA9PSA5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY2OCwxNCArNjY4LDE0IEBAIFZlY3RvcjxjaGFyPiBl
bmNvZGVJREJLZXlQYXRoKGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiAgICAgY2FzZSBJREJL
ZXlQYXRoOjpOdWxsVHlwZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXlQYXRoOjpT
dHJpbmdUeXBlOgotICAgICAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoa2V5
UGF0aC5zdHJpbmcoKSkpOworICAgICAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZ1dp
dGhMZW5ndGgoa2V5UGF0aC5zdHJpbmcoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElE
QktleVBhdGg6OkFycmF5VHlwZTogewogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJy
YXkgPSBrZXlQYXRoLmFycmF5KCk7CiAgICAgICAgIHNpemVfdCBjb3VudCA9IGFycmF5LnNpemUo
KTsKLSAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoY291bnQpKTsKKyAgICAgICAgcmV0
LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQoY291bnQpKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgcmV0LmFwcGVuZChlbmNvZGVTdHJp
bmdXaXRoTGVuZ3RoKGFycmF5W2ldKSk7CisgICAgICAgICAgICByZXQuYXBwZW5kVmVjdG9yKGVu
Y29kZVN0cmluZ1dpdGhMZW5ndGgoYXJyYXlbaV0pKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIH0KQEAgLTEwODgsOSArMTA4OCw5IEBAIFZlY3RvcjxjaGFyPiBLZXlQcmVmaXg6OmVuY29k
ZUludGVybmFsKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkCiAgICAg
Q09NUElMRV9BU1NFUlQoa01heERhdGFiYXNlSWRTaXplQml0cyArIGtNYXhPYmplY3RTdG9yZUlk
U2l6ZUJpdHMgKyBrTWF4SW5kZXhJZFNpemVCaXRzID09IHNpemVvZihmaXJzdEJ5dGUpICogOCwg
Q0FOVF9FTkNPREVfSURTKTsKICAgICBWZWN0b3I8Y2hhciwgRGVmYXVsdElubGluZUJ1ZmZlclNp
emU+IHJldDsKICAgICByZXQuYXBwZW5kKGZpcnN0Qnl0ZSk7Ci0gICAgcmV0LmFwcGVuZChkYXRh
YmFzZUlkU3RyaW5nKTsKLSAgICByZXQuYXBwZW5kKG9iamVjdFN0b3JlSWRTdHJpbmcpOwotICAg
IHJldC5hcHBlbmQoaW5kZXhJZFN0cmluZyk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihkYXRhYmFz
ZUlkU3RyaW5nKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKG9iamVjdFN0b3JlSWRTdHJpbmcpOwor
ICAgIHJldC5hcHBlbmRWZWN0b3IoaW5kZXhJZFN0cmluZyk7CiAKICAgICBBU1NFUlQocmV0LnNp
emUoKSA8PSBEZWZhdWx0SW5saW5lQnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHJldDsKQEAgLTEx
MzUsMjEgKzExMzUsMjEgQEAgS2V5UHJlZml4OjpUeXBlIEtleVByZWZpeDo6dHlwZSgpIGNvbnN0
CiBWZWN0b3I8Y2hhcj4gU2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8
Y2hhcj4gcmV0ID0gS2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5j
b2RlQnl0ZShTY2hlbWFWZXJzaW9uVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVu
Y29kZUJ5dGUoU2NoZW1hVmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAog
VmVjdG9yPGNoYXI+IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7CiAgICAgVmVjdG9yPGNo
YXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUoTWF4RGF0YWJhc2VJZFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNv
ZGVCeXRlKE1heERhdGFiYXNlSWRUeXBlQnl0ZSkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKIFZl
Y3RvcjxjaGFyPiBEYXRhVmVyc2lvbktleTo6ZW5jb2RlKCkKIHsKICAgICBWZWN0b3I8Y2hhcj4g
cmV0ID0gS2V5UHJlZml4OjplbmNvZGVFbXB0eSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShEYXRhVmVyc2lvblR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRl
KERhdGFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xMTgwLDgg
KzExODAsOCBAQCBjb25zdCBjaGFyKiBEYXRhYmFzZUZyZWVMaXN0S2V5OjpkZWNvZGUoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBEYQogVmVjdG9yPGNoYXI+IERhdGFiYXNl
RnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQpCiB7CiAgICAgVmVjdG9yPGNo
YXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUoRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVW
YXJJbnQoZGF0YWJhc2VJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShEYXRh
YmFzZUZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZVZhcklu
dChkYXRhYmFzZUlkKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTIyNyw5ICsxMjI3LDkg
QEAgY29uc3QgY2hhciogRGF0YWJhc2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGxpbWl0LCBEYXRhYmEKIFZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6
OmVuY29kZShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
CiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IEtleVByZWZpeDo6ZW5jb2RlRW1wdHkoKTsKLSAg
ICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKLSAgICByZXQu
YXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob3JpZ2luKSk7Ci0gICAgcmV0LmFwcGVuZChl
bmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGRhdGFiYXNlTmFtZSkpOworICAgIHJldC5hcHBlbmRWZWN0
b3IoZW5jb2RlQnl0ZShEYXRhYmFzZU5hbWVUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0
b3IoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChvcmlnaW4pKTsKKyAgICByZXQuYXBwZW5kVmVjdG9y
KGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoZGF0YWJhc2VOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsK
IH0KIApAQCAtMTI1NSw3ICsxMjU1LDcgQEAgVmVjdG9yPGNoYXI+IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIE1ldGFEYXRhVHlwZSBtZXRhRGEKIHsKICAg
ICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBw
cmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkp
OworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAgICBy
ZXR1cm4gcmV0OwogfQogCkBAIC0xMjk0LDkgKzEyOTQsOSBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNo
YXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2Jq
ZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQo
b2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUp
KTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVNZXRhRGF0YVR5
cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJ
ZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKICAg
ICByZXR1cm4gcmV0OwogfQogCkBAIC0xMzY5LDEwICsxMzY5LDEwIEBAIFZlY3RvcjxjaGFyPiBJ
bmRleE1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0
b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChv
YmplY3RTdG9yZUlkKSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwot
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKKyAgICByZXQuYXBwZW5k
VmVjdG9yKGVuY29kZUJ5dGUoSW5kZXhNZXRhRGF0YVR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVu
ZFZlY3RvcihlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0
b3IoZW5jb2RlVmFySW50KGluZGV4SWQpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5
dGUobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTQzMiw4ICsxNDMy
LDggQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlRnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRh
dGFiYXNlSWQpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAg
cmV0LmFwcGVuZChlbmNvZGVCeXRlKE9iamVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkpOwotICAg
IHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQpKTsKKyAgICByZXQuYXBwZW5k
VmVjdG9yKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0
LmFwcGVuZFZlY3RvcihlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJldHVybiBy
ZXQ7CiB9CiAKQEAgLTE0ODksOSArMTQ4OSw5IEBAIFZlY3RvcjxjaGFyPiBJbmRleEZyZWVMaXN0
S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsCiB7
CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0
ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleEZyZWVM
aXN0VHlwZUJ5dGUpKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlk
KSk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOworICAgIHJldC5hcHBl
bmRWZWN0b3IoZW5jb2RlQnl0ZShJbmRleEZyZWVMaXN0VHlwZUJ5dGUpKTsKKyAgICByZXQuYXBw
ZW5kVmVjdG9yKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CisgICAgcmV0LmFwcGVuZFZl
Y3RvcihlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE1
NDUsOCArMTU0NSw4IEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU5hbWVzS2V5OjplbmNvZGUo
aW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG9iamVjCiB7CiAgICAgS2V5UHJlZml4
IHByZWZpeChkYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29k
ZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUp
KTsKLSAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1l
KSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVCeXRlKE9iamVjdFN0b3JlTmFtZXNUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChvYmpl
Y3RTdG9yZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNTg4LDkgKzE1ODgsOSBA
QCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJh
c2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQu
YXBwZW5kKGVuY29kZUJ5dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7Ci0gICAgcmV0LmFwcGVu
ZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlU3Ry
aW5nV2l0aExlbmd0aChpbmRleE5hbWUpKTsKKyAgICByZXQuYXBwZW5kVmVjdG9yKGVuY29kZUJ5
dGUoSW5kZXhOYW1lc0tleVR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVW
YXJJbnQob2JqZWN0U3RvcmVJZCkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlU3RyaW5n
V2l0aExlbmd0aChpbmRleE5hbWUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNjIwLDcg
KzE2MjAsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogewogICAgIEtleVByZWZpeCBwcmVm
aXgoS2V5UHJlZml4OjpjcmVhdGVXaXRoU3BlY2lhbEluZGV4KGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcikpOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVm
aXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktleSk7CisgICAgcmV0LmFw
cGVuZFZlY3RvcihlbmNvZGVkVXNlcktleSk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMTY2
Miw3ICsxNjYyLDcgQEAgVmVjdG9yPGNoYXI+IEV4aXN0c0VudHJ5S2V5OjplbmNvZGUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGMKIHsKICAgICBLZXlQcmVmaXgg
cHJlZml4KEtleVByZWZpeDo6Y3JlYXRlV2l0aFNwZWNpYWxJbmRleChkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0g
cHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlZEtleSk7CisgICAgcmV0LmFw
cGVuZFZlY3RvcihlbmNvZGVkS2V5KTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xNzMzLDkg
KzE3MzMsOSBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludAogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CiAgICAgVmVjdG9yPGNoYXI+
IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZWRVc2VyS2V5KTsK
LSAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChzZXF1ZW5jZU51bWJlcikpOwotICAgIHJldC5h
cHBlbmQoZW5jb2RlZFByaW1hcnlLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlZFVz
ZXJLZXkpOworICAgIHJldC5hcHBlbmRWZWN0b3IoZW5jb2RlVmFySW50KHNlcXVlbmNlTnVtYmVy
KSk7CisgICAgcmV0LmFwcGVuZFZlY3RvcihlbmNvZGVkUHJpbWFyeUtleSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCmluZGV4IDA0NzI2NmViNzk0YjBlOGVkMGJmNTE2ZTNiNzUyZjZhNzgyY2JjNjIu
LjQyNDNhMTM1YmI4Y2VhYTMxN2RhMDdhNjUzMzMwZDFiNjQxMzE5YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTIzMiw3ICsy
MzIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQogICAgIC8vIEF1ZGlvIHRocmVhZCBp
cyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3Mg
ZG8gaXQgb3Vyc2VsdmVzLgogICAgIGRvIHsKICAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsK
LSAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24p
OworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JE
ZWxldGlvbik7CiAgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogICAg
IH0gd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpOwogCkBAIC03OTMsNyArNzkzLDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKIAogICAgIC8vIE1ha2Ug
c3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuICAgIAogICAg
IGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hl
ZHVsZWQpIHsKLSAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9y
RGVsZXRpb24pOworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNN
YXJrZWRGb3JEZWxldGlvbik7CiAgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVh
cigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAK
aW5kZXggODY2NGFjNzRmZDhhZGJkZGYxZTAyMWQ4MzY2ZjE4NWMwMTNjZWVhMy4uOThhZDM0ZDg4
MWJiYzQ1OTRlMGZhYzZkYTgxMjQ1ZTNlNGMxNWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtNzYsNyAr
NzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkVGFibGVDZWxsQ2hpbGQoQWNj
ZXNzaWJpbGl0eU9iamVjdCogY2hpbGQsIEhhc2hTZQogICAgIGlmICghcm93LT5hY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdyk7CiAgICAgZWxz
ZQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZFZlY3Rvcihyb3ctPmNoaWxkcmVuKCkpOwogCiAgICAgYXBwZW5kZWRS
b3dzLmFkZChyb3cpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDcxYWZhYjVkODdkNzk2
MGI2MDI1ZTQ3NWY0ZTQ2YWM1OTc5NjBiNjEuLjU2ZTJlOTQ5NTcxYWU0NjEzYjEzNGQzZjNkZmZm
YTI1OTU3MTJiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5k
KHJvdyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CisgICAgICAgICAgICAgICAg
bV9jaGlsZHJlbi5hcHBlbmRWZWN0b3Iocm93LT5jaGlsZHJlbigpKTsKICNlbmRpZgogICAgICAg
ICAgICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwogICAgICAgICB9CkBAIC00NjYsMTEgKzQ2Niw4
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxscyhBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImCiAgICAgCiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5l
Y2Vzc2FyeSgpOwogICAgIAotICAgIGludCBudW1Sb3dzID0gbV9yb3dzLnNpemUoKTsKLSAgICBm
b3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyArK3JvdykgewotICAgICAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93Q2hpbGRyZW4gPSBtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4o
KTsKLSAgICAgICAgY2VsbHMuYXBwZW5kKHJvd0NoaWxkcmVuKTsKLSAgICB9CisgICAgZm9yIChz
aXplX3Qgcm93ID0gMDsgcm93IDwgbV9yb3dzLnNpemUoKTsgKytyb3cpCisgICAgICAgIGNlbGxz
LmFwcGVuZFZlY3RvcihtX3Jvd3Nbcm93XS0+Y2hpbGRyZW4oKSk7CiB9CiAgICAgCiB1bnNpZ25l
ZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbkNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCmluZGV4IGQwM2IwNzQzZmIwMjA2ZWM4NjRhZGRiYmRjOWU3NGI3M2I1MTA2ZTAuLjkz
YThlYzhmMjJjM2Q3NjhjMTk5ODkyN2Q2Y2RiMWY1NWNjZTQ5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcApAQCAtNjUsOCArNjUsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQo
Y29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIGVuZCA9IG90aGVyLmF0dHJzSW5SdWxl
cy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG90aGVyLmF0dHJzSW5SdWxlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoKml0KTsKLSAgICBzaWJsaW5nUnVsZXMuYXBwZW5kKG90
aGVyLnNpYmxpbmdSdWxlcyk7Ci0gICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmQob3Ro
ZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CisgICAgc2libGluZ1J1bGVzLmFwcGVuZFZlY3Rv
cihvdGhlci5zaWJsaW5nUnVsZXMpOworICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5k
VmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIHVzZXNGaXJzdExpbmVS
dWxlcyA9IHVzZXNGaXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAg
ICAgdXNlc0JlZm9yZUFmdGVyUnVsZXMgPSB1c2VzQmVmb3JlQWZ0ZXJSdWxlcyB8fCBvdGhlci51
c2VzQmVmb3JlQWZ0ZXJSdWxlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCAyNDYzMGY1MzQ1NzQ0YjI1ZjcxN2FmODQ2OGE2ODNiZjRmZDBkY2UzLi5kMzJhMGE4MTIx
ZGU0MWVmYzllY2YzNGJjZTk0NmU2ZjUzMzI0NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFRv
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0CiAK
ICAgICBBU1NFUlQoaGFzaCk7CiAgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0gY2FjaGVJ
dGVtOwotICAgIGNhY2hlSXRlbS5tYXRjaGVkUHJvcGVydGllcy5hcHBlbmQobWF0Y2hSZXN1bHQu
bWF0Y2hlZFByb3BlcnRpZXMpOworICAgIGNhY2hlSXRlbS5tYXRjaGVkUHJvcGVydGllcy5hcHBl
bmRWZWN0b3IobWF0Y2hSZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMpOwogICAgIGNhY2hlSXRlbS5y
YW5nZXMgPSBtYXRjaFJlc3VsdC5yYW5nZXM7CiAgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IGNh
Y2hlIHRoZSBvcmlnaW5hbCBSZW5kZXJTdHlsZSBpbnN0YW5jZS4gSXQgbWF5IGJlIGZ1cnRoZXIg
bW9kaWZpZWQuCiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNoZSBpcyByZWFsbHkg
anVzdCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQgYXMtaXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bi5jcHAKaW5kZXggZGJlZjBjOWMxOTQ3MGMwMWM5MjI0YWIwMTgwY2VmY2I5M2FhYTYxNy4uZDMx
NGQ5MGI5MmY0NGE0YTM0YjQ5NjNkZjQ0NzBjMDAxZjVhNjE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApAQCAtNDQxLDcg
KzQ0MSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFt
bGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsCiAgICAgSFRNTElGcmFtZUVsZW1lbnQq
IHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1sZXNzUGFyZW50SUZyYW1lKCk7
CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNo
ZWV0cy5hcHBlbmQoc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRD
b2xsZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIHNoZWV0cy5hcHBl
bmRWZWN0b3Ioc2VhbWxlc3NQYXJlbnRJRnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xs
ZWN0aW9uKCktPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOwogfQogCiBib29sIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcg
dXBkYXRlRmxhZykKQEAgLTQ2Miw4ICs0NjIsOCBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwog
ICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAg
YWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7
Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVl
dHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKGluamVjdGVkQXV0
aG9yU3R5bGVTaGVldHMoKSk7CisgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9y
KGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMoKSk7CiAgICAgY29sbGVjdEFjdGl2ZUNTU1N0eWxl
U2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgbV9kb2N1bWVu
dCk7CiAgICAgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRz
LCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDZkOGNkNjJkNzEy
OWQ4MjJlNjkyYTU5M2Q1MzQ3MjdiYThkNzE3OWUuLjBmYWUzMWNlNTU4YmYxMDJmN2VkOWIwM2Rl
NjBkZWRjYWQ0NGM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTkyNyw3ICsxOTI3LDcgQEAg
dm9pZCBSYW5nZTo6Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cykgY29uc3QKICAgICAgICAgICAgICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVR
dWFkcyhlbGVtZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+YWRq
dXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVu
dFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7CiAKLSAgICAgICAgICAgICAgICBxdWFkcy5h
cHBlbmQoZWxlbWVudFF1YWRzKTsKKyAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmRWZWN0b3Io
ZWxlbWVudFF1YWRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5p
c1RleHROb2RlKCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dG9UZXh0KG5vZGUpLT5yZW5kZXJlcigpKSB7CkBAIC0xOTM5LDcgKzE5MzksNyBAQCB2b2lkIFJh
bmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25z
dAogICAgICAgICAgICAgICAgIHJlbmRlclRleHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0
UXVhZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogICAgICAgICAgICAgICAgIG1fb3duZXJE
b2N1bWVudC0+YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1l
U2NhbGUodGV4dFF1YWRzLCByZW5kZXJUZXh0KTsKIAotICAgICAgICAgICAgICAgIHF1YWRzLmFw
cGVuZCh0ZXh0UXVhZHMpOworICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFZlY3Rvcih0ZXh0
UXVhZHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDA5Y2MyODc0NDE4MTAzOTA5
ODExODM0MzkyODQ1MzRhMzI1ZDJiNjMuLjFhYzRmNzVlZjkwNjZiMzMwZWRhMjEwYTQ5Y2ExNDIw
NDdlZjM2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRD
aGVja2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZwogICAgICAg
ICBpZiAocmVzdWx0cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHRzLnN3YXAoc3BlbGxp
bmdSZXN1bHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzcGVs
bGluZ1Jlc3VsdCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZFZlY3RvcihzcGVsbGluZ1Jl
c3VsdCk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDhhOGFmMDVhOTdmYjU5YmYzMGY5YTU4NDdiNDViM2M0ZmQzMGI3MDEuLmUyOTVl
NTEzZjZmOWJhZGUwYzZlZmFmYjA1NzQ2ZDNiYjE3MzM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCkBAIC01MTAsOCArNTEwLDggQEAgVmVjdG9yPFN0cmluZz4gRm9y
bUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHN0YXQKICAgICBWZWN0b3I8U3RyaW5nPiB0b1JldHVybjsKICAgICBTYXZlZEZvcm1TdGF0ZU1h
cCBtYXA7CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsK
LSAgICBmb3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdp
bigpOyBpdCAhPSBtYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+
dmFsdWUtPmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7CisgICAgZm9yIChTYXZlZEZvcm1TdGF0
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKSwgZW5kID0gbWFwLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHRvUmV0dXJuLmFwcGVuZFZlY3RvcihpdC0+dmFsdWUt
PmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7CiAgICAgcmV0dXJuIHRvUmV0dXJuOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCAxOWJjOTUwY2FkM2JkZGE4OTJhNGRkZDcwNTExODA5M2ZhOGUwNzhj
Li4wYjM4OWFkYWJjMTc5ZWY4YTY0NjY3M2NjMGQxMjk2OGY3ZjRhMzM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
TGluZURhc2goY29uc3QgVmVjdG9yPGZsb2F0PiYgZGFzaCkKICAgICAvLyBTcGVjIHJlcXVpcmVz
IHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byBjb3BpZXMgdGhlIGRhc2ggbGlzdCB3aGVuIHRoZQog
ICAgIC8vIG51bWJlciBvZiBlbGVtZW50cyBpcyBvZGQKICAgICBpZiAoZGFzaC5zaXplKCkgJSAy
KQotICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2xpbmVEYXNoLmFwcGVuZChkYXNoKTsKKyAg
ICAgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9saW5lRGFzaC5hcHBlbmRWZWN0b3IoZGFzaCk7CiAK
ICAgICBhcHBseUxpbmVEYXNoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmluZGV4IGY2ZjlhMjhiMTRh
YTcxNzQyMmJlZDEzODgzMjI5ZTFhMjYwZTMwMDAuLjQ2ZGM1YmI4YjI5MzYwYTAyMWEyNTkwNjY1
MWZiNzQ0MDI0M2JkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9p
ZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Ojp0cnlUb0Vuc3VyZU5vYWhzQXJrQ29uZGl0aW9u
UXVpY2tseShIVE1MU3RhY2tJdGUKICAgICBpZiAoY2FuZGlkYXRlcy5zaXplKCkgPCBrTm9haHNB
cmtDYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSdzIHJvb20gZm9yIHRoZSBuZXcg
ZWxlbWVudCBpbiB0aGUgYXJrLiBUaGVyZSdzIG5vIG5lZWQgdG8gY29weSBvdXQgdGhlIHJlbWFp
bmluZ0NhbmRpZGF0ZXMuCiAKLSAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZChjYW5kaWRh
dGVzKTsKKyAgICByZW1haW5pbmdDYW5kaWRhdGVzLmFwcGVuZFZlY3RvcihjYW5kaWRhdGVzKTsK
IH0KIAogdm9pZCBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjplbnN1cmVOb2Foc0Fya0NvbmRp
dGlvbihIVE1MU3RhY2tJdGVtKiBuZXdJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRUb2tlbi5oCmluZGV4IDdmNmY4NmYzMzk3YjEwMGY1MzljY2JhNWJlZjE5MzFjMDZlNDg5NDcu
LjdjZjFhMjdkM2ZiYTQ5YzkxYzBkZTk5OGUzNzNmMTllNWIwMWJmNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6U3RhcnRUYWcpOwogICAgICAgICBpZiAoIW1f
Y2xhc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2NsYXNzZXMuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgIG1fY2xhc3Nlcy5hcHBlbmQobV9jdXJyZW50QnVmZmVyKTsKKyAgICAgICAgbV9jbGFz
c2VzLmFwcGVuZFZlY3RvcihtX2N1cnJlbnRCdWZmZXIpOwogICAgICAgICBtX2N1cnJlbnRCdWZm
ZXIuY2xlYXIoKTsKICAgICB9CiAgICAgCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpTdGFydFRhZyk7CiAgICAgICAgIG1f
YW5ub3RhdGlvbi5jbGVhcigpOwotICAgICAgICBtX2Fubm90YXRpb24uYXBwZW5kKG1fY3VycmVu
dEJ1ZmZlcik7CisgICAgICAgIG1fYW5ub3RhdGlvbi5hcHBlbmRWZWN0b3IobV9jdXJyZW50QnVm
ZmVyKTsKICAgICAgICAgbV9jdXJyZW50QnVmZmVyLmNsZWFyKCk7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCmluZGV4
IGIxOTk4YzQwN2U2M2YwYWUwODM3MDQxOWE4MDlkNTdjOWZkOTEyODYuLjVhODg0YzZiYzkxZGQx
NjVmOTFkOTJiNDdmNjU2MTcxMWQ2YzBiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0KQEAgLTQ3NSw3ICs0NzUsNyBAQCBWZWN0b3I8
U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBj
b25zdAogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkrKykKICAg
ICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOwogCi0gICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZXMpOworICAgIHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kVmVjdG9yKHBsYXRmb3JtTGFuZ3VhZ2VzKTsKIAog
ICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcAppbmRleCAwYThjYzZhYjk5OWYzY2QxZTZiMWNm
YWUwYWViMjNjZDhhZTM2OTQ3Li5mMzk5ZTA3NjQ1NjUwOTkwNzc3YmVhOGUxOWQxZTkyYWY3ZTc2
YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmNwcApA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0OjphcHBlbmQoUGFzc1Jl
ZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiBlbnRyeSkKIAogdm9pZCBQZXJmb3JtYW5jZUVudHJ5TGlz
dDo6YXBwZW5kQWxsKGNvbnN0IFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiYgZW50
cmllcykKIHsKLSAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJpZXMpOworICAgIG1fZW50cmllcy5h
cHBlbmRWZWN0b3IoZW50cmllcyk7CiB9CiAKIHZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OnNv
cnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1p
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCmlu
ZGV4IDE2ZjUyNTI5Zjk2MDg3ZmYxODk4YjcyMzc0ZDdiNGNkYjdhNGMzYzYuLmY1NTE2ZmFlYzFj
ZTllZDdhOWQxODE5Mjc3NzM3YzViM2U0YWQ3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgVmVj
dG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+IGNvbnZlcnRUb0VudHJ5U2VxdWVuY2UoY29u
c3QgUGVyZm9ybWFuYwogICAgIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPiBlbnRy
aWVzOwogCiAgICAgZm9yIChQZXJmb3JtYW5jZUVudHJ5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IHBlcmZvcm1hbmNlRW50cnlNYXAuYmVnaW4oKTsgaXQgIT0gcGVyZm9ybWFuY2VFbnRyeU1hcC5l
bmQoKTsgKytpdCkKLSAgICAgICAgZW50cmllcy5hcHBlbmQoaXQtPnZhbHVlKTsKKyAgICAgICAg
ZW50cmllcy5hcHBlbmRWZWN0b3IoaXQtPnZhbHVlKTsKIAogICAgIHJldHVybiBlbnRyaWVzOwog
fQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50
cnk+ID4gZ2V0RW50cnlTZXF1ZW5jZUJ5TmFtZShjb25zdCBQZXJmb3JtYW5jCiAKICAgICBQZXJm
b3JtYW5jZUVudHJ5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHBlcmZvcm1hbmNlRW50cnlNYXAu
ZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gcGVyZm9ybWFuY2VFbnRyeU1hcC5lbmQoKSkKLSAg
ICAgICAgZW50cmllcy5hcHBlbmQoaXQtPnZhbHVlKTsKKyAgICAgICAgZW50cmllcy5hcHBlbmRW
ZWN0b3IoaXQtPnZhbHVlKTsKIAogICAgIHJldHVybiBlbnRyaWVzOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCmluZGV4IDBmNDU3ZDEzNGU5NDRkNWY5OTcxMDE2MTM2
Y2Q1MzFhMTIyNTAyZGUuLmNkNTBlZTJhMTYyZThmY2Y4ZDAwNmI1MmNlZTdjYmM1MGE4NDg3ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTEwMyw4ICsxMDMs
OCBAQCBWZWN0b3I8U3RyaW5nPiBGaWxlQ2hvb3NlclNldHRpbmdzOjphY2NlcHRUeXBlcygpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYWNjZXB0VHlwZXM7CiAgICAgYWNjZXB0VHlwZXMu
cmVzZXJ2ZUNhcGFjaXR5KGFjY2VwdE1JTUVUeXBlcy5zaXplKCkgKyBhY2NlcHRGaWxlRXh0ZW5z
aW9ucy5zaXplKCkpOwotICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2NlcHRNSU1FVHlwZXMpOwot
ICAgIGFjY2VwdFR5cGVzLmFwcGVuZChhY2NlcHRGaWxlRXh0ZW5zaW9ucyk7CisgICAgYWNjZXB0
VHlwZXMuYXBwZW5kVmVjdG9yKGFjY2VwdE1JTUVUeXBlcyk7CisgICAgYWNjZXB0VHlwZXMuYXBw
ZW5kVmVjdG9yKGFjY2VwdEZpbGVFeHRlbnNpb25zKTsKICAgICByZXR1cm4gYWNjZXB0VHlwZXM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcAppbmRleCA1ZDc3NmFkZDhhMWMzYzE4NzUzYjY4OWQ2NjQ5NjBkNWViMWE5NWJi
Li42YTEzZmU2YjQ3NmVmNDNmMjA0YzYzZTRhNTU4ODg1NTk3Y2M3NzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayhWZWN0
b3I8Y2hhcj4mIGNodW5rLCBib29sIGluY2x1ZGVTZXBhcmF0CiAgICAgICAgICAgICBtX3NlcGFy
YXRvckluZGV4Kys7CiAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA9PSBtX3NlcGFy
YXRvci5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZVNlcGFyYXRvcikKLSAg
ICAgICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kKG1fc2VwYXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2h1bmsuYXBwZW5kVmVjdG9yKG1fc2VwYXJhdG9yKTsKICAgICAgICAgICAgICAg
ICBtX3NlcGFyYXRvckluZGV4ID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCBjNTIzODU4MGI5MTlmZGJhOTVkNTUyNGNlYWViNWIxNzQ2YjdkOGNm
Li41M2U2NzgxN2YxNDc2ZDU1ZDE3NWIyZWY2ZjYyYjc1NTlmNWYwYzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC05MDIsNyAr
OTAyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0
cmluZz4mIHNpdGVzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IGVuZ2luZVNpdGVzOwogICAgICAgICBlbmdpbmVzW2ldLT5nZXRTaXRlc0luTWVkaWFDYWNo
ZShlbmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVzLmFwcGVuZChlbmdpbmVTaXRlcyk7CisgICAg
ICAgIHNpdGVzLmFwcGVuZFZlY3RvcihlbmdpbmVTaXRlcyk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggMTJhNDc4OWM4OWE0Y2FmMDU0MzY3N2M4MzRjNDFlZDQyYWNhMWMyMy4uZWMwMGRk
NjFkMGZmNWU4NWVjMmQyNjc3NGE5NmNkZTc5ZTMwYWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTMw
LDcgKzEzMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkK
ICAgICB1bnNpZ25lZCBzaXplID0gZGlydHlUaWxlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBuID0gMDsgbiA8IHNpemU7ICsrbikgewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gcGFpbnRl
ZFJlY3RzID0gZGlydHlUaWxlc1tuXS0+dXBkYXRlQmFja0J1ZmZlcigpOwotICAgICAgICBwYWlu
dGVkQXJlYS5hcHBlbmQocGFpbnRlZFJlY3RzKTsKKyAgICAgICAgcGFpbnRlZEFyZWEuYXBwZW5k
VmVjdG9yKHBhaW50ZWRSZWN0cyk7CiAgICAgICAgIGRpcnR5VGlsZXNbbl0tPnN3YXBCYWNrQnVm
ZmVyVG9Gcm9udCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTAyMmZlMjdiMGMzNGM4
YjAxNzdjOWRhYmM3NWFiOWZiN2M2Y2YyNy4uMjEyZTkyZWQ3OGExNmE0YWM4OGJjZGJhYmM0N2Iw
ZmI0YzQ3MzdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJlYWNo
ZWQpCiAgICAgUGxhdGZvcm1DQUxheWVyTGlzdCYgY2hpbGRMaXN0Rm9yU3VibGF5ZXJzID0gbV9z
dHJ1Y3R1cmFsTGF5ZXIgPyBzdHJ1Y3R1cmFsTGF5ZXJDaGlsZHJlbiA6IHByaW1hcnlMYXllckNo
aWxkcmVuOwogCiAgICAgaWYgKGN1c3RvbVN1YmxheWVycykKLSAgICAgICAgcHJpbWFyeUxheWVy
Q2hpbGRyZW4uYXBwZW5kKCpjdXN0b21TdWJsYXllcnMpOworICAgICAgICBwcmltYXJ5TGF5ZXJD
aGlsZHJlbi5hcHBlbmRWZWN0b3IoKmN1c3RvbVN1YmxheWVycyk7CiAKICAgICBpZiAobV9zdHJ1
Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKaW5kZXgg
Njg2NGY1M2I2NjNjMzVmMDZiYmNlN2M2YzZmMjc0MDkxMGUwMTBhNy4uYzYyMWZkMzRjMjRiOGNk
YTUxZDJmZDFhN2E5ZTFiZjY0NTJkNDM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChH
ZGtFdmVudEtleSogZXZlbnQsIEV2ZW4KICNlbmRpZgogCiAgICAgaWYgKCFtX3BlbmRpbmdFZGl0
b3JDb21tYW5kcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY29tbWFuZExpc3QuYXBwZW5kKG1fcGVu
ZGluZ0VkaXRvckNvbW1hbmRzKTsKKyAgICAgICAgY29tbWFuZExpc3QuYXBwZW5kVmVjdG9yKG1f
cGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0OGQzZWJhNTFk
NGQ3NmFmNDZmN2Y0YWNmODYyYzI5NjkxOTMwNTZmLi5lNjQwZjBjOGNlYmFhZTYyNmZlOTg0ODhh
MTQ2NmU4MWMzYjhiMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmlu
Zz4gY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
czsKICAgICAKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TVElGRlBib2FyZFR5cGUpKTsKLSAg
ICB0eXBlcy5hcHBlbmQod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKKyAgICB0eXBlcy5hcHBlbmRW
ZWN0b3Iod3JpdGFibGVUeXBlc0ZvclVSTCgpKTsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5T
UlRGRFBib2FyZFR5cGUpKTsKICAgICByZXR1cm4gdHlwZXM7CiB9CkBAIC0xMTQsNyArMTE0LDcg
QEAgc3RhdGljIGlubGluZSBWZWN0b3I8U3RyaW5nPiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1h
Z2UoKQogc3RhdGljIFZlY3RvcjxTdHJpbmc+IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7CiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgdHlwZXMuYXBwZW5kKGNyZWF0ZVdyaXRhYmxl
VHlwZXNGb3JJbWFnZSgpKTsKKyAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY3JlYXRlV3JpdGFibGVU
eXBlc0ZvckltYWdlKCkpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBiCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlw
ZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xp
ZW50RGF0YSk7Ci0gICAgdHlwZXMuYXBwZW5kKGNsaWVudFR5cGVzKTsKKyAgICB0eXBlcy5hcHBl
bmRWZWN0b3IoY2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJv
YXJkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
QnVpbGRlci5jcHAKaW5kZXggNTY3YmQ2MGI5OTc0OTI3MTQzYmUyYmRhMjIwMzc4Y2Y2OTU3ZTY5
My4uMTc0NGJhYzEyY2UzYzc5NjhjYWQ3MDZjZGM4NzA0ODRjNDk1N2NhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIFZlY3RvcjxjaGFyPiBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5p
cXVlQm91bmRhcnlTdHJpbmcoKQogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoYWxwaGFOdW1l
cmljRW5jb2RpbmdNYXBbcmFuZG9tbmVzcyAmIDB4M0ZdKTsKICAgICB9CiAKLSAgICBib3VuZGFy
eS5hcHBlbmQocmFuZG9tQnl0ZXMpOworICAgIGJvdW5kYXJ5LmFwcGVuZFZlY3RvcihyYW5kb21C
eXRlcyk7CiAgICAgYm91bmRhcnkuYXBwZW5kKDApOyAvLyBBZGQgYSAwIGF0IHRoZSBlbmQgc28g
d2UgY2FuIHVzZSB0aGlzIGFzIGEgQy1zdHlsZSBzdHJpbmcuCiAgICAgcmV0dXJuIGJvdW5kYXJ5
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA0ZDBm
ZmJlYzNmMTBkZTI4NDk2Zjg2ZDAyMTJjZTMxMDgwYzg3NGFiLi4yMjIxNzI2ODVmYzk3Nzk1ZDgw
NmZmNjMwZTBhZWE3ZmEwN2IyOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFi
YXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG1velBh
dGhzOwogICAgIFN0cmluZyBtb3pQYXRoKGdldGVudigiTU9aX1BMVUdJTl9QQVRIIikpOwogICAg
IG1velBhdGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2Us
IG1velBhdGhzKTsKLSAgICBwYXRocy5hcHBlbmQobW96UGF0aHMpOworICAgIHBhdGhzLmFwcGVu
ZFZlY3Rvcihtb3pQYXRocyk7CiAjZWxpZiBkZWZpbmVkKFhQX01BQ09TWCkKICAgICBTdHJpbmcg
dXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0b3J5UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRo
LmFwcGVuZChTdHJpbmcoIi9MaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zIikpOwpAQCAtNDQ1LDcg
KzQ0NSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGly
ZWN0b3JpZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IHF0UGF0aHM7CiAgICAgU3RyaW5nIHF0UGF0
aChxZ2V0ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmNvbnN0RGF0YSgpKTsKICAgICBxdFBh
dGguc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8gZmFsc2UsIHF0UGF0
aHMpOwotICAgIHBhdGhzLmFwcGVuZChxdFBhdGhzKTsKKyAgICBwYXRocy5hcHBlbmRWZWN0b3Io
cXRQYXRocyk7CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNzAyYzRhN2E3
NDRmYWYxMzk2YjUzYzQ1ZjA4NzAzOWI4YjZlMWNhNi4uNjZjMDYyNGUxZTk0NjMyYjk3YzdmYWU0
NmU2ZmZkMTAxNmRhZGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb25zdHJ1Y3RCaWRpUnVuc0ZvclNlZ21lbnQoSW5saW5lQmlkaVJlc29sdmVyJiB0
b3BSZXNvbHZlciwKICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyZWQgYW55IG5lc3RlZCBpc29s
YXRlIHJ1bnMsIGp1c3QgbW92ZSB0aGVtCiAgICAgICAgIC8vIHRvIHRoZSB0b3AgcmVzb2x2ZXIn
cyBsaXN0IGZvciBsYXRlciBwcm9jZXNzaW5nLgogICAgICAgICBpZiAoIWlzb2xhdGVkUmVzb2x2
ZXIuaXNvbGF0ZWRSdW5zKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICB0b3BSZXNvbHZlci5p
c29sYXRlZFJ1bnMoKS5hcHBlbmQoaXNvbGF0ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7Cisg
ICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmRWZWN0b3IoaXNvbGF0
ZWRSZXNvbHZlci5pc29sYXRlZFJ1bnMoKSk7CiAgICAgICAgICAgICBpc29sYXRlZFJlc29sdmVy
Lmlzb2xhdGVkUnVucygpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGEzYTQ5
MTFjM2E5NTEwNjYzOWJkNjRkNTc2NmE0MjJhNTQ1NjJjMjcuLjUwOWI1OTFlNjg3ODZiYjk2MDJl
MmJmYmVhNDlhNDYxOGIxOGU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCiAgICAgewotICAgICAgICBtX292
ZXJsYXBTdGFja1ttX292ZXJsYXBTdGFjay5zaXplKCkgLSAyXS5hcHBlbmQobV9vdmVybGFwU3Rh
Y2subGFzdCgpKTsKKyAgICAgICAgbV9vdmVybGFwU3RhY2tbbV9vdmVybGFwU3RhY2suc2l6ZSgp
IC0gMl0uYXBwZW5kVmVjdG9yKG1fb3ZlcmxhcFN0YWNrLmxhc3QoKSk7CiAgICAgICAgIG1fb3Zl
cmxhcFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggOTIwNTk0MDU5ZThiZDRhMWVjYWE3
YTVlY2VhNmNkNWMwMmQzMjEzNC4uYmNiNjNiZDE0MDI5ZTQ3NDAxMGJkMTJlYjc1OWMzYzE1Yjky
NDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxp
dENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KQogICAgICAgICBSb3cmIHIgPSBt
X2dyaWRbcm93XS5yb3c7CiAgICAgICAgIHIuaW5zZXJ0KHBvcyArIDEsIENlbGxTdHJ1Y3QoKSk7
CiAgICAgICAgIGlmIChyW3Bvc10uaGFzQ2VsbHMoKSkgewotICAgICAgICAgICAgcltwb3MgKyAx
XS5jZWxscy5hcHBlbmQocltwb3NdLmNlbGxzKTsKKyAgICAgICAgICAgIHJbcG9zICsgMV0uY2Vs
bHMuYXBwZW5kVmVjdG9yKHJbcG9zXS5jZWxscyk7CiAgICAgICAgICAgICBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSByW3Bvc10ucHJpbWFyeUNlbGwoKTsKICAgICAgICAgICAgIEFTU0VSVChjZWxs
KTsKICAgICAgICAgICAgIEFTU0VSVChjZWxsLT5jb2xTcGFuKCkgPj0gKHJbcG9zXS5pbkNvbFNw
YW4gPyAxdSA6IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1h
cC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKaW5kZXggOTI5NDUyNjk2NTkx
ZDdhNzBiNGIxYTc3ZWIwNDY3YzcyZGQzODQ0Mi4uZDA4MzFjNGE1NjU5NGY4YjI0NDgyMGQxZWIy
ZjFmOWEyZjg4NjViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKQEAgLTEyNCw3ICsxMjQs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSZWZQdHI8R2x5cGhNYXBOb2RlPiBub2RlID0gY3Vy
cmVudExheWVyLT5nZXQoY2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGdseXBocy5hcHBlbmQobm9kZS0+Z2x5cGhz
KTsKKyAgICAgICAgICAgIGdseXBocy5hcHBlbmRWZWN0b3Iobm9kZS0+Z2x5cGhzKTsKICAgICAg
ICAgICAgIGN1cnJlbnRMYXllciA9ICZub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIHRleHRJ
dGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhOb2RlU2V0LmgKaW5kZXggYmM3NjdkNWMzOGJlZTcxMjc4Y2ExY2YwMjE3NDdmOGFhYzAwYzM1
OC4uODM5YmU4ZDhmMDQwM2Q3YTEyYzY5ZmQ0Y2QxNTdjZDMyNzhkMDQxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aE5vZGVTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBp
biBpdCBhcmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBt
X25vZGVzLmFwcGVuZChub2RlKTsgfQogICAgICAgICAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0
cjxOb2RlPiBub2RlKSB7IG1fbm9kZXMuYXBwZW5kKG5vZGUpOyB9Ci0gICAgICAgICAgICB2b2lk
IGFwcGVuZChjb25zdCBOb2RlU2V0JiBub2RlU2V0KSB7IG1fbm9kZXMuYXBwZW5kKG5vZGVTZXQu
bV9ub2Rlcyk7IH0KKyAgICAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IE5vZGVTZXQmIG5vZGVT
ZXQpIHsgbV9ub2Rlcy5hcHBlbmRWZWN0b3Iobm9kZVNldC5tX25vZGVzKTsgfQogCiAgICAgICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBzZXQncyBmaXJzdCBub2RlIGluIGRvY3VtZW50IG9yZGVyLCBv
ciAwIGlmIHRoZSBzZXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBOb2RlKiBmaXJzdE5vZGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDJlMzBiY2I3ODdlMjYyMTU2ZDYw
YTk5ZDM3OWU5MzhhMTUyMmE3ODUuLjYyNzYzNzYwZTM2MTA5NzhkYTI0ZmUyMjkyOTAzNzQwNjE3
ZWFjMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogY29ubmVjdAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmIGl0ZW1zID0g
ZGF0YS0+aXRlbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBpdGVtcy5zaXpl
KCk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmIChpdGVtc1tpXS50eXBlID09IEJsb2JE
YXRhSXRlbTo6QmxvYikKLSAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChtX3Nh
bmRib3hFeHRlbnNpb25zLmdldChpdGVtc1tpXS51cmwuc3RyaW5nKCkpKTsKKyAgICAgICAgICAg
IHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZFZlY3RvcihtX3NhbmRib3hFeHRlbnNpb25zLmdldChp
dGVtc1tpXS51cmwuc3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwodXJsLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAppbmRleCA5ZDQ2Zjc0OGJmNGMyMGZjNjlmNjBh
NWE3NTZkYTZkYTAyYWY1Y2I1Li40MjllMjY1NGJhY2IxNGQxNjNkYjVlZDU0ZGRkNGUyM2FmMDQx
NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFi
bGVMb2FkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNjaGVkdWxhYmxlTG9hZGVyOjpTY2hlZHVs
YWJsZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1lCiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgPT0gRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkQmxvYikgewogICAgICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4gPiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7Ci0g
ICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZChibG9i
RWxlbWVudEV4dGVuc2lvbnMpOworICAgICAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94
RXh0ZW5zaW9ucy5hcHBlbmRWZWN0b3IoYmxvYkVsZW1lbnRFeHRlbnNpb25zKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDdhMDg0YzZhOTU5Y2U2OGFlMTBiZmIwMjViOGIyZWQw
NTUzZWI4NDkuLjVkZDA3NGE1ZTI4OTM0MzYyN2FlODZmM2Y0N2E1NzViYjhlM2FjZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6ZGlzcGF0Y2hN
ZXNzYWdlcyhDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvCiAKICAgICBpZiAoIW1lc3NhZ2Vz
VG9QdXRCYWNrLmlzRW1wdHkoKSkgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRl
eCk7Ci0gICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5
LmFwcGVuZChtZXNzYWdlc1RvUHV0QmFjayk7CisgICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNo
V2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZFZlY3RvcihtZXNzYWdlc1RvUHV0QmFjayk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCBkNGM5ZWMyYzVmMmU1
MmZmMGFjYTQ1OWJlNzQyNmMzMWE5ZmEzZTRjLi4zNzI2NDAxZjZjY2M2M2I1ZDlkM2FjNmE3MTVh
MTkwODEyZGNhYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVnaW5zRGlyZWN0b3JpZXMoKQog
ICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBwYXRoczsKICAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIC8qIGFsbG93
RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocGF0
aHMpOworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBhdGhzKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDg5MzdjMzZjZGJlOGE4NTM4MzljMjczZmY4N2M1YjZlMmI4OWIwODIuLmQ4MTEy
ZThkYThhMTRhNjM0YzU1YTEwODYxODFkNzlkYzc4NzQxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNS0w
NSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgVmVjdG9yOjphcHBlbmQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFZlY3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rvcjo6YXBw
ZW5kVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKGNvbmNhdGVuYXRlQXR0cmlidXRlQW5k
VmFsdWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OmNvbmNhdGVuYXRlQXR0
cmlidXRlQW5kVmFsdWUpOgorCiAyMDEzLTA1LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTQ4MzEyKTogQ3Jhc2ggd2hlbiBjYWxsaW5nIFdL
UGFnZUNsb3NlKHBhZ2UpIGZvbGxvd2VkIGJ5IFdLUGFnZVRlcm1pbmF0ZShwYWdlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bQppbmRleCAzNTNlYThkNjdjOTNkOTY5NjNkMWFhYjQ4NWEyZGFlYTRkZmU2NTA3Li42NTE1NzVm
MjQzZmU5ZjM0ZjcxNDYyODJiNTQ1YjYzNDljMjU2MzA2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTYyLDcg
KzE2Miw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVl
KE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBWZWN0b3I8VW5pQ2hhcj4g
dmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBnZXRDaGFyYWN0ZXJzOnZh
bHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1ZUJ1ZmZlcik7CisgICAg
YnVmZmVyLmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDhhOTU1MWM4NWZh
OGE4N2JkZTQwNWEzOTdhZjVlODAyMGU4Yjk5MTYuLjgwNTE5OTlmZDQyN2NlMTk2YTg2OWJmYzMy
YWI0N2EwNGUyYjI4MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2CiAKICAgICBW
ZWN0b3I8VW5pQ2hhcj4gdmFsdWVCdWZmZXIoW3ZhbHVlIGxlbmd0aF0pOwogICAgIFt2YWx1ZSBn
ZXRDaGFyYWN0ZXJzOnZhbHVlQnVmZmVyLmRhdGEoKV07Ci0gICAgYnVmZmVyLmFwcGVuZCh2YWx1
ZUJ1ZmZlcik7CisgICAgYnVmZmVyLmFwcGVuZFZlY3Rvcih2YWx1ZUJ1ZmZlcik7CiAKICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKIH0K
</data>
<flag name="review"
          id="221999"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>