<?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>99365</bug_id>
          
          <creation_ts>2012-10-15 14:14:13 -0700</creation_ts>
          <short_desc>Add MessageEncoder and MessageDecoder subclasses</short_desc>
          <delta_ts>2012-10-17 17:36:24 -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>abecsi</cc>
    
    <cc>cabanier</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742420</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-15 14:14:13 -0700</bug_when>
    <thetext>Add MessageEncoder and MessageDecoder subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742437</commentid>
    <comment_count>1</comment_count>
      <attachid>168780</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-15 14:20:56 -0700</bug_when>
    <thetext>Created attachment 168780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742504</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-15 15:18:36 -0700</bug_when>
    <thetext>Attachment 168780 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:193:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:254:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:256:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:343:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742551</commentid>
    <comment_count>3</comment_count>
      <attachid>168798</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-15 16:09:10 -0700</bug_when>
    <thetext>Created attachment 168798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742553</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-15 16:10:23 -0700</bug_when>
    <thetext>Attachment 168798 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:193:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:254:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:256:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:343:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742664</commentid>
    <comment_count>5</comment_count>
      <attachid>168825</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-15 17:58:06 -0700</bug_when>
    <thetext>Created attachment 168825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742743</commentid>
    <comment_count>6</comment_count>
      <attachid>168825</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-15 20:15:40 -0700</bug_when>
    <thetext>Comment on attachment 168825
Patch

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

&gt; Source/WebKit2/Platform/CoreIPC/Connection.h:412
&gt; +    OwnPtr&lt;MessageEncoder&gt; encoder = MessageEncoder::create(&quot;&quot;, &quot;&quot;, destinationID);

Is this an efficient idiom? Seems possibly costly to create the two CString objects each time.

&gt; Source/WebKit2/Platform/CoreIPC/MessageDecoder.h:30
&gt; +#include &quot;DataReference.h&quot;

Why include this instead of forward-declaring it?

&gt; Source/WebKit2/Platform/CoreIPC/MessageDecoder.h:32
&gt; +#include &lt;wtf/PassOwnPtr.h&gt;
&gt; +#include &lt;wtf/text/CString.h&gt;

These includes are not needed.

&gt; Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33
&gt; +    PassOwnPtr&lt;MessageEncoder&gt; MessageEncoder::create(const CString&amp; messageReceiverName, const CString&amp; messageName, uint64_t destinationID)

Xcode indented this for you and you forgot to undo that.

&gt; Source/WebKit2/Platform/CoreIPC/MessageEncoder.h:30
&gt; +#include &lt;wtf/Forward.h&gt;

I don’t think this include is needed.

&gt; Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp:374
&gt;              // FIXME: Disconnect.
&gt; +            ASSERT_NOT_REACHED();

How can both of these lines be true? If this can’t be reached, then why do we need to disconnect? If this can be reached, then it’s not right to assert, is it?

&gt; Source/WebKit2/Scripts/webkit2/messages.py:505
&gt; +            result.append(&apos;    bool result = m_connection-&gt;sendSyncReply(adoptPtr(static_cast&lt;CoreIPC::MessageEncoder*&gt;(m_arguments.leakPtr())));\n&apos;)

We should overload static_pointer_cast for PassOwnPtr like we do for RefPtr, so you don’t have to leakPtr and adoptPtr just to cast.

&gt; Source/WebKit2/Scripts/webkit2/messages_unittest.py:327
&gt; -    class ArgumentEncoder;
&gt; +    class MessageEncoder;
&gt;      class Connection;

This was sorted alphabetically. Would be nice to keep it so.

&gt; Source/WebKit2/Scripts/webkit2/messages_unittest.py:658
&gt; +    bool result = m_connection-&gt;sendSyncReply(adoptPtr(static_cast&lt;CoreIPC::MessageEncoder*&gt;(m_arguments.leakPtr())));

Same thought about static_pointer_cast as above.

&gt; Source/WebKit2/Scripts/webkit2/messages_unittest.py:677
&gt; +    bool result = m_connection-&gt;sendSyncReply(adoptPtr(static_cast&lt;CoreIPC::MessageEncoder*&gt;(m_arguments.leakPtr())));

Same thought about static_pointer_cast as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742774</commentid>
    <comment_count>7</comment_count>
      <attachid>168825</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-15 21:13:03 -0700</bug_when>
    <thetext>Comment on attachment 168825
Patch

Attachment 168825 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14289872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742777</commentid>
    <comment_count>8</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-10-15 21:23:13 -0700</bug_when>
    <thetext>Attachment 168825 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/Target.pri&apos;, u&apos;Source/WebKi...&quot; exit_code: 1
WARNING: Patch&apos;s size is 79 kbytes.
Patches 20k or smaller are more likely to be reviewed. Larger patches may sit unreviewed for a long time.
Source/WebKit2/Platform/CoreIPC/Connection.h:193:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:254:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:256:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:343:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743541</commentid>
    <comment_count>9</comment_count>
      <attachid>169021</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-16 14:06:13 -0700</bug_when>
    <thetext>Created attachment 169021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743548</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 14:11:11 -0700</bug_when>
    <thetext>Attachment 169021 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:193:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:254:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:256:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:343:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743638</commentid>
    <comment_count>11</comment_count>
      <attachid>169021</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-16 15:28:37 -0700</bug_when>
    <thetext>Comment on attachment 169021
Patch

Attachment 169021 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14384340</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743738</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-16 17:24:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 168825 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168825&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/Connection.h:412
&gt; &gt; +    OwnPtr&lt;MessageEncoder&gt; encoder = MessageEncoder::create(&quot;&quot;, &quot;&quot;, destinationID);
&gt; 
&gt; Is this an efficient idiom? Seems possibly costly to create the two CString objects each time.

Compared to the overhead of a message send I think it&apos;s fine. If we had a StringReference class (pointer + length) it would be even better. 

&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/MessageDecoder.h:30
&gt; &gt; +#include &quot;DataReference.h&quot;
&gt; 
&gt; Why include this instead of forward-declaring it?

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/MessageDecoder.h:32
&gt; &gt; +#include &lt;wtf/PassOwnPtr.h&gt;
&gt; &gt; +#include &lt;wtf/text/CString.h&gt;
&gt; 
&gt; These includes are not needed.

I&apos;m planning to add the message receiver name + message name as member variables, so the CString.h include will be required in the future. However, there&apos;s no need to add it now so I moved it to the .cpp file.


&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/MessageEncoder.cpp:33
&gt; &gt; +    PassOwnPtr&lt;MessageEncoder&gt; MessageEncoder::create(const CString&amp; messageReceiverName, const CString&amp; messageName, uint64_t destinationID)
&gt; 
&gt; Xcode indented this for you and you forgot to undo that.
&gt; 

Fixed.

&gt; &gt; Source/WebKit2/Platform/CoreIPC/MessageEncoder.h:30
&gt; &gt; +#include &lt;wtf/Forward.h&gt;
&gt; 
&gt; I don’t think this include is needed.

It&apos;s needed for the CString using declaration.

&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp:374
&gt; &gt;              // FIXME: Disconnect.
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; How can both of these lines be true? If this can’t be reached, then why do we need to disconnect? If this can be reached, then it’s not right to assert, is it?

Good point. I added it as a reminder to myself but the FIXME is good enough.

&gt; 
&gt; &gt; Source/WebKit2/Scripts/webkit2/messages.py:505
&gt; &gt; +            result.append(&apos;    bool result = m_connection-&gt;sendSyncReply(adoptPtr(static_cast&lt;CoreIPC::MessageEncoder*&gt;(m_arguments.leakPtr())));\n&apos;)
&gt; 
&gt; We should overload static_pointer_cast for PassOwnPtr like we do for RefPtr, so you don’t have to leakPtr and adoptPtr just to cast.

I agree. Will fix.

&gt; 
&gt; &gt; Source/WebKit2/Scripts/webkit2/messages_unittest.py:327
&gt; &gt; -    class ArgumentEncoder;
&gt; &gt; +    class MessageEncoder;
&gt; &gt;      class Connection;
&gt; 
&gt; This was sorted alphabetically. Would be nice to keep it so.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743751</commentid>
    <comment_count>13</comment_count>
      <attachid>169065</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-16 17:56:49 -0700</bug_when>
    <thetext>Created attachment 169065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743755</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 18:00:29 -0700</bug_when>
    <thetext>Attachment 169065 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/Platform/CoreIPC/Connection.h:194:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:255:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:258:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:344:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 6 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743763</commentid>
    <comment_count>15</comment_count>
      <attachid>169065</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-16 18:24:33 -0700</bug_when>
    <thetext>Comment on attachment 169065
Patch

Attachment 169065 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14389378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743779</commentid>
    <comment_count>16</comment_count>
      <attachid>169065</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-16 18:46:01 -0700</bug_when>
    <thetext>Comment on attachment 169065
Patch

Attachment 169065 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14395349</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743786</commentid>
    <comment_count>17</comment_count>
      <attachid>169065</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-16 19:01:45 -0700</bug_when>
    <thetext>Comment on attachment 169065
Patch

Attachment 169065 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14392372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744369</commentid>
    <comment_count>18</comment_count>
      <attachid>169208</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-17 10:28:10 -0700</bug_when>
    <thetext>Created attachment 169208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744370</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 10:30:06 -0700</bug_when>
    <thetext>Attachment 169208 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:194:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:255:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:258:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:344:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 5 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744498</commentid>
    <comment_count>20</comment_count>
      <attachid>169208</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-17 12:30:29 -0700</bug_when>
    <thetext>Comment on attachment 169208
Patch

Attachment 169208 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14386675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744617</commentid>
    <comment_count>21</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-17 14:28:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 169208 [details])
&gt; Attachment 169208 [details] did not pass efl-ews (efl):
&gt; Output: http://queues.webkit.org/results/14386675

Something is wrong with the EFL build scripts - they won&apos;t rebuild anything when the message scripts are changed. I&apos;ll make a tiny change to the .messages.in files to work around this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744619</commentid>
    <comment_count>22</comment_count>
      <attachid>169262</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-17 14:30:18 -0700</bug_when>
    <thetext>Created attachment 169262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744621</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 14:34:03 -0700</bug_when>
    <thetext>Attachment 169262 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/Platform/CoreIPC/Connection.h:194:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:255:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:257:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:258:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/Platform/CoreIPC/Connection.h:344:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 5 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744845</commentid>
    <comment_count>24</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-17 17:36:24 -0700</bug_when>
    <thetext>Committed r131679: &lt;http://trac.webkit.org/changeset/131679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168780</attachid>
            <date>2012-10-15 14:20:56 -0700</date>
            <delta_ts>2012-10-15 16:09:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121015141946.patch</filename>
            <type>text/plain</type>
            <size>84189</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLmU5YzY3NTZkMGRkZWY0MGM2NzE1MjgxYmFmMDJkOGNlOGU2YjMz
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCw5ICsyOCw5IEBACiAjaWZuZGVmIENvbm5lY3Rpb25faAogI2RlZmluZSBDb25uZWN0aW9u
X2gKIAotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBkb3VibGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
Y3JlYXRlU3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSAwKTsKLSAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+
KTsKKyAgICBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVz
c2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElE
KTsKKyAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5j
UmVwbHkoUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHZhcmlhbnRzIG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRl
ZC4KICAgICAvLyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQg
dGFrZSBhIG1lc3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIH07
CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2lu
Z01lc3NhZ2U7CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01l
c3NhZ2U7CiAKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2Vy
dmVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwx
NCArMjUxLDE0IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUg
dGltZW91dCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2Uo
TWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAg
Ci0gICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwg
ZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093
blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0
LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVj
b2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNv
bm5lY3Rpb24gd29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0lu
Y29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rl
cj4pOworICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNs
aWVudCopOwogICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVu
dCopOwpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRn
b2luZ01lc3NhZ2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01l
c3NhZ2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJv
b2wgc2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNv
ZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0
cjxNZXNzYWdlRW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAg
Ci0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwor
ICAgIHR5cGVkZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENv
bm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNo
U3luY01lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhy
ZWFkLgpAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2Fn
ZU11dGV4OwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3Vt
ZW50RGVjb2Rlcio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFw
OwogCiAgICAgLy8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2Fp
dGluZyBvbiBhIHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3
ICszMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxs
IGJlIG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAg
ICAgLy8gbWVzc2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVy
KiByZXBseURlY29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAK
ICAgICAgICAgLy8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVj
ZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5
OwpAQCAtMzQwLDkgKzM0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkK
KyAgICAgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2Rlcigp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0g
YWRvcHRQdHIocmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gcmVwbHkgPSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNv
ZGVyID0gMDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2Uo
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
cmVhZEJ1ZmZlcjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1
bWVudEVuY29kZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdl
RW5jb2Rlcj4gbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0
YXRlOwogICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCkBAIC00MDksMjIgKzQwOSwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0
ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsK
KyAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3Jl
YXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Up
OwogICAgIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwg
YXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwg
bWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQg
c3luY1NlbmRGbGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBP
d25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2Fn
ZUFyZ3VtZW50RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIs
ICIiLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUg
dGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShtZXNzYWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBO
b3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJn
dW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6
Om1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRp
bWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVx
dWVzdElELCBlbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAg
aWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQz
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3Rp
bmF0aW9uSUQsIHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9
IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NDQ5LDEzICs0NDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KIGlubGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3Nh
Z2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBV
JiByZXBseSwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRl
U3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7
CisgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKCIiLCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShh
cmd1bWVudHMpOworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8v
IE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQo
bWVzc2FnZUlEKSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGlt
ZW91dCk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3lu
Y01lc3NhZ2UoTWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVs
ZWFzZSgpLCB0aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIApAQCAtNDY2LDEwICs0NjYsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlv
bjo6ZGVwcmVjYXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LAogdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVw
cmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQm
IGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29k
ZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVu
dEVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2Uo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMGE3NjQy
YzQwNTkxZTM5ZDljMzFmMWNiYWNhOWUxNjkzMTg4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZURlY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK1Bhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVm
ZmVyKQoreworICAgIERlcXVlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50cykpOworfQorCitQ
YXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IERh
dGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50
cykpOworfQorCitNZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKCkKK3sKK30KKworTWVz
c2FnZURlY29kZXI6Ok1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwg
RGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorICAgIDogQXJndW1lbnREZWNvZGVyKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGF0dGFjaG1lbnRzKQoreworICAgIENTdHJpbmcg
bWVzc2FnZVJlY2VpdmVyTmFtZTsKKyAgICBpZiAoIWRlY29kZShtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1N0cmluZyBtZXNzYWdlTmFtZTsKKyAgICBpZiAo
IWRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGRlY29kZVVJbnQ2
NChtX2Rlc3RpbmF0aW9uSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFkZTIxYjJmMTg3ZmY1ZWVhOTc3OWQ3YjYzMTRlMmY1ZmFkM2ZlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdlRGVjb2Rlcl9oCisj
ZGVmaW5lIE1lc3NhZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworCitj
bGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29kZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRGF0YVJl
ZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
KyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRlOgorICAgIE1lc3NhZ2VE
ZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VEZWNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTViYWNkMGM3Yzg4MTE1MzA1OTY3M2VlYmI1N2RjYjkwMjY1M2Zi
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworICAgIFBhc3NPd25QdHI8TWVz
c2FnZUVuY29kZXI+IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlRW5jb2RlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCkpOworfQorCitNZXNz
YWdlRW5jb2Rlcjo6TWVzc2FnZUVuY29kZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgZW5jb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIGVuY29kZShtZXNzYWdl
TmFtZSk7CisgICAgZW5jb2RlKGRlc3RpbmF0aW9uSUQpOworfQorCitNZXNzYWdlRW5jb2Rlcjo6
fk1lc3NhZ2VFbmNvZGVyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhODc4NTBiOTliYzNhYzU2NTQwMDNlYjc1ZDBhZmU3N2U2MzU5YWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVzc2FnZUVuY29kZXJfaAor
I2RlZmluZSBNZXNzYWdlRW5jb2Rlcl9oCisKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK2NsYXNz
IE1lc3NhZ2VFbmNvZGVyIDogcHVibGljIEFyZ3VtZW50RW5jb2RlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGNyZWF0ZShjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisgICAgdmlydHVhbCB+TWVzc2FnZUVuY29kZXIoKTsKKworcHJpdmF0
ZToKKyAgICBNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VFbmNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgK
aW5kZXggZTJiYTBiNTZmNWE1MTNkMTAxZGRiOTE3ZWJkNjg1MGQzOTNmMjQ4Zi4uNzQzODEwNTBj
N2RkN2Q1NmFmMWE0ZTEyYzIwNGVjOWY2M2IzNDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBwdWJs
aWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICB7Ci0gICAgICAgIE93blB0cjxBcmd1bWVu
dEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3Rp
bmF0aW9uSUQpOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAg
ICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNy
ZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5z
ZW5kTWVzc2FnZShNZXNzYWdlSUQoVTo6bWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4odGhpcyktPnNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxB
cmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlcikKKyAgICBib29sIHNlbmRNZXNzYWdlKE1l
c3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiAg
ICAgewogICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLT5jb25uZWN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKIAotICAgICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudEVuY29k
ZXIpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBl
bmNvZGVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5j
KGNvbnN0IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgZG91Ymxl
IHRpbWVvdXQgPSBDb25uZWN0aW9uOjpOb1RpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDcyOTg5ZGRh
MDFhYTMxZTE5YTQ0NjY2Y2VjODhlYWMxZmU1ZTc0YTUuLjhkNDIzN2NjZjc3NmQ4ZTJhYmQ3MGFl
ODdmNTc2ZmNiOTc0ZDQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgT3duUHRyPEFy
Z3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUo
MCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93blB0cjxNZXNzYWdlRW5j
b2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCAwKTsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNz
YWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOwor
ICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OkluaXRpYWxpemVD
b25uZWN0aW9uKSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgZGVh
ZCBuYW1lIGhhbmRsZXIgZm9yIG91ciBzZW5kIHBvcnQuCiAgICAgICAgIGluaXRpYWxpemVEZWFk
TmFtZVNvdXJjZSgpOwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVu
KCkKICAgICBpZiAobV9leGNlcHRpb25Qb3J0KSB7CiAgICAgICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9leGNlcHRpb25Qb3J0LCBXb3JrUXVldWU6
Ok1hY2hQb3J0RGF0YUF2YWlsYWJsZSwgYmluZCgmQ29ubmVjdGlvbjo6ZXhjZXB0aW9uU291cmNl
RXZlbnRIYW5kbGVyLCB0aGlzKSk7CiAKLSAgICAgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
YXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7Ci0gICAgICAgIGFy
Z3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIDApOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OwogCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6U2V0RXhj
ZXB0aW9uUG9ydCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAgICBzZW5kTWVz
c2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBlbmNvZGVy
LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTcsOSArMTU3LDkg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBh
cmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlE
IG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICBW
ZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBhcmd1bWVudHMtPnJlbGVhc2VBdHRhY2ht
ZW50cygpOworICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IGVuY29kZXItPnJl
bGVhc2VBdHRhY2htZW50cygpOwogICAgIAogICAgIHNpemVfdCBudW1iZXJPZlBvcnREZXNjcmlw
dG9ycyA9IDA7CiAgICAgc2l6ZV90IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMgPSAwOwpA
QCAtMTcxLDE0ICsxNzEsMTQgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgICAg
IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMrKzsKICAgICB9CiAgICAgCi0gICAgc2l6ZV90
IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCBu
dW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7Cisg
ICAgc2l6ZV90IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGVuY29kZXItPmJ1ZmZlclNp
emUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRv
cnMpOwogICAgIGNoYXIgYnVmZmVyW2lubGluZU1lc3NhZ2VNYXhTaXplXTsKIAogICAgIGJvb2wg
bWVzc2FnZUJvZHlJc09PTCA9IGZhbHNlOwogICAgIGlmIChtZXNzYWdlU2l6ZSA+IHNpemVvZihi
dWZmZXIpKSB7CiAgICAgICAgIG1lc3NhZ2VCb2R5SXNPT0wgPSB0cnVlOwogCi0gICAgICAgIGF0
dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJUVUFMX0NPUFksIGZhbHNlKSk7CisgICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVy
LT5idWZmZXJTaXplKCksIE1BQ0hfTVNHX1ZJUlRVQUxfQ09QWSwgZmFsc2UpKTsKICAgICAgICAg
bnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycysrOwogICAgICAgICBtZXNzYWdlU2l6ZSA9IG1h
Y2hNZXNzYWdlU2l6ZSgwLCBudW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1v
cnlEZXNjcmlwdG9ycyk7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RW5jCiAKICAgICAvLyBDb3B5IHRoZSBkYXRhIGlmIGl0IGlzIG5vdCBiZWluZyBzZW50
IG91dC1vZi1saW5lLgogICAgIGlmICghbWVzc2FnZUJvZHlJc09PTCkKLSAgICAgICAgbWVtY3B5
KG1lc3NhZ2VEYXRhLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUo
KSk7CisgICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSk7CiAKICAgICBBU1NFUlQobV9zZW5kUG9ydCk7CiAgICAgCkBAIC0y
NTEsMTQgKzI1MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVEZWFkTmFtZVNvdXJj
ZSgpCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlciht
X3NlbmRQb3J0LCBXb3JrUXVldWU6Ok1hY2hQb3J0RGVhZE5hbWVOb3RpZmljYXRpb24sIGJpbmQo
JkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IGNyZWF0ZUFyZ3VtZW50RGVjb2RlcihtYWNoX21zZ19o
ZWFkZXJfdCogaGVhZGVyKQorc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiB7CiAgICAgaWYgKCEo
aGVhZGVyLT5tc2doX2JpdHMgJiBNQUNIX01TR0hfQklUU19DT01QTEVYKSkgewogICAgICAgICAv
LyBXZSBoYXZlIGEgc2ltcGxlIG1lc3NhZ2UuCi0gICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhl
YWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYm9keSwg
Ym9keVNpemUpKTsKKyAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUg
LSBzaXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOworCisgICAgICAgIHJldHVybiBNZXNzYWdlRGVj
b2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UoYm9keSwgYm9keVNpemUpKTsKICAgICB9CiAKICAg
ICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgJiBNZXNzYWdlQm9keUlz
T09MOwpAQCAtMzAzLDIyICszMDMsMjIgQEAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBjcmVhdGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWQKICAgICAg
ICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUg
PSBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpOwogCi0gICAgICAgIEFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnREZWNvZGVyOworICAgICAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29k
ZXI7CiAKICAgICAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFy
Z3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VC
b2R5U2l6ZSk7CisgICAgICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShE
YXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNz
YWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRhY2htZW50cyk7CisgICAgICAgICAgICBkZWNv
ZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7CiAKICAgICAgICAgdm1fZGVhbGxvY2F0ZSht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0YWNobWVudC5zaXplKCkpOwog
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihhcmd1bWVudERlY29kZXIpOworICAgICAgICByZXR1
cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5t
c2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPiho
ZWFkZXIpKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplKSwgYXR0YWNobWVudHMpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91
bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAtMzYwLDggKzM2
MCw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIE1lc3NhZ2VJRCBtZXNzYWdlSUQgPSBNZXNzYWdlSUQ6OmZyb21J
bnQoaGVhZGVyLT5tc2doX2lkKTsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVu
dHMgPSBjcmVhdGVBcmd1bWVudERlY29kZXIoaGVhZGVyKTsKLSAgICBBU1NFUlQoYXJndW1lbnRz
KTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVNZXNzYWdlRGVj
b2RlcihoZWFkZXIpOworICAgIEFTU0VSVChkZWNvZGVyKTsKIAogICAgIGlmIChtZXNzYWdlSUQg
PT0gTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbikpIHsKICAg
ICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwpAQCAtMzY5LDggKzM2OSw5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVCghbV9zZW5k
UG9ydCk7CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShwb3J0KSkgeworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwb3J0KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IERpc2Nvbm5lY3QuCisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zOTAsMTQg
KzM5MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQog
CiAgICAgaWYgKG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2Vw
dGlvblBvcnQpKSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHNldE1hY2hFeGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1
bWVudHMucmVsZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwg
ZGVjb2Rlci5yZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25T
b3VyY2VFdmVudEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkx
Y2FhZjZmY2NkZjkxYjIyYzMxODI0OS4uMmQ1ODU2NzdkN2Y1ODBhYTYyNTJjZTlkZmE3OGFhYWQ4
ZWZkMDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMjgyLDEzICsyODEsMTMgQEAgYm9vbCBDb25uZWN0
aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlP
T0woKSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihv
b2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRE
ZWNvZGVyOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoYXR0
YWNobWVudHMuaXNFbXB0eSgpKQotICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1l
bnREZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICAgICAg
ZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSkpOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgYXR0YWNobWVudHMpOworICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6
OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgp
KSwgYXR0YWNobWVudHMpOwogCi0gICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShtZXNzYWdlSW5m
by5tZXNzYWdlSUQoKSwgYWRvcHRQdHIoYXJndW1lbnREZWNvZGVyKSk7CisgICAgcHJvY2Vzc0lu
Y29taW5nTWVzc2FnZShtZXNzYWdlSW5mby5tZXNzYWdlSUQoKSwgZGVjb2Rlci5yZWxlYXNlKCkp
OwogCiAgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPiBtZXNzYWdlTGVuZ3RoKSB7CiAgICAgICAg
IG1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3Nh
Z2VMZW5ndGgsIG1fcmVhZEJ1ZmZlclNpemUgLSBtZXNzYWdlTGVuZ3RoKTsKQEAgLTQ0MSw3ICs0
NDAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMo
KSBjb25zdAogICAgIHJldHVybiBtX2lzQ29ubmVjdGVkOwogfQogCi1ib29sIENvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1
bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyKQogewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChtX3NvY2tldE5vdGlmaWVyKTsK
QEAgLTQ0OSw3ICs0NDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91bnQgKiBzaXpl
b2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01lc3NhZ2VJbmxp
bmUpOwogCi0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gYXJndW1lbnRzLT5y
ZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMg
PSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICBBdHRhY2htZW50UmVzb3VyY2VH
dWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0
dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRzLnNp
emUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkpIHsKQEAgLTQ1NywxMCArNDU2LDEwIEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBNZXNzYWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGFyZ3VtZW50cy0+YnVmZmVy
U2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOwotICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhC
b2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBz
aXplb2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwotICAgIGlm
IChtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4gbWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRz
LT5idWZmZXJTaXplKCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBv
b2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5i
dWZmZXJTaXplKCkpOworICAgIE1lc3NhZ2VJbmZvIG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOworICAgIHNpemVfdCBtZXNz
YWdlU2l6ZVdpdGhCb2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50
cy5zaXplKCkgKiBzaXplb2YoQXR0YWNobWVudEluZm8pKSArIGVuY29kZXItPmJ1ZmZlclNpemUo
KTsKKyAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYm
IGVuY29kZXItPmJ1ZmZlclNpemUoKSkgeworICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShlbmNv
ZGVyLT5idWZmZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NzAsNyArNDY5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJn
dW1lbnRFbmMKIAogICAgICAgICBtZXNzYWdlSW5mby5zZXRNZXNzYWdlQm9keU9PTCgpOwogCi0g
ICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9keS0+ZGF0YSgpLCBhcmd1bWVudHMtPmJ1ZmZlcigp
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSk7CisgICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9k
eS0+ZGF0YSgpLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKIAog
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoaGFuZGxlLnJlbGVhc2VUb0F0dGFjaG1lbnQoKSk7
CiAgICAgfQpAQCAtNTQwLDkgKzUzOSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
ICAgICsraW92TGVuZ3RoOwogICAgIH0KIAotICAgIGlmICghbWVzc2FnZUluZm8uaXNNZXNzYWdl
Qm9keU9PTCgpICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJndW1lbnRzLT5idWZm
ZXIoKSk7Ci0gICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9sZW4gPSBhcmd1bWVudHMtPmJ1ZmZl
clNpemUoKTsKKyAgICBpZiAoIW1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBlbmNv
ZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihlbmNvZGVyLT5idWZmZXIoKSk7CisgICAgICAgIGlvdltp
b3ZMZW5ndGhdLmlvdl9sZW4gPSBlbmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgICsraW92
TGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBmNTFhZDA3OWFiNzA3ZjdiYmEwZTBhNTg5
YTQwYWEzZWZkNzQyMTk1Li4zMjMzZGQ3MWU5YjBiZTlmNzA4MDFmNWI5NTQxM2MxOWEwNDE2Y2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIkJpbmFyeVNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTcyLDcgKzE3MSw4IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgICAgIHVuc2lnbmVkIG1lc3Nh
Z2VJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obV9yZWFkQnVmZmVyLmRhdGEoKSAr
IHJlYWxCdWZmZXJTaXplKTsKIAotICAgICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShN
ZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlEKSwgYWRvcHRQdHIobmV3IEFyZ3VtZW50RGVjb2Rl
cihtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0
YVJlZmVyZW5jZShtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlE
KSwgZGVjb2Rlci5yZWxlYXNlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBvdXQg
dGhlIHNpemUgb2YgdGhlIG5leHQgbWVzc2FnZSBpbiB0aGUgcGlwZSAoaWYgdGhlcmUgaXMgb25l
KSBzbyB0aGF0IHdlIGNhbiByZWFkCkBAIC0yNDcsOSArMjQ3LDkgQEAgdm9pZCBDb25uZWN0aW9u
Ojp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28gd2UgYXJlIG5v
dyBkb25lIHdpdGggaXRzIGFyZ3VtZW50cy4gQ2xlYXJpbmcgdGhpcyBtZW1iZXIKKyAgICAvLyBU
aGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHNvIHdlIGFyZSBub3cgZG9uZSB3aXRoIGl0
cyBlbmNvZGVyLiBDbGVhcmluZyB0aGlzIG1lbWJlcgogICAgIC8vIHdpbGwgYWxsb3cgdXMgdG8g
c2VuZCBtZXNzYWdlcyBhZ2Fpbi4KLSAgICBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50cyA9IG51bGxw
dHI7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdyB0
aGF0IHRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHRyeSB0byBzZW5kIGEg
bmV3IG1lc3NhZ2UuCiAgICAgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKQEAgLTI3NCwyNCArMjc0
LDI0IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBhbGxvdyBzZW5kaW5nIG9uZSBhc3luY2hyb25vdXMg
bWVzc2FnZSBhdCBhIHRpbWUuIElmIHdlIHdhbnRlZCB0byBzZW5kIG1vcmUgdGhhbiBvbmUKICAg
ICAvLyBhdCBvbmNlLCB3ZSdkIGhhdmUgdG8gdXNlIG11bHRpcGxlIE9WRVJMQVBQRUQgc3RydWN0
dXJlcyBhbmQgaG9sZCBvbnRvIG11bHRpcGxlIHBlbmRpbmcKLSAgICAvLyBBcmd1bWVudEVuY29k
ZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3VzIG1lc3Nh
Z2UpLgotICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVBcmd1bWVudHM7CisgICAgLy8gTWVzc2Fn
ZUVuY29kZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3Vz
IG1lc3NhZ2UpLgorICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogfQogCi1ib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFz
c093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyKQogewotICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVBcmd1bWVudHMp
OworICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKIAogICAgIC8vIEp1c3QgYmFp
bCBpZiB0aGUgaGFuZGxlIGhhcyBiZWVuIGNsb3NlZC4KICAgICBpZiAobV9jb25uZWN0aW9uUGlw
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgYXJndW1lbnRzLT5lbmNvZGVVSW50
MzIobWVzc2FnZUlELnRvSW50KCkpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihtZXNzYWdl
SUQudG9JbnQoKSk7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIAotICAg
IGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBh
cmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBpZiAoOjpX
cml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1
ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKICAgICAgICAgLy8gV2Ugc3VjY2Vzc2Z1
bGx5IHNlbnQgdGhpcyBtZXNzYWdlLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDksOSArMzA5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xk
IG9udG8gdGhlIGFyZ3VtZW50cyBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgZGVzdHJveWVkCisgICAg
Ly8gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBz
byB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29t
cGxldGVzLgotICAgIG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIG1f
cGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXI7CiAKICAgICAvLyBXZSBjYW4gb25seSBzZW5k
IG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRm
b3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCBjOGEwYWI5MmFiOTBiZDdm
N2VkNzIzNWU2OTBkM2I0ODgwMjlhODUyLi5iZTllZTZkZjdkMGFmMjY0ZDE1Y2ViMjBjOWFjMTE5
MjYwOTA2M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CkBAIC01MDIsNyArNTAyLDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgQVNTRVJUKG1fYXJndW1lbnRzKTtcbicpCiAgICAgICAgICAgICByZXN1bHQgKz0g
WycgICAgbV9hcmd1bWVudHMtPmVuY29kZSglcyk7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29s
IHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShtX2FyZ3VtZW50cy5yZWxlYXNl
KCkpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpN
ZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTtcbicpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHJlc3VsdDtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IGRkOWZiZWNjM2YxOTFiMzhmYmFiYTM4ZTYz
MWQ4MzIxM2RlMDhlZjkuLmQ0NTc1NDg4MjMzNjhmMGNkMWQwMDdjOWQzZTQzMmJjMjA5ODA0MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0
dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5p
dHRlc3QucHkKQEAgLTMyMyw3ICszMjMsNyBAQCBfZXhwZWN0ZWRfaGVhZGVyID0gIiIiLyoKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBB
cmd1bWVudEVuY29kZXI7CisgICAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgQ29u
bmVjdGlvbjsKICAgICBjbGFzcyBEdW1teVR5cGU7CiAgICAgY2xhc3MgTWFjaFBvcnQ7CkBAIC00
NjcsMTQgKzQ2NywxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2lucyA6IENvcmVJUEM6OkFyZ3VtZW50czE8
Ym9vbD4gewogc3RydWN0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogQ29yZUlQQzo6QXJn
dW1lbnRzMTxjb25zdCBXVEY6OlN0cmluZyY+IHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNz
YWdlSUQgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOwogICAgIHN0cnVjdCBEZWxheWVk
UmVwbHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAg
ICAgIERlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOworICAgICAgICBEZWxheWVkUmVwbHkoUGFz
c1JlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4pOwogICAgICAgICB+RGVsYXllZFJlcGx5KCk7CiAKICAgICAgICAgYm9vbCBzZW5k
KGNvbnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwotICAgICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtX2FyZ3Vt
ZW50czsKKyAgICAgICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtX2VuY29kZXI7
CiAgICAgfTsKIAogICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzMTxDb3JlSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHN0cnVjdCBHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpT
dHJpbmcmPiB7CiBzdHJ1Y3QgVGVzdE11bHRpcGxlQXR0cmlidXRlcyA6IENvcmVJUEM6OkFyZ3Vt
ZW50czAgewogICAgIHN0YXRpYyBjb25zdCBLaW5kIG1lc3NhZ2VJRCA9IFRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXNJRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+KTsKKyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5
ZWRSZXBseSgpOwogCiAgICAgICAgIGJvb2wgc2VuZCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBl
ZGVmIENvcmVJUEM6OkFyZ3VtZW50czAgUmVwbHk7CkBAIC02NDAsOSArNjQwLDkgQEAgbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBhZ2UgewogCi1HZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4gYXJndW1lbnRzKQorR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlv
biwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisg
ICAgLCBtX2VuY29kZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NTMsMTYgKzY1MywxNiBAQCBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkK
IAogYm9vbCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNv
bnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAg
ICBBU1NFUlQobV9hcmd1bWVudHMpOwotICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
bV9hcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBtX2Vu
Y29kZXItPmVuY29kZShjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29u
bmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFy
Z3VtZW50cykKK1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJl
cGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBtX2VuY29k
ZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NzMsOCArNjczLDggQEAgVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9vbCBUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewotICAgIEFTU0VSVChtX2FyZ3Vt
ZW50cyk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9h
cmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBib29sIHJl
c3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxD
b3JlSVBDOjpNZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBt
X2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRy
PENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdl
SUQuZ2V0PE1lc3NhZ2VzOjpXZWJQYWdlOjpLaW5kPigpKSB7CiAgICAgY2FzZSBNZXNzYWdlczo6
V2ViUGFnZTo6Q3JlYXRlUGx1Z2luSUQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlv
bi5jcHAKaW5kZXggZDk0MTMxOGRiMjRjY2EzNjhjYzExN2FlMmJmMWNjYTQ2NzZjMTQ0YS4uOTc0
M2E3OGM3NzA4NDQ0OTM3YjZmOWFlMWYxNjhlN2UyNmZiZTE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVz
c2FnZUJvZAogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBP
d25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsK
ICAgICBtZXNzYWdlRGF0YS0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdl
Qm9keShtZXNzYWdlRGF0YS5nZXQoKSwgbWVzc2FnZUJvZHkpOwogCkBAIC02MiwxNCArNjIsMTQg
QEAgdm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2QKIAogdm9pZCBXZWJDb25uZWN0aW9uOjpoYW5kbGVN
ZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2VEYXRhKQogewotICAg
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciBtZXNzYWdlRGVjb2RlcihtZXNzYWdlRGF0YS5kYXRh
KCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcj4gZGVjb2RlciA9IENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VE
YXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlTmFt
ZTsKLSAgICBpZiAoIW1lc3NhZ2VEZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiBtZXNzYWdlQm9keTsKLSAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5
KCZtZXNzYWdlRGVjb2RlciwgbWVzc2FnZUJvZHkpKQorICAgIGlmICghZGVjb2RlTWVzc2FnZUJv
ZHkoZGVjb2Rlci5nZXQoKSwgbWVzc2FnZUJvZHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggM2FiZDE0ZDQ2
YWI5ZjVkYTMxNjQ1YzkyNWU1ZTc1NWUzMmVlMmQ5MS4uYjE0ZDFmMzQ3YzUwMGU5ODgyOTQ5OTll
OTViOGU3ZDM1ZDBkNzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBA
IC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
ICAgIGNsYXNzIE1lc3NhZ2VEZWNvZGVyOworICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwogICAg
IGNsYXNzIE1lc3NhZ2VJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2FmYzE4YzAw
MDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uYmZhN2QzYmM2ODU2ODI2NWM2ZTAwYzQ2Mzg2ODM5MmJl
ODBlMWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNSw2ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIFwKICAgICBQbGF0Zm9ybS9D
b3JlSVBDL0RhdGFSZWZlcmVuY2UuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNz
YWdlLmggXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisgICAgUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VJRC5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlci5oIFwKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIFwKQEAgLTM4NCw2ICszODYs
OCBAQCBTT1VSQ0VTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwIFwK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9Db3Jl
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcCBcCisgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBcCiAgICAgUGxhdGZvcm0v
TG9nZ2luZy5jcHAgXAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGQzZGFiNmM3NDA1ODVlNTNiOTBlZjJiODQzZGM4
MWZkNzAxOTNjN2YuLmUyMTVlODJjYTdhNDVhODE4ZTBjMjIwMmE4MmNkZDc1YmIxYmQxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5OCw3ICszOTgsNyBA
QCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJv
Y2VzcygpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fbWVzc2FnZXNUb0luamVj
dGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IHBhaXI8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0PiA+JiBtZXNzYWdlID0gbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKIAotICAgICAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVh
dGUoKTsKIAogICAgICAgICAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlLmZpcnN0KTsK
ICAgICAgICAgICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5j
b2RlcihtZXNzYWdlLnNlY29uZC5nZXQoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgV2Vi
Q29udGV4dDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSU9iamVjCiAKICAgICAvLyBGSVhNRTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNz
YWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVm
cyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBwcm9jZXNzLgogCi0gICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBt
ZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVz
c2FnZURhdGEtPmVuY29kZShtZXNzYWdlTmFtZSk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTZiZTI4ZjA5NTUwMDJm
NjUwNmI5Y2Y1MmI5NDg5NjI3YTc0OGQ5NC4uM2RhZWRiMTM3NDJlNGQ0MzQyYjQwMjcyODI5M2Zk
ZWVlNmExM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25u
ZWN0KCkKICAgICBtX2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1ib29s
IFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cywgdW5zaWdu
ZWQgbWVzc2FnZVNlbmRGbGFncykKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewogICAgIC8vIElm
IHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8g
c3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUK
ICAgICAvLyBhIENvcmVJUEMgY29ubmVjdGlvbi4KICAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewot
ICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZV9wYWlyKENvcmVJUEM6OkNvbm5l
Y3Rpb246Ok91dGdvaW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyksIG1lc3NhZ2VTZW5k
RmxhZ3MpKTsKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3Jl
SVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVz
c2FnZVNlbmRGbGFncykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxDb3JlSQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5k
TWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cywgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdl
U2VuZEZsYWdzKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1NzQ4
NmM3ZGFhNmI0ZDFkYTQ3ZjY5NDk2ZmNiYzUyYWZlMzhkMTI3Li43NTI0ZGYyZmY0NjAwZjhlYjVm
Njg2YzBkMWU4NDk3ZDI1MTBlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaWxsIHBv
dGVudGlhbGx5IGNhdXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJlIGZyZWVkLgog
ICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpN
ZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiwgdW5zaWduZWQg
bWVzc2FnZVNlbmRGbGFncyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdl
SUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzKTsKIAogICAgIC8vIENvcmVJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lk
IGFkZEJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBiYWNrRm9yd2FyZERhdGEpOwpAQCAtMjE2
LDE5ICsyMTYsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+
CiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZGVwcmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5k
TWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJl
bGVhc2UoKSwgMCk7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCht
ZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIE93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgIGFyZ3VtZW50RW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKLSAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rl
ci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMmRhZTM1NTZl
MjZlMTA0NWI0NGM2ZjEzZTY4YmNlZjBiMWQxODgwLi5mMmQzYjRkNzc4MzQ0ODNlMGFhMGZhOWQx
NDkxNTY0ZDkwZDUyMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MSw2ICs4MSwxMCBAQAogCQkxQTIxNjFCMTExRjM3NjY0
MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjE2MUFGMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1
bnRpbWVPYmplY3RNYXAuY3BwICovOyB9OwogCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyog
TlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjE2MkFFMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRp
ZXMuY3BwICovOyB9OwogCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIxNjJBRjExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi87IH07CisJ
CTFBMjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGQzE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwICovOyB9OworCQkxQTIzMjhGRjE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5oICovOyB9OworCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5
MDAxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI5
MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyog
TWVzc2FnZURlY29kZXIuaCAqLzsgfTsKIAkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovOyB9
OwogCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1RjExMUY1MzFFODAw
QzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMUEyNEJFRDUxMjA4OTREMTAwRkJC
MDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICov
OyB9OwpAQCAtMTIwNyw2ICsxMjExLDEwIEBACiAJCTFBMjE2MkFGMTFGMzg5NzEwMDhBRDBGNSAv
KiBOUFJ1bnRpbWVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlBSdW50aW1lVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJG
MEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMjMyOEZD
MTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVz
c2FnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMTE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5
IC8qIFNoYXJlZE1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRNZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTgsOCArMjcyNiw2
IEBACiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICov
LAogCQkJCUUxRURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAotCQkJCTI5MTIxNzA1
MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCi0JCQkJMjkx
MjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzgy
LDYgKzI3ODgsMTAgQEAKIAkJCQkxQThFRkRGRDEyNTNDQjZFMDBGNzA2N0YgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCiAJCQkJMUE4RUZERjkxMjUzQ0FBMjAwRjcwNjdGIC8qIERhdGFSZWZlcmVu
Y2UuaCAqLywKIAkJCQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5o
ICovLAorCQkJCTFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAg
Ki8sCisJCQkJMUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8s
CisJCQkJMUEyMzI4RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLywK
KwkJCQkxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLywKIAkJ
CQlCQzAzMkRBNDEwRjQzN0QxMDA1OEMxNUEgLyogTWVzc2FnZUlELmggKi8sCiAJCQkJMUEzRUVE
MTExNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBD
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLApAQCAtNDY3OSw2
ICs0Njg5LDggQEAKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUw
MTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyMzI4RkYxNjJDODY2QTAw
RDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTIzMjkwMzE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTYy
Miw2ICs1NjM0LDggQEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFREZFMTIxNjI4
Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOTAyMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCmluZGV4
IDc2MzMwNWNiZWI5Mzk0ODcyNTNmODZlZmJlYTkzZGU1NjBlYzI4OGIuLmQwOWE2NDdmZGVjNmI5
YmM1YWUwYzBhMjQ4NDhiMDIwYThkZDMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2RlY29kZXIo
YnVmZmVyLCBidWZmZXJTaXplKQorICAgIDogbV9kZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiB7CiB9CiAKIGJvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7CiAgICAgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpKQorICAgIGlmICghbV9kZWNv
ZGVyLT5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYnl0ZXMgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOwpA
QCAtNDksNDIgKzQ5LDQyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rv
cjx1aW50OF90PiYgYnl0ZXMpCiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJvb2woYm9v
bCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVCb29sKHZhbHVlKTsKKyAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVCb29sKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlVUludDE2KHVpbnQxNl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9k
ZWNvZGVyLmRlY29kZVVJbnQxNih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
VUludDE2KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDMyKHVp
bnQzMl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQzMih2YWx1
ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDMyKHZhbHVlKTsKIH0KIAogYm9v
bCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDY0KHVpbnQ2NF90JiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlVUludDY0KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
SW50MzIoaW50MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVJbnQz
Mih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlSW50MzIodmFsdWUpOwogfQog
CiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVJbnQ2NChpbnQ2NF90JiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUludDY0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVJbnQ2NCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29k
ZUZsb2F0KGZsb2F0JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUZsb2F0
KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVGbG9hdCh2YWx1ZSk7CiB9CiAK
IGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZURvdWJsZShkb3VibGUmIHZhbHVlKQogewotICAg
IHJldHVybiBtX2RlY29kZXIuZGVjb2RlRG91YmxlKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNv
ZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBEZWNvZGVyQWRh
cHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYgdmFsdWUpCiAgICAgLy8gd2l0aG91dCBicmVha2lu
ZyBlbmNvZGluZy9kZWNvZGluZyBvZiB0aGUgaGlzdG9yeSB0cmVlLgogCiAgICAgdWludDMyX3Qg
bGVuZ3RoOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAgIGlmICghbV9k
ZWNvZGVyLT5kZWNvZGUobGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKQEAgLTEw
NiwyMiArMTA2LDIyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcm
IHZhbHVlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IGxlbmd0aEluQnl0ZXM7Ci0gICAgaWYgKCFt
X2RlY29kZXIuZGVjb2RlKGxlbmd0aEluQnl0ZXMpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNv
ZGUobGVuZ3RoSW5CeXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChsZW5n
dGhJbkJ5dGVzICUgc2l6ZW9mKFVDaGFyKSB8fCBsZW5ndGhJbkJ5dGVzIC8gc2l6ZW9mKFVDaGFy
KSAhPSBsZW5ndGgpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAg
IG1fZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghbV9kZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+
KGxlbmd0aCkpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFt
X2RlY29kZXItPmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+KGxlbmd0aCkpIHsK
KyAgICAgICAgbV9kZWNvZGVyLT5tYXJrSW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5n
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICBpZiAoIW1fZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgX19hbGlnbm9mKFVDaGFyKSkpCisgICAgaWYgKCFt
X2RlY29kZXItPmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBfX2FsaWdub2YoVUNoYXIpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSBzdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCmluZGV4IGQ2YjRl
Yjc2NmFmMTZhMTgyOWNmOTU2ZmQ5NzQ2NWU4YzlkYzRhNWQuLjY3MWUxODk2ZjUwOTUyZThmYzY5
NjVkMmQwNDhiNmIzZjY5M2E5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGRlY29kZURvdWJsZShkb3VibGUmKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGVjb2RlU3RyaW5nKFN0cmluZyYpOwogCi0gICAgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1f
ZGVjb2RlcjsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiBtX2RlY29kZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCmluZGV4IGJkYTdkOWI3MmYyZmQw
MTIzOWE3ZTMyZWQ2ZjQ4NGE5MTg1MzUyYjkuLjE4MDUxNGFkZGVlYWRhOTZhNzljOGM4Y2EyZDhl
MzdhZWE5N2QwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9FbmNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0VuY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsOCArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBFbmNvZGVyQWRhcHRlcjo6RW5jb2RlckFkYXB0ZXIoKQotICAgIDogbV9lbmNvZGVy
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApKQorICAgIDogbV9lbmNvZGVyKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCkpCiB7CisgICAgLy8gV2UgdXNlZCB0byBh
bHdheXMgZW5jb2RlIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgaGVyZS4gS2VlcCBkb2luZyBz
byBmb3Igbm93LgorICAgIG1fZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pigw
KSk7CiB9CiAKIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgRW5jb2RlckFkYXB0ZXI6OmRhdGFSZWZl
cmVuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNmY2N2VkMDIyOTEyNWU3Mzg0OThhMGYyNjcyYzg4NGJjMzY4ODM2NS4uNDNlZDE2YjFhMzlj
OThkNzVlYmZlNTQxOTYwYmVhNGViZWY5OWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMDExLDE0ICsxMDExLDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6
cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VEYXRhLmRhdGEo
KSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyPiBkZWNvZGVyID0gQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyOjpjcmVhdGUobWVzc2FnZURh
dGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2VOYW1l
OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVjb2RlKG1lc3NhZ2VOYW1lKSkKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShtZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZlB0cjxBUElPYmplY3Q+IG1lc3NhZ2VCb2R5OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVj
b2RlKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VCb2R5KSkpCisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVz
c2FnZUJvZHkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oKaW5kZXggZWJjZDZjYzM1ZjcwZmZmZjZlZDA4YmUzMTlhMTMxNGM3ZDYy
YjA1ZC4uMDZhM2ZkZDBiYzgzMzBhY2M2ZTM3M2Q2MTVlYmMwM2ExMzIyMjIxZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNDA5NCw2ICs0MDk0LDIyIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBD
XE1lc3NhZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJUENcTWVzc2FnZURlY29kZXIuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRm
b3JtXENvcmVJUENcTWVzc2FnZUVuY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5j
b2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlSUQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168798</attachid>
            <date>2012-10-15 16:09:10 -0700</date>
            <delta_ts>2012-10-15 17:58:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121015160800.patch</filename>
            <type>text/plain</type>
            <size>84189</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLmU5YzY3NTZkMGRkZWY0MGM2NzE1MjgxYmFmMDJkOGNlOGU2YjMz
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCw5ICsyOCw5IEBACiAjaWZuZGVmIENvbm5lY3Rpb25faAogI2RlZmluZSBDb25uZWN0aW9u
X2gKIAotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBkb3VibGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
Y3JlYXRlU3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSAwKTsKLSAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+
KTsKKyAgICBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVz
c2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElE
KTsKKyAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5j
UmVwbHkoUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHZhcmlhbnRzIG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRl
ZC4KICAgICAvLyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQg
dGFrZSBhIG1lc3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIH07
CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2lu
Z01lc3NhZ2U7CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01l
c3NhZ2U7CiAKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2Vy
dmVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwx
NCArMjUxLDE0IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUg
dGltZW91dCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2Uo
TWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAg
Ci0gICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwg
ZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093
blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0
LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVj
b2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNv
bm5lY3Rpb24gd29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0lu
Y29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rl
cj4pOworICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNs
aWVudCopOwogICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVu
dCopOwpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRn
b2luZ01lc3NhZ2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01l
c3NhZ2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJv
b2wgc2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNv
ZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0
cjxNZXNzYWdlRW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAg
Ci0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwor
ICAgIHR5cGVkZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENv
bm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNo
U3luY01lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhy
ZWFkLgpAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2Fn
ZU11dGV4OwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3Vt
ZW50RGVjb2Rlcio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFw
OwogCiAgICAgLy8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2Fp
dGluZyBvbiBhIHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3
ICszMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxs
IGJlIG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAg
ICAgLy8gbWVzc2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVy
KiByZXBseURlY29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAK
ICAgICAgICAgLy8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVj
ZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5
OwpAQCAtMzQwLDkgKzM0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkK
KyAgICAgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2Rlcigp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0g
YWRvcHRQdHIocmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gcmVwbHkgPSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNv
ZGVyID0gMDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2Uo
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
cmVhZEJ1ZmZlcjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1
bWVudEVuY29kZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdl
RW5jb2Rlcj4gbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0
YXRlOwogICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCkBAIC00MDksMjIgKzQwOSwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0
ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsK
KyAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3Jl
YXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Up
OwogICAgIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwg
YXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwg
bWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQg
c3luY1NlbmRGbGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBP
d25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2Fn
ZUFyZ3VtZW50RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIs
ICIiLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUg
dGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShtZXNzYWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBO
b3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJn
dW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6
Om1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRp
bWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVx
dWVzdElELCBlbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAg
aWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQz
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3Rp
bmF0aW9uSUQsIHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9
IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NDQ5LDEzICs0NDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KIGlubGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3Nh
Z2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBV
JiByZXBseSwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRl
U3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7
CisgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKCIiLCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShh
cmd1bWVudHMpOworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8v
IE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQo
bWVzc2FnZUlEKSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGlt
ZW91dCk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3lu
Y01lc3NhZ2UoTWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVs
ZWFzZSgpLCB0aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIApAQCAtNDY2LDEwICs0NjYsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlv
bjo6ZGVwcmVjYXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LAogdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVw
cmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQm
IGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29k
ZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVu
dEVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2Uo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMGE3NjQy
YzQwNTkxZTM5ZDljMzFmMWNiYWNhOWUxNjkzMTg4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZURlY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK1Bhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVm
ZmVyKQoreworICAgIERlcXVlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50cykpOworfQorCitQ
YXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IERh
dGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50
cykpOworfQorCitNZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKCkKK3sKK30KKworTWVz
c2FnZURlY29kZXI6Ok1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwg
RGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorICAgIDogQXJndW1lbnREZWNvZGVyKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGF0dGFjaG1lbnRzKQoreworICAgIENTdHJpbmcg
bWVzc2FnZVJlY2VpdmVyTmFtZTsKKyAgICBpZiAoIWRlY29kZShtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1N0cmluZyBtZXNzYWdlTmFtZTsKKyAgICBpZiAo
IWRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGRlY29kZVVJbnQ2
NChtX2Rlc3RpbmF0aW9uSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFkZTIxYjJmMTg3ZmY1ZWVhOTc3OWQ3YjYzMTRlMmY1ZmFkM2ZlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdlRGVjb2Rlcl9oCisj
ZGVmaW5lIE1lc3NhZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworCitj
bGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29kZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRGF0YVJl
ZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
KyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRlOgorICAgIE1lc3NhZ2VE
ZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VEZWNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTViYWNkMGM3Yzg4MTE1MzA1OTY3M2VlYmI1N2RjYjkwMjY1M2Zi
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworICAgIFBhc3NPd25QdHI8TWVz
c2FnZUVuY29kZXI+IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlRW5jb2RlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCkpOworfQorCitNZXNz
YWdlRW5jb2Rlcjo6TWVzc2FnZUVuY29kZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgZW5jb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIGVuY29kZShtZXNzYWdl
TmFtZSk7CisgICAgZW5jb2RlKGRlc3RpbmF0aW9uSUQpOworfQorCitNZXNzYWdlRW5jb2Rlcjo6
fk1lc3NhZ2VFbmNvZGVyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhODc4NTBiOTliYzNhYzU2NTQwMDNlYjc1ZDBhZmU3N2U2MzU5YWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVzc2FnZUVuY29kZXJfaAor
I2RlZmluZSBNZXNzYWdlRW5jb2Rlcl9oCisKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK2NsYXNz
IE1lc3NhZ2VFbmNvZGVyIDogcHVibGljIEFyZ3VtZW50RW5jb2RlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGNyZWF0ZShjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisgICAgdmlydHVhbCB+TWVzc2FnZUVuY29kZXIoKTsKKworcHJpdmF0
ZToKKyAgICBNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VFbmNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgK
aW5kZXggZTJiYTBiNTZmNWE1MTNkMTAxZGRiOTE3ZWJkNjg1MGQzOTNmMjQ4Zi4uNzQzODEwNTBj
N2RkN2Q1NmFmMWE0ZTEyYzIwNGVjOWY2M2IzNDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBwdWJs
aWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICB7Ci0gICAgICAgIE93blB0cjxBcmd1bWVu
dEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3Rp
bmF0aW9uSUQpOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAg
ICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNy
ZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5z
ZW5kTWVzc2FnZShNZXNzYWdlSUQoVTo6bWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4odGhpcyktPnNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxB
cmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlcikKKyAgICBib29sIHNlbmRNZXNzYWdlKE1l
c3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiAg
ICAgewogICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLT5jb25uZWN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKIAotICAgICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudEVuY29k
ZXIpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBl
bmNvZGVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5j
KGNvbnN0IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgZG91Ymxl
IHRpbWVvdXQgPSBDb25uZWN0aW9uOjpOb1RpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDcyOTg5ZGRh
MDFhYTMxZTE5YTQ0NjY2Y2VjODhlYWMxZmU1ZTc0YTUuLjhkNDIzN2NjZjc3NmQ4ZTJhYmQ3MGFl
ODdmNTc2ZmNiOTc0ZDQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgT3duUHRyPEFy
Z3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUo
MCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93blB0cjxNZXNzYWdlRW5j
b2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCAwKTsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNz
YWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOwor
ICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OkluaXRpYWxpemVD
b25uZWN0aW9uKSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgZGVh
ZCBuYW1lIGhhbmRsZXIgZm9yIG91ciBzZW5kIHBvcnQuCiAgICAgICAgIGluaXRpYWxpemVEZWFk
TmFtZVNvdXJjZSgpOwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVu
KCkKICAgICBpZiAobV9leGNlcHRpb25Qb3J0KSB7CiAgICAgICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9leGNlcHRpb25Qb3J0LCBXb3JrUXVldWU6
Ok1hY2hQb3J0RGF0YUF2YWlsYWJsZSwgYmluZCgmQ29ubmVjdGlvbjo6ZXhjZXB0aW9uU291cmNl
RXZlbnRIYW5kbGVyLCB0aGlzKSk7CiAKLSAgICAgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
YXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7Ci0gICAgICAgIGFy
Z3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIDApOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OwogCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6U2V0RXhj
ZXB0aW9uUG9ydCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAgICBzZW5kTWVz
c2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBlbmNvZGVy
LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTcsOSArMTU3LDkg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBh
cmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlE
IG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICBW
ZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBhcmd1bWVudHMtPnJlbGVhc2VBdHRhY2ht
ZW50cygpOworICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IGVuY29kZXItPnJl
bGVhc2VBdHRhY2htZW50cygpOwogICAgIAogICAgIHNpemVfdCBudW1iZXJPZlBvcnREZXNjcmlw
dG9ycyA9IDA7CiAgICAgc2l6ZV90IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMgPSAwOwpA
QCAtMTcxLDE0ICsxNzEsMTQgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgICAg
IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMrKzsKICAgICB9CiAgICAgCi0gICAgc2l6ZV90
IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCBu
dW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7Cisg
ICAgc2l6ZV90IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGVuY29kZXItPmJ1ZmZlclNp
emUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRv
cnMpOwogICAgIGNoYXIgYnVmZmVyW2lubGluZU1lc3NhZ2VNYXhTaXplXTsKIAogICAgIGJvb2wg
bWVzc2FnZUJvZHlJc09PTCA9IGZhbHNlOwogICAgIGlmIChtZXNzYWdlU2l6ZSA+IHNpemVvZihi
dWZmZXIpKSB7CiAgICAgICAgIG1lc3NhZ2VCb2R5SXNPT0wgPSB0cnVlOwogCi0gICAgICAgIGF0
dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJUVUFMX0NPUFksIGZhbHNlKSk7CisgICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVy
LT5idWZmZXJTaXplKCksIE1BQ0hfTVNHX1ZJUlRVQUxfQ09QWSwgZmFsc2UpKTsKICAgICAgICAg
bnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycysrOwogICAgICAgICBtZXNzYWdlU2l6ZSA9IG1h
Y2hNZXNzYWdlU2l6ZSgwLCBudW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1v
cnlEZXNjcmlwdG9ycyk7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RW5jCiAKICAgICAvLyBDb3B5IHRoZSBkYXRhIGlmIGl0IGlzIG5vdCBiZWluZyBzZW50
IG91dC1vZi1saW5lLgogICAgIGlmICghbWVzc2FnZUJvZHlJc09PTCkKLSAgICAgICAgbWVtY3B5
KG1lc3NhZ2VEYXRhLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUo
KSk7CisgICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSk7CiAKICAgICBBU1NFUlQobV9zZW5kUG9ydCk7CiAgICAgCkBAIC0y
NTEsMTQgKzI1MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVEZWFkTmFtZVNvdXJj
ZSgpCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlciht
X3NlbmRQb3J0LCBXb3JrUXVldWU6Ok1hY2hQb3J0RGVhZE5hbWVOb3RpZmljYXRpb24sIGJpbmQo
JkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IGNyZWF0ZUFyZ3VtZW50RGVjb2RlcihtYWNoX21zZ19o
ZWFkZXJfdCogaGVhZGVyKQorc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiB7CiAgICAgaWYgKCEo
aGVhZGVyLT5tc2doX2JpdHMgJiBNQUNIX01TR0hfQklUU19DT01QTEVYKSkgewogICAgICAgICAv
LyBXZSBoYXZlIGEgc2ltcGxlIG1lc3NhZ2UuCi0gICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhl
YWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYm9keSwg
Ym9keVNpemUpKTsKKyAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUg
LSBzaXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOworCisgICAgICAgIHJldHVybiBNZXNzYWdlRGVj
b2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UoYm9keSwgYm9keVNpemUpKTsKICAgICB9CiAKICAg
ICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgJiBNZXNzYWdlQm9keUlz
T09MOwpAQCAtMzAzLDIyICszMDMsMjIgQEAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBjcmVhdGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWQKICAgICAg
ICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUg
PSBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpOwogCi0gICAgICAgIEFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnREZWNvZGVyOworICAgICAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29k
ZXI7CiAKICAgICAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFy
Z3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VC
b2R5U2l6ZSk7CisgICAgICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShE
YXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNz
YWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRhY2htZW50cyk7CisgICAgICAgICAgICBkZWNv
ZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7CiAKICAgICAgICAgdm1fZGVhbGxvY2F0ZSht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0YWNobWVudC5zaXplKCkpOwog
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihhcmd1bWVudERlY29kZXIpOworICAgICAgICByZXR1
cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5t
c2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPiho
ZWFkZXIpKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplKSwgYXR0YWNobWVudHMpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91
bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAtMzYwLDggKzM2
MCw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIE1lc3NhZ2VJRCBtZXNzYWdlSUQgPSBNZXNzYWdlSUQ6OmZyb21J
bnQoaGVhZGVyLT5tc2doX2lkKTsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVu
dHMgPSBjcmVhdGVBcmd1bWVudERlY29kZXIoaGVhZGVyKTsKLSAgICBBU1NFUlQoYXJndW1lbnRz
KTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVNZXNzYWdlRGVj
b2RlcihoZWFkZXIpOworICAgIEFTU0VSVChkZWNvZGVyKTsKIAogICAgIGlmIChtZXNzYWdlSUQg
PT0gTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbikpIHsKICAg
ICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwpAQCAtMzY5LDggKzM2OSw5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVCghbV9zZW5k
UG9ydCk7CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShwb3J0KSkgeworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwb3J0KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IERpc2Nvbm5lY3QuCisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zOTAsMTQg
KzM5MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQog
CiAgICAgaWYgKG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2Vw
dGlvblBvcnQpKSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHNldE1hY2hFeGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1
bWVudHMucmVsZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwg
ZGVjb2Rlci5yZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25T
b3VyY2VFdmVudEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkx
Y2FhZjZmY2NkZjkxYjIyYzMxODI0OS4uMmQ1ODU2NzdkN2Y1ODBhYTYyNTJjZTlkZmE3OGFhYWQ4
ZWZkMDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMjgyLDEzICsyODEsMTMgQEAgYm9vbCBDb25uZWN0
aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlP
T0woKSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihv
b2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRE
ZWNvZGVyOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoYXR0
YWNobWVudHMuaXNFbXB0eSgpKQotICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1l
bnREZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICAgICAg
ZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSkpOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgYXR0YWNobWVudHMpOworICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6
OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgp
KSwgYXR0YWNobWVudHMpOwogCi0gICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShtZXNzYWdlSW5m
by5tZXNzYWdlSUQoKSwgYWRvcHRQdHIoYXJndW1lbnREZWNvZGVyKSk7CisgICAgcHJvY2Vzc0lu
Y29taW5nTWVzc2FnZShtZXNzYWdlSW5mby5tZXNzYWdlSUQoKSwgZGVjb2Rlci5yZWxlYXNlKCkp
OwogCiAgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPiBtZXNzYWdlTGVuZ3RoKSB7CiAgICAgICAg
IG1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3Nh
Z2VMZW5ndGgsIG1fcmVhZEJ1ZmZlclNpemUgLSBtZXNzYWdlTGVuZ3RoKTsKQEAgLTQ0MSw3ICs0
NDAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMo
KSBjb25zdAogICAgIHJldHVybiBtX2lzQ29ubmVjdGVkOwogfQogCi1ib29sIENvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1
bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyKQogewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChtX3NvY2tldE5vdGlmaWVyKTsK
QEAgLTQ0OSw3ICs0NDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91bnQgKiBzaXpl
b2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01lc3NhZ2VJbmxp
bmUpOwogCi0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gYXJndW1lbnRzLT5y
ZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMg
PSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICBBdHRhY2htZW50UmVzb3VyY2VH
dWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0
dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRzLnNp
emUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkpIHsKQEAgLTQ1NywxMCArNDU2LDEwIEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBNZXNzYWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGFyZ3VtZW50cy0+YnVmZmVy
U2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOwotICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhC
b2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBz
aXplb2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwotICAgIGlm
IChtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4gbWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRz
LT5idWZmZXJTaXplKCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBv
b2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5i
dWZmZXJTaXplKCkpOworICAgIE1lc3NhZ2VJbmZvIG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOworICAgIHNpemVfdCBtZXNz
YWdlU2l6ZVdpdGhCb2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50
cy5zaXplKCkgKiBzaXplb2YoQXR0YWNobWVudEluZm8pKSArIGVuY29kZXItPmJ1ZmZlclNpemUo
KTsKKyAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYm
IGVuY29kZXItPmJ1ZmZlclNpemUoKSkgeworICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShlbmNv
ZGVyLT5idWZmZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NzAsNyArNDY5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJn
dW1lbnRFbmMKIAogICAgICAgICBtZXNzYWdlSW5mby5zZXRNZXNzYWdlQm9keU9PTCgpOwogCi0g
ICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9keS0+ZGF0YSgpLCBhcmd1bWVudHMtPmJ1ZmZlcigp
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSk7CisgICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9k
eS0+ZGF0YSgpLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKIAog
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoaGFuZGxlLnJlbGVhc2VUb0F0dGFjaG1lbnQoKSk7
CiAgICAgfQpAQCAtNTQwLDkgKzUzOSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
ICAgICsraW92TGVuZ3RoOwogICAgIH0KIAotICAgIGlmICghbWVzc2FnZUluZm8uaXNNZXNzYWdl
Qm9keU9PTCgpICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJndW1lbnRzLT5idWZm
ZXIoKSk7Ci0gICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9sZW4gPSBhcmd1bWVudHMtPmJ1ZmZl
clNpemUoKTsKKyAgICBpZiAoIW1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBlbmNv
ZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihlbmNvZGVyLT5idWZmZXIoKSk7CisgICAgICAgIGlvdltp
b3ZMZW5ndGhdLmlvdl9sZW4gPSBlbmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgICsraW92
TGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBmNTFhZDA3OWFiNzA3ZjdiYmEwZTBhNTg5
YTQwYWEzZWZkNzQyMTk1Li4zMjMzZGQ3MWU5YjBiZTlmNzA4MDFmNWI5NTQxM2MxOWEwNDE2Y2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIkJpbmFyeVNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTcyLDcgKzE3MSw4IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgICAgIHVuc2lnbmVkIG1lc3Nh
Z2VJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obV9yZWFkQnVmZmVyLmRhdGEoKSAr
IHJlYWxCdWZmZXJTaXplKTsKIAotICAgICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShN
ZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlEKSwgYWRvcHRQdHIobmV3IEFyZ3VtZW50RGVjb2Rl
cihtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0
YVJlZmVyZW5jZShtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlE
KSwgZGVjb2Rlci5yZWxlYXNlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBvdXQg
dGhlIHNpemUgb2YgdGhlIG5leHQgbWVzc2FnZSBpbiB0aGUgcGlwZSAoaWYgdGhlcmUgaXMgb25l
KSBzbyB0aGF0IHdlIGNhbiByZWFkCkBAIC0yNDcsOSArMjQ3LDkgQEAgdm9pZCBDb25uZWN0aW9u
Ojp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28gd2UgYXJlIG5v
dyBkb25lIHdpdGggaXRzIGFyZ3VtZW50cy4gQ2xlYXJpbmcgdGhpcyBtZW1iZXIKKyAgICAvLyBU
aGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHNvIHdlIGFyZSBub3cgZG9uZSB3aXRoIGl0
cyBlbmNvZGVyLiBDbGVhcmluZyB0aGlzIG1lbWJlcgogICAgIC8vIHdpbGwgYWxsb3cgdXMgdG8g
c2VuZCBtZXNzYWdlcyBhZ2Fpbi4KLSAgICBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50cyA9IG51bGxw
dHI7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdyB0
aGF0IHRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHRyeSB0byBzZW5kIGEg
bmV3IG1lc3NhZ2UuCiAgICAgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKQEAgLTI3NCwyNCArMjc0
LDI0IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBhbGxvdyBzZW5kaW5nIG9uZSBhc3luY2hyb25vdXMg
bWVzc2FnZSBhdCBhIHRpbWUuIElmIHdlIHdhbnRlZCB0byBzZW5kIG1vcmUgdGhhbiBvbmUKICAg
ICAvLyBhdCBvbmNlLCB3ZSdkIGhhdmUgdG8gdXNlIG11bHRpcGxlIE9WRVJMQVBQRUQgc3RydWN0
dXJlcyBhbmQgaG9sZCBvbnRvIG11bHRpcGxlIHBlbmRpbmcKLSAgICAvLyBBcmd1bWVudEVuY29k
ZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3VzIG1lc3Nh
Z2UpLgotICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVBcmd1bWVudHM7CisgICAgLy8gTWVzc2Fn
ZUVuY29kZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3Vz
IG1lc3NhZ2UpLgorICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogfQogCi1ib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFz
c093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyKQogewotICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVBcmd1bWVudHMp
OworICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKIAogICAgIC8vIEp1c3QgYmFp
bCBpZiB0aGUgaGFuZGxlIGhhcyBiZWVuIGNsb3NlZC4KICAgICBpZiAobV9jb25uZWN0aW9uUGlw
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgYXJndW1lbnRzLT5lbmNvZGVVSW50
MzIobWVzc2FnZUlELnRvSW50KCkpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihtZXNzYWdl
SUQudG9JbnQoKSk7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIAotICAg
IGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBh
cmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBpZiAoOjpX
cml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1
ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKICAgICAgICAgLy8gV2Ugc3VjY2Vzc2Z1
bGx5IHNlbnQgdGhpcyBtZXNzYWdlLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDksOSArMzA5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xk
IG9udG8gdGhlIGFyZ3VtZW50cyBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgZGVzdHJveWVkCisgICAg
Ly8gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBz
byB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29t
cGxldGVzLgotICAgIG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIG1f
cGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXI7CiAKICAgICAvLyBXZSBjYW4gb25seSBzZW5k
IG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRm
b3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCBjOGEwYWI5MmFiOTBiZDdm
N2VkNzIzNWU2OTBkM2I0ODgwMjlhODUyLi5iZTllZTZkZjdkMGFmMjY0ZDE1Y2ViMjBjOWFjMTE5
MjYwOTA2M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CkBAIC01MDIsNyArNTAyLDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgQVNTRVJUKG1fYXJndW1lbnRzKTtcbicpCiAgICAgICAgICAgICByZXN1bHQgKz0g
WycgICAgbV9hcmd1bWVudHMtPmVuY29kZSglcyk7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29s
IHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShtX2FyZ3VtZW50cy5yZWxlYXNl
KCkpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpN
ZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTtcbicpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHJlc3VsdDtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IGRkOWZiZWNjM2YxOTFiMzhmYmFiYTM4ZTYz
MWQ4MzIxM2RlMDhlZjkuLmQ0NTc1NDg4MjMzNjhmMGNkMWQwMDdjOWQzZTQzMmJjMjA5ODA0MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0
dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5p
dHRlc3QucHkKQEAgLTMyMyw3ICszMjMsNyBAQCBfZXhwZWN0ZWRfaGVhZGVyID0gIiIiLyoKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBB
cmd1bWVudEVuY29kZXI7CisgICAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgQ29u
bmVjdGlvbjsKICAgICBjbGFzcyBEdW1teVR5cGU7CiAgICAgY2xhc3MgTWFjaFBvcnQ7CkBAIC00
NjcsMTQgKzQ2NywxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2lucyA6IENvcmVJUEM6OkFyZ3VtZW50czE8
Ym9vbD4gewogc3RydWN0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogQ29yZUlQQzo6QXJn
dW1lbnRzMTxjb25zdCBXVEY6OlN0cmluZyY+IHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNz
YWdlSUQgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOwogICAgIHN0cnVjdCBEZWxheWVk
UmVwbHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAg
ICAgIERlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOworICAgICAgICBEZWxheWVkUmVwbHkoUGFz
c1JlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4pOwogICAgICAgICB+RGVsYXllZFJlcGx5KCk7CiAKICAgICAgICAgYm9vbCBzZW5k
KGNvbnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwotICAgICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtX2FyZ3Vt
ZW50czsKKyAgICAgICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtX2VuY29kZXI7
CiAgICAgfTsKIAogICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzMTxDb3JlSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHN0cnVjdCBHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpT
dHJpbmcmPiB7CiBzdHJ1Y3QgVGVzdE11bHRpcGxlQXR0cmlidXRlcyA6IENvcmVJUEM6OkFyZ3Vt
ZW50czAgewogICAgIHN0YXRpYyBjb25zdCBLaW5kIG1lc3NhZ2VJRCA9IFRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXNJRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+KTsKKyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5
ZWRSZXBseSgpOwogCiAgICAgICAgIGJvb2wgc2VuZCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBl
ZGVmIENvcmVJUEM6OkFyZ3VtZW50czAgUmVwbHk7CkBAIC02NDAsOSArNjQwLDkgQEAgbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBhZ2UgewogCi1HZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4gYXJndW1lbnRzKQorR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlv
biwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisg
ICAgLCBtX2VuY29kZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NTMsMTYgKzY1MywxNiBAQCBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkK
IAogYm9vbCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNv
bnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAg
ICBBU1NFUlQobV9hcmd1bWVudHMpOwotICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
bV9hcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBtX2Vu
Y29kZXItPmVuY29kZShjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29u
bmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFy
Z3VtZW50cykKK1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJl
cGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBtX2VuY29k
ZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NzMsOCArNjczLDggQEAgVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9vbCBUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewotICAgIEFTU0VSVChtX2FyZ3Vt
ZW50cyk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9h
cmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBib29sIHJl
c3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxD
b3JlSVBDOjpNZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBt
X2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRy
PENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdl
SUQuZ2V0PE1lc3NhZ2VzOjpXZWJQYWdlOjpLaW5kPigpKSB7CiAgICAgY2FzZSBNZXNzYWdlczo6
V2ViUGFnZTo6Q3JlYXRlUGx1Z2luSUQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlv
bi5jcHAKaW5kZXggZDk0MTMxOGRiMjRjY2EzNjhjYzExN2FlMmJmMWNjYTQ2NzZjMTQ0YS4uOTc0
M2E3OGM3NzA4NDQ0OTM3YjZmOWFlMWYxNjhlN2UyNmZiZTE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVz
c2FnZUJvZAogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBP
d25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsK
ICAgICBtZXNzYWdlRGF0YS0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdl
Qm9keShtZXNzYWdlRGF0YS5nZXQoKSwgbWVzc2FnZUJvZHkpOwogCkBAIC02MiwxNCArNjIsMTQg
QEAgdm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2QKIAogdm9pZCBXZWJDb25uZWN0aW9uOjpoYW5kbGVN
ZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2VEYXRhKQogewotICAg
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciBtZXNzYWdlRGVjb2RlcihtZXNzYWdlRGF0YS5kYXRh
KCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcj4gZGVjb2RlciA9IENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VE
YXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlTmFt
ZTsKLSAgICBpZiAoIW1lc3NhZ2VEZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiBtZXNzYWdlQm9keTsKLSAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5
KCZtZXNzYWdlRGVjb2RlciwgbWVzc2FnZUJvZHkpKQorICAgIGlmICghZGVjb2RlTWVzc2FnZUJv
ZHkoZGVjb2Rlci5nZXQoKSwgbWVzc2FnZUJvZHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggM2FiZDE0ZDQ2
YWI5ZjVkYTMxNjQ1YzkyNWU1ZTc1NWUzMmVlMmQ5MS4uYjE0ZDFmMzQ3YzUwMGU5ODgyOTQ5OTll
OTViOGU3ZDM1ZDBkNzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBA
IC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
ICAgIGNsYXNzIE1lc3NhZ2VEZWNvZGVyOworICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwogICAg
IGNsYXNzIE1lc3NhZ2VJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2FmYzE4YzAw
MDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uYmZhN2QzYmM2ODU2ODI2NWM2ZTAwYzQ2Mzg2ODM5MmJl
ODBlMWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNSw2ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIFwKICAgICBQbGF0Zm9ybS9D
b3JlSVBDL0RhdGFSZWZlcmVuY2UuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNz
YWdlLmggXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisgICAgUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VJRC5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlci5oIFwKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIFwKQEAgLTM4NCw2ICszODYs
OCBAQCBTT1VSQ0VTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwIFwK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9Db3Jl
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcCBcCisgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBcCiAgICAgUGxhdGZvcm0v
TG9nZ2luZy5jcHAgXAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGQzZGFiNmM3NDA1ODVlNTNiOTBlZjJiODQzZGM4
MWZkNzAxOTNjN2YuLmUyMTVlODJjYTdhNDVhODE4ZTBjMjIwMmE4MmNkZDc1YmIxYmQxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5OCw3ICszOTgsNyBA
QCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJv
Y2VzcygpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fbWVzc2FnZXNUb0luamVj
dGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IHBhaXI8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0PiA+JiBtZXNzYWdlID0gbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKIAotICAgICAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVh
dGUoKTsKIAogICAgICAgICAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlLmZpcnN0KTsK
ICAgICAgICAgICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5j
b2RlcihtZXNzYWdlLnNlY29uZC5nZXQoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgV2Vi
Q29udGV4dDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSU9iamVjCiAKICAgICAvLyBGSVhNRTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNz
YWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVm
cyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBwcm9jZXNzLgogCi0gICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBt
ZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVz
c2FnZURhdGEtPmVuY29kZShtZXNzYWdlTmFtZSk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTZiZTI4ZjA5NTUwMDJm
NjUwNmI5Y2Y1MmI5NDg5NjI3YTc0OGQ5NC4uM2RhZWRiMTM3NDJlNGQ0MzQyYjQwMjcyODI5M2Zk
ZWVlNmExM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25u
ZWN0KCkKICAgICBtX2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1ib29s
IFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cywgdW5zaWdu
ZWQgbWVzc2FnZVNlbmRGbGFncykKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewogICAgIC8vIElm
IHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8g
c3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUK
ICAgICAvLyBhIENvcmVJUEMgY29ubmVjdGlvbi4KICAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewot
ICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZV9wYWlyKENvcmVJUEM6OkNvbm5l
Y3Rpb246Ok91dGdvaW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyksIG1lc3NhZ2VTZW5k
RmxhZ3MpKTsKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3Jl
SVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVz
c2FnZVNlbmRGbGFncykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxDb3JlSQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5k
TWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cywgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdl
U2VuZEZsYWdzKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1NzQ4
NmM3ZGFhNmI0ZDFkYTQ3ZjY5NDk2ZmNiYzUyYWZlMzhkMTI3Li43NTI0ZGYyZmY0NjAwZjhlYjVm
Njg2YzBkMWU4NDk3ZDI1MTBlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaWxsIHBv
dGVudGlhbGx5IGNhdXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJlIGZyZWVkLgog
ICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpN
ZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiwgdW5zaWduZWQg
bWVzc2FnZVNlbmRGbGFncyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdl
SUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzKTsKIAogICAgIC8vIENvcmVJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lk
IGFkZEJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBiYWNrRm9yd2FyZERhdGEpOwpAQCAtMjE2
LDE5ICsyMTYsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+
CiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZGVwcmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5k
TWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJl
bGVhc2UoKSwgMCk7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCht
ZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIE93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgIGFyZ3VtZW50RW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKLSAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rl
ci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMmRhZTM1NTZl
MjZlMTA0NWI0NGM2ZjEzZTY4YmNlZjBiMWQxODgwLi5mMmQzYjRkNzc4MzQ0ODNlMGFhMGZhOWQx
NDkxNTY0ZDkwZDUyMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MSw2ICs4MSwxMCBAQAogCQkxQTIxNjFCMTExRjM3NjY0
MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjE2MUFGMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1
bnRpbWVPYmplY3RNYXAuY3BwICovOyB9OwogCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyog
TlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjE2MkFFMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRp
ZXMuY3BwICovOyB9OwogCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIxNjJBRjExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi87IH07CisJ
CTFBMjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGQzE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwICovOyB9OworCQkxQTIzMjhGRjE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5oICovOyB9OworCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5
MDAxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI5
MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyog
TWVzc2FnZURlY29kZXIuaCAqLzsgfTsKIAkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovOyB9
OwogCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1RjExMUY1MzFFODAw
QzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMUEyNEJFRDUxMjA4OTREMTAwRkJC
MDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICov
OyB9OwpAQCAtMTIwNyw2ICsxMjExLDEwIEBACiAJCTFBMjE2MkFGMTFGMzg5NzEwMDhBRDBGNSAv
KiBOUFJ1bnRpbWVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlBSdW50aW1lVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJG
MEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMjMyOEZD
MTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVz
c2FnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMTE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5
IC8qIFNoYXJlZE1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRNZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTgsOCArMjcyNiw2
IEBACiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICov
LAogCQkJCUUxRURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAotCQkJCTI5MTIxNzA1
MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCi0JCQkJMjkx
MjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzgy
LDYgKzI3ODgsMTAgQEAKIAkJCQkxQThFRkRGRDEyNTNDQjZFMDBGNzA2N0YgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCiAJCQkJMUE4RUZERjkxMjUzQ0FBMjAwRjcwNjdGIC8qIERhdGFSZWZlcmVu
Y2UuaCAqLywKIAkJCQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5o
ICovLAorCQkJCTFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAg
Ki8sCisJCQkJMUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8s
CisJCQkJMUEyMzI4RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLywK
KwkJCQkxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLywKIAkJ
CQlCQzAzMkRBNDEwRjQzN0QxMDA1OEMxNUEgLyogTWVzc2FnZUlELmggKi8sCiAJCQkJMUEzRUVE
MTExNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBD
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLApAQCAtNDY3OSw2
ICs0Njg5LDggQEAKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUw
MTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyMzI4RkYxNjJDODY2QTAw
RDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTIzMjkwMzE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTYy
Miw2ICs1NjM0LDggQEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFREZFMTIxNjI4
Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOTAyMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCmluZGV4
IDc2MzMwNWNiZWI5Mzk0ODcyNTNmODZlZmJlYTkzZGU1NjBlYzI4OGIuLmQwOWE2NDdmZGVjNmI5
YmM1YWUwYzBhMjQ4NDhiMDIwYThkZDMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2RlY29kZXIo
YnVmZmVyLCBidWZmZXJTaXplKQorICAgIDogbV9kZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiB7CiB9CiAKIGJvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7CiAgICAgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpKQorICAgIGlmICghbV9kZWNv
ZGVyLT5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYnl0ZXMgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOwpA
QCAtNDksNDIgKzQ5LDQyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rv
cjx1aW50OF90PiYgYnl0ZXMpCiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJvb2woYm9v
bCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVCb29sKHZhbHVlKTsKKyAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVCb29sKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlVUludDE2KHVpbnQxNl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9k
ZWNvZGVyLmRlY29kZVVJbnQxNih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
VUludDE2KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDMyKHVp
bnQzMl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQzMih2YWx1
ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDMyKHZhbHVlKTsKIH0KIAogYm9v
bCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDY0KHVpbnQ2NF90JiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlVUludDY0KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
SW50MzIoaW50MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVJbnQz
Mih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlSW50MzIodmFsdWUpOwogfQog
CiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVJbnQ2NChpbnQ2NF90JiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUludDY0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVJbnQ2NCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29k
ZUZsb2F0KGZsb2F0JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUZsb2F0
KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVGbG9hdCh2YWx1ZSk7CiB9CiAK
IGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZURvdWJsZShkb3VibGUmIHZhbHVlKQogewotICAg
IHJldHVybiBtX2RlY29kZXIuZGVjb2RlRG91YmxlKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNv
ZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBEZWNvZGVyQWRh
cHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYgdmFsdWUpCiAgICAgLy8gd2l0aG91dCBicmVha2lu
ZyBlbmNvZGluZy9kZWNvZGluZyBvZiB0aGUgaGlzdG9yeSB0cmVlLgogCiAgICAgdWludDMyX3Qg
bGVuZ3RoOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAgIGlmICghbV9k
ZWNvZGVyLT5kZWNvZGUobGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKQEAgLTEw
NiwyMiArMTA2LDIyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcm
IHZhbHVlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IGxlbmd0aEluQnl0ZXM7Ci0gICAgaWYgKCFt
X2RlY29kZXIuZGVjb2RlKGxlbmd0aEluQnl0ZXMpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNv
ZGUobGVuZ3RoSW5CeXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChsZW5n
dGhJbkJ5dGVzICUgc2l6ZW9mKFVDaGFyKSB8fCBsZW5ndGhJbkJ5dGVzIC8gc2l6ZW9mKFVDaGFy
KSAhPSBsZW5ndGgpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAg
IG1fZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghbV9kZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+
KGxlbmd0aCkpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFt
X2RlY29kZXItPmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+KGxlbmd0aCkpIHsK
KyAgICAgICAgbV9kZWNvZGVyLT5tYXJrSW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5n
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICBpZiAoIW1fZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgX19hbGlnbm9mKFVDaGFyKSkpCisgICAgaWYgKCFt
X2RlY29kZXItPmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBfX2FsaWdub2YoVUNoYXIpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSBzdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCmluZGV4IGQ2YjRl
Yjc2NmFmMTZhMTgyOWNmOTU2ZmQ5NzQ2NWU4YzlkYzRhNWQuLjY3MWUxODk2ZjUwOTUyZThmYzY5
NjVkMmQwNDhiNmIzZjY5M2E5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGRlY29kZURvdWJsZShkb3VibGUmKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGVjb2RlU3RyaW5nKFN0cmluZyYpOwogCi0gICAgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1f
ZGVjb2RlcjsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiBtX2RlY29kZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCmluZGV4IGJkYTdkOWI3MmYyZmQw
MTIzOWE3ZTMyZWQ2ZjQ4NGE5MTg1MzUyYjkuLjE4MDUxNGFkZGVlYWRhOTZhNzljOGM4Y2EyZDhl
MzdhZWE5N2QwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9FbmNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0VuY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsOCArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBFbmNvZGVyQWRhcHRlcjo6RW5jb2RlckFkYXB0ZXIoKQotICAgIDogbV9lbmNvZGVy
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApKQorICAgIDogbV9lbmNvZGVyKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCkpCiB7CisgICAgLy8gV2UgdXNlZCB0byBh
bHdheXMgZW5jb2RlIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgaGVyZS4gS2VlcCBkb2luZyBz
byBmb3Igbm93LgorICAgIG1fZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pigw
KSk7CiB9CiAKIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgRW5jb2RlckFkYXB0ZXI6OmRhdGFSZWZl
cmVuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNmY2N2VkMDIyOTEyNWU3Mzg0OThhMGYyNjcyYzg4NGJjMzY4ODM2NS4uNDNlZDE2YjFhMzlj
OThkNzVlYmZlNTQxOTYwYmVhNGViZWY5OWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMDExLDE0ICsxMDExLDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6
cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VEYXRhLmRhdGEo
KSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyPiBkZWNvZGVyID0gQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyOjpjcmVhdGUobWVzc2FnZURh
dGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2VOYW1l
OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVjb2RlKG1lc3NhZ2VOYW1lKSkKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShtZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZlB0cjxBUElPYmplY3Q+IG1lc3NhZ2VCb2R5OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVj
b2RlKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VCb2R5KSkpCisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVz
c2FnZUJvZHkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oKaW5kZXggZWJjZDZjYzM1ZjcwZmZmZjZlZDA4YmUzMTlhMTMxNGM3ZDYy
YjA1ZC4uMDZhM2ZkZDBiYzgzMzBhY2M2ZTM3M2Q2MTVlYmMwM2ExMzIyMjIxZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNDA5NCw2ICs0MDk0LDIyIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBD
XE1lc3NhZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJUENcTWVzc2FnZURlY29kZXIuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRm
b3JtXENvcmVJUENcTWVzc2FnZUVuY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5j
b2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlSUQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168825</attachid>
            <date>2012-10-15 17:58:06 -0700</date>
            <delta_ts>2012-10-16 14:06:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121015175656.patch</filename>
            <type>text/plain</type>
            <size>84189</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLmU5YzY3NTZkMGRkZWY0MGM2NzE1MjgxYmFmMDJkOGNlOGU2YjMz
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCw5ICsyOCw5IEBACiAjaWZuZGVmIENvbm5lY3Rpb25faAogI2RlZmluZSBDb25uZWN0aW9u
X2gKIAotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBkb3VibGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
Y3JlYXRlU3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSAwKTsKLSAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+
KTsKKyAgICBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVz
c2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElE
KTsKKyAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5j
UmVwbHkoUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHZhcmlhbnRzIG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRl
ZC4KICAgICAvLyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQg
dGFrZSBhIG1lc3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIH07
CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2lu
Z01lc3NhZ2U7CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01l
c3NhZ2U7CiAKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2Vy
dmVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwx
NCArMjUxLDE0IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUg
dGltZW91dCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2Uo
TWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAg
Ci0gICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwg
ZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093
blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0
LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVj
b2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNv
bm5lY3Rpb24gd29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0lu
Y29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rl
cj4pOworICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNs
aWVudCopOwogICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVu
dCopOwpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRn
b2luZ01lc3NhZ2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01l
c3NhZ2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJv
b2wgc2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNv
ZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0
cjxNZXNzYWdlRW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAg
Ci0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwor
ICAgIHR5cGVkZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENv
bm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNo
U3luY01lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhy
ZWFkLgpAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2Fn
ZU11dGV4OwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3Vt
ZW50RGVjb2Rlcio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFw
OwogCiAgICAgLy8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2Fp
dGluZyBvbiBhIHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3
ICszMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxs
IGJlIG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAg
ICAgLy8gbWVzc2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVy
KiByZXBseURlY29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAK
ICAgICAgICAgLy8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVj
ZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5
OwpAQCAtMzQwLDkgKzM0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkK
KyAgICAgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2Rlcigp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0g
YWRvcHRQdHIocmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gcmVwbHkgPSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNv
ZGVyID0gMDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2Uo
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
cmVhZEJ1ZmZlcjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1
bWVudEVuY29kZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdl
RW5jb2Rlcj4gbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0
YXRlOwogICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCkBAIC00MDksMjIgKzQwOSwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0
ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsK
KyAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3Jl
YXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Up
OwogICAgIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwg
YXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwg
bWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQg
c3luY1NlbmRGbGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBP
d25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2Fn
ZUFyZ3VtZW50RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIs
ICIiLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUg
dGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShtZXNzYWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBO
b3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJn
dW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6
Om1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRp
bWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVx
dWVzdElELCBlbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAg
aWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQz
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3Rp
bmF0aW9uSUQsIHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9
IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NDQ5LDEzICs0NDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KIGlubGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3Nh
Z2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBV
JiByZXBseSwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRl
U3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7
CisgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKCIiLCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShh
cmd1bWVudHMpOworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8v
IE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQo
bWVzc2FnZUlEKSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGlt
ZW91dCk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3lu
Y01lc3NhZ2UoTWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVs
ZWFzZSgpLCB0aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIApAQCAtNDY2LDEwICs0NjYsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlv
bjo6ZGVwcmVjYXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LAogdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVw
cmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQm
IGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29k
ZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVu
dEVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2Uo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMGE3NjQy
YzQwNTkxZTM5ZDljMzFmMWNiYWNhOWUxNjkzMTg4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZURlY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK1Bhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVm
ZmVyKQoreworICAgIERlcXVlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50cykpOworfQorCitQ
YXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IERh
dGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50
cykpOworfQorCitNZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKCkKK3sKK30KKworTWVz
c2FnZURlY29kZXI6Ok1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwg
RGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorICAgIDogQXJndW1lbnREZWNvZGVyKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGF0dGFjaG1lbnRzKQoreworICAgIENTdHJpbmcg
bWVzc2FnZVJlY2VpdmVyTmFtZTsKKyAgICBpZiAoIWRlY29kZShtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1N0cmluZyBtZXNzYWdlTmFtZTsKKyAgICBpZiAo
IWRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGRlY29kZVVJbnQ2
NChtX2Rlc3RpbmF0aW9uSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFkZTIxYjJmMTg3ZmY1ZWVhOTc3OWQ3YjYzMTRlMmY1ZmFkM2ZlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdlRGVjb2Rlcl9oCisj
ZGVmaW5lIE1lc3NhZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworCitj
bGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29kZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRGF0YVJl
ZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
KyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRlOgorICAgIE1lc3NhZ2VE
ZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VEZWNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTViYWNkMGM3Yzg4MTE1MzA1OTY3M2VlYmI1N2RjYjkwMjY1M2Zi
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworICAgIFBhc3NPd25QdHI8TWVz
c2FnZUVuY29kZXI+IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlRW5jb2RlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCkpOworfQorCitNZXNz
YWdlRW5jb2Rlcjo6TWVzc2FnZUVuY29kZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgZW5jb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIGVuY29kZShtZXNzYWdl
TmFtZSk7CisgICAgZW5jb2RlKGRlc3RpbmF0aW9uSUQpOworfQorCitNZXNzYWdlRW5jb2Rlcjo6
fk1lc3NhZ2VFbmNvZGVyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhODc4NTBiOTliYzNhYzU2NTQwMDNlYjc1ZDBhZmU3N2U2MzU5YWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVzc2FnZUVuY29kZXJfaAor
I2RlZmluZSBNZXNzYWdlRW5jb2Rlcl9oCisKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK2NsYXNz
IE1lc3NhZ2VFbmNvZGVyIDogcHVibGljIEFyZ3VtZW50RW5jb2RlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGNyZWF0ZShjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisgICAgdmlydHVhbCB+TWVzc2FnZUVuY29kZXIoKTsKKworcHJpdmF0
ZToKKyAgICBNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VFbmNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgK
aW5kZXggZTJiYTBiNTZmNWE1MTNkMTAxZGRiOTE3ZWJkNjg1MGQzOTNmMjQ4Zi4uNzQzODEwNTBj
N2RkN2Q1NmFmMWE0ZTEyYzIwNGVjOWY2M2IzNDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBwdWJs
aWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICB7Ci0gICAgICAgIE93blB0cjxBcmd1bWVu
dEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3Rp
bmF0aW9uSUQpOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAg
ICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNy
ZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5z
ZW5kTWVzc2FnZShNZXNzYWdlSUQoVTo6bWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4odGhpcyktPnNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxB
cmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlcikKKyAgICBib29sIHNlbmRNZXNzYWdlKE1l
c3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiAg
ICAgewogICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLT5jb25uZWN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKIAotICAgICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudEVuY29k
ZXIpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBl
bmNvZGVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5j
KGNvbnN0IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgZG91Ymxl
IHRpbWVvdXQgPSBDb25uZWN0aW9uOjpOb1RpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDcyOTg5ZGRh
MDFhYTMxZTE5YTQ0NjY2Y2VjODhlYWMxZmU1ZTc0YTUuLjhkNDIzN2NjZjc3NmQ4ZTJhYmQ3MGFl
ODdmNTc2ZmNiOTc0ZDQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgT3duUHRyPEFy
Z3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUo
MCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93blB0cjxNZXNzYWdlRW5j
b2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCAwKTsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNz
YWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOwor
ICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OkluaXRpYWxpemVD
b25uZWN0aW9uKSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgZGVh
ZCBuYW1lIGhhbmRsZXIgZm9yIG91ciBzZW5kIHBvcnQuCiAgICAgICAgIGluaXRpYWxpemVEZWFk
TmFtZVNvdXJjZSgpOwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVu
KCkKICAgICBpZiAobV9leGNlcHRpb25Qb3J0KSB7CiAgICAgICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9leGNlcHRpb25Qb3J0LCBXb3JrUXVldWU6
Ok1hY2hQb3J0RGF0YUF2YWlsYWJsZSwgYmluZCgmQ29ubmVjdGlvbjo6ZXhjZXB0aW9uU291cmNl
RXZlbnRIYW5kbGVyLCB0aGlzKSk7CiAKLSAgICAgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
YXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7Ci0gICAgICAgIGFy
Z3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIDApOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OwogCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6U2V0RXhj
ZXB0aW9uUG9ydCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAgICBzZW5kTWVz
c2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBlbmNvZGVy
LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTcsOSArMTU3LDkg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBh
cmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlE
IG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICBW
ZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBhcmd1bWVudHMtPnJlbGVhc2VBdHRhY2ht
ZW50cygpOworICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IGVuY29kZXItPnJl
bGVhc2VBdHRhY2htZW50cygpOwogICAgIAogICAgIHNpemVfdCBudW1iZXJPZlBvcnREZXNjcmlw
dG9ycyA9IDA7CiAgICAgc2l6ZV90IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMgPSAwOwpA
QCAtMTcxLDE0ICsxNzEsMTQgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgICAg
IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMrKzsKICAgICB9CiAgICAgCi0gICAgc2l6ZV90
IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCBu
dW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7Cisg
ICAgc2l6ZV90IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGVuY29kZXItPmJ1ZmZlclNp
emUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRv
cnMpOwogICAgIGNoYXIgYnVmZmVyW2lubGluZU1lc3NhZ2VNYXhTaXplXTsKIAogICAgIGJvb2wg
bWVzc2FnZUJvZHlJc09PTCA9IGZhbHNlOwogICAgIGlmIChtZXNzYWdlU2l6ZSA+IHNpemVvZihi
dWZmZXIpKSB7CiAgICAgICAgIG1lc3NhZ2VCb2R5SXNPT0wgPSB0cnVlOwogCi0gICAgICAgIGF0
dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJUVUFMX0NPUFksIGZhbHNlKSk7CisgICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVy
LT5idWZmZXJTaXplKCksIE1BQ0hfTVNHX1ZJUlRVQUxfQ09QWSwgZmFsc2UpKTsKICAgICAgICAg
bnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycysrOwogICAgICAgICBtZXNzYWdlU2l6ZSA9IG1h
Y2hNZXNzYWdlU2l6ZSgwLCBudW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1v
cnlEZXNjcmlwdG9ycyk7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RW5jCiAKICAgICAvLyBDb3B5IHRoZSBkYXRhIGlmIGl0IGlzIG5vdCBiZWluZyBzZW50
IG91dC1vZi1saW5lLgogICAgIGlmICghbWVzc2FnZUJvZHlJc09PTCkKLSAgICAgICAgbWVtY3B5
KG1lc3NhZ2VEYXRhLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUo
KSk7CisgICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSk7CiAKICAgICBBU1NFUlQobV9zZW5kUG9ydCk7CiAgICAgCkBAIC0y
NTEsMTQgKzI1MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVEZWFkTmFtZVNvdXJj
ZSgpCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlciht
X3NlbmRQb3J0LCBXb3JrUXVldWU6Ok1hY2hQb3J0RGVhZE5hbWVOb3RpZmljYXRpb24sIGJpbmQo
JkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IGNyZWF0ZUFyZ3VtZW50RGVjb2RlcihtYWNoX21zZ19o
ZWFkZXJfdCogaGVhZGVyKQorc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiB7CiAgICAgaWYgKCEo
aGVhZGVyLT5tc2doX2JpdHMgJiBNQUNIX01TR0hfQklUU19DT01QTEVYKSkgewogICAgICAgICAv
LyBXZSBoYXZlIGEgc2ltcGxlIG1lc3NhZ2UuCi0gICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhl
YWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYm9keSwg
Ym9keVNpemUpKTsKKyAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUg
LSBzaXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOworCisgICAgICAgIHJldHVybiBNZXNzYWdlRGVj
b2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UoYm9keSwgYm9keVNpemUpKTsKICAgICB9CiAKICAg
ICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgJiBNZXNzYWdlQm9keUlz
T09MOwpAQCAtMzAzLDIyICszMDMsMjIgQEAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBjcmVhdGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWQKICAgICAg
ICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUg
PSBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpOwogCi0gICAgICAgIEFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnREZWNvZGVyOworICAgICAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29k
ZXI7CiAKICAgICAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFy
Z3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VC
b2R5U2l6ZSk7CisgICAgICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShE
YXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNz
YWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRhY2htZW50cyk7CisgICAgICAgICAgICBkZWNv
ZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7CiAKICAgICAgICAgdm1fZGVhbGxvY2F0ZSht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0YWNobWVudC5zaXplKCkpOwog
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihhcmd1bWVudERlY29kZXIpOworICAgICAgICByZXR1
cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5t
c2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPiho
ZWFkZXIpKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplKSwgYXR0YWNobWVudHMpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91
bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAtMzYwLDggKzM2
MCw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIE1lc3NhZ2VJRCBtZXNzYWdlSUQgPSBNZXNzYWdlSUQ6OmZyb21J
bnQoaGVhZGVyLT5tc2doX2lkKTsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVu
dHMgPSBjcmVhdGVBcmd1bWVudERlY29kZXIoaGVhZGVyKTsKLSAgICBBU1NFUlQoYXJndW1lbnRz
KTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVNZXNzYWdlRGVj
b2RlcihoZWFkZXIpOworICAgIEFTU0VSVChkZWNvZGVyKTsKIAogICAgIGlmIChtZXNzYWdlSUQg
PT0gTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbikpIHsKICAg
ICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwpAQCAtMzY5LDggKzM2OSw5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVCghbV9zZW5k
UG9ydCk7CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShwb3J0KSkgeworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwb3J0KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IERpc2Nvbm5lY3QuCisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zOTAsMTQg
KzM5MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQog
CiAgICAgaWYgKG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2Vw
dGlvblBvcnQpKSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHNldE1hY2hFeGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1
bWVudHMucmVsZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwg
ZGVjb2Rlci5yZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25T
b3VyY2VFdmVudEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkx
Y2FhZjZmY2NkZjkxYjIyYzMxODI0OS4uMmQ1ODU2NzdkN2Y1ODBhYTYyNTJjZTlkZmE3OGFhYWQ4
ZWZkMDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMjgyLDEzICsyODEsMTMgQEAgYm9vbCBDb25uZWN0
aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlP
T0woKSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihv
b2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRE
ZWNvZGVyOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoYXR0
YWNobWVudHMuaXNFbXB0eSgpKQotICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1l
bnREZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICAgICAg
ZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSkpOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgYXR0YWNobWVudHMpOworICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6
OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgp
KSwgYXR0YWNobWVudHMpOwogCi0gICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShtZXNzYWdlSW5m
by5tZXNzYWdlSUQoKSwgYWRvcHRQdHIoYXJndW1lbnREZWNvZGVyKSk7CisgICAgcHJvY2Vzc0lu
Y29taW5nTWVzc2FnZShtZXNzYWdlSW5mby5tZXNzYWdlSUQoKSwgZGVjb2Rlci5yZWxlYXNlKCkp
OwogCiAgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPiBtZXNzYWdlTGVuZ3RoKSB7CiAgICAgICAg
IG1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3Nh
Z2VMZW5ndGgsIG1fcmVhZEJ1ZmZlclNpemUgLSBtZXNzYWdlTGVuZ3RoKTsKQEAgLTQ0MSw3ICs0
NDAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMo
KSBjb25zdAogICAgIHJldHVybiBtX2lzQ29ubmVjdGVkOwogfQogCi1ib29sIENvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1
bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyKQogewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChtX3NvY2tldE5vdGlmaWVyKTsK
QEAgLTQ0OSw3ICs0NDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91bnQgKiBzaXpl
b2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01lc3NhZ2VJbmxp
bmUpOwogCi0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gYXJndW1lbnRzLT5y
ZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMg
PSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICBBdHRhY2htZW50UmVzb3VyY2VH
dWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0
dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRzLnNp
emUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkpIHsKQEAgLTQ1NywxMCArNDU2LDEwIEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBNZXNzYWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGFyZ3VtZW50cy0+YnVmZmVy
U2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOwotICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhC
b2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBz
aXplb2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwotICAgIGlm
IChtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4gbWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRz
LT5idWZmZXJTaXplKCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBv
b2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5i
dWZmZXJTaXplKCkpOworICAgIE1lc3NhZ2VJbmZvIG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOworICAgIHNpemVfdCBtZXNz
YWdlU2l6ZVdpdGhCb2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50
cy5zaXplKCkgKiBzaXplb2YoQXR0YWNobWVudEluZm8pKSArIGVuY29kZXItPmJ1ZmZlclNpemUo
KTsKKyAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYm
IGVuY29kZXItPmJ1ZmZlclNpemUoKSkgeworICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShlbmNv
ZGVyLT5idWZmZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NzAsNyArNDY5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJn
dW1lbnRFbmMKIAogICAgICAgICBtZXNzYWdlSW5mby5zZXRNZXNzYWdlQm9keU9PTCgpOwogCi0g
ICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9keS0+ZGF0YSgpLCBhcmd1bWVudHMtPmJ1ZmZlcigp
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSk7CisgICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9k
eS0+ZGF0YSgpLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKIAog
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoaGFuZGxlLnJlbGVhc2VUb0F0dGFjaG1lbnQoKSk7
CiAgICAgfQpAQCAtNTQwLDkgKzUzOSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
ICAgICsraW92TGVuZ3RoOwogICAgIH0KIAotICAgIGlmICghbWVzc2FnZUluZm8uaXNNZXNzYWdl
Qm9keU9PTCgpICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJndW1lbnRzLT5idWZm
ZXIoKSk7Ci0gICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9sZW4gPSBhcmd1bWVudHMtPmJ1ZmZl
clNpemUoKTsKKyAgICBpZiAoIW1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBlbmNv
ZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihlbmNvZGVyLT5idWZmZXIoKSk7CisgICAgICAgIGlvdltp
b3ZMZW5ndGhdLmlvdl9sZW4gPSBlbmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgICsraW92
TGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBmNTFhZDA3OWFiNzA3ZjdiYmEwZTBhNTg5
YTQwYWEzZWZkNzQyMTk1Li4zMjMzZGQ3MWU5YjBiZTlmNzA4MDFmNWI5NTQxM2MxOWEwNDE2Y2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIkJpbmFyeVNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTcyLDcgKzE3MSw4IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgICAgIHVuc2lnbmVkIG1lc3Nh
Z2VJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obV9yZWFkQnVmZmVyLmRhdGEoKSAr
IHJlYWxCdWZmZXJTaXplKTsKIAotICAgICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShN
ZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlEKSwgYWRvcHRQdHIobmV3IEFyZ3VtZW50RGVjb2Rl
cihtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0
YVJlZmVyZW5jZShtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlE
KSwgZGVjb2Rlci5yZWxlYXNlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBvdXQg
dGhlIHNpemUgb2YgdGhlIG5leHQgbWVzc2FnZSBpbiB0aGUgcGlwZSAoaWYgdGhlcmUgaXMgb25l
KSBzbyB0aGF0IHdlIGNhbiByZWFkCkBAIC0yNDcsOSArMjQ3LDkgQEAgdm9pZCBDb25uZWN0aW9u
Ojp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28gd2UgYXJlIG5v
dyBkb25lIHdpdGggaXRzIGFyZ3VtZW50cy4gQ2xlYXJpbmcgdGhpcyBtZW1iZXIKKyAgICAvLyBU
aGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHNvIHdlIGFyZSBub3cgZG9uZSB3aXRoIGl0
cyBlbmNvZGVyLiBDbGVhcmluZyB0aGlzIG1lbWJlcgogICAgIC8vIHdpbGwgYWxsb3cgdXMgdG8g
c2VuZCBtZXNzYWdlcyBhZ2Fpbi4KLSAgICBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50cyA9IG51bGxw
dHI7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdyB0
aGF0IHRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHRyeSB0byBzZW5kIGEg
bmV3IG1lc3NhZ2UuCiAgICAgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKQEAgLTI3NCwyNCArMjc0
LDI0IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBhbGxvdyBzZW5kaW5nIG9uZSBhc3luY2hyb25vdXMg
bWVzc2FnZSBhdCBhIHRpbWUuIElmIHdlIHdhbnRlZCB0byBzZW5kIG1vcmUgdGhhbiBvbmUKICAg
ICAvLyBhdCBvbmNlLCB3ZSdkIGhhdmUgdG8gdXNlIG11bHRpcGxlIE9WRVJMQVBQRUQgc3RydWN0
dXJlcyBhbmQgaG9sZCBvbnRvIG11bHRpcGxlIHBlbmRpbmcKLSAgICAvLyBBcmd1bWVudEVuY29k
ZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3VzIG1lc3Nh
Z2UpLgotICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVBcmd1bWVudHM7CisgICAgLy8gTWVzc2Fn
ZUVuY29kZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3Vz
IG1lc3NhZ2UpLgorICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogfQogCi1ib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFz
c093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyKQogewotICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVBcmd1bWVudHMp
OworICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKIAogICAgIC8vIEp1c3QgYmFp
bCBpZiB0aGUgaGFuZGxlIGhhcyBiZWVuIGNsb3NlZC4KICAgICBpZiAobV9jb25uZWN0aW9uUGlw
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgYXJndW1lbnRzLT5lbmNvZGVVSW50
MzIobWVzc2FnZUlELnRvSW50KCkpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihtZXNzYWdl
SUQudG9JbnQoKSk7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIAotICAg
IGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBh
cmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBpZiAoOjpX
cml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1
ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKICAgICAgICAgLy8gV2Ugc3VjY2Vzc2Z1
bGx5IHNlbnQgdGhpcyBtZXNzYWdlLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDksOSArMzA5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xk
IG9udG8gdGhlIGFyZ3VtZW50cyBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgZGVzdHJveWVkCisgICAg
Ly8gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBz
byB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29t
cGxldGVzLgotICAgIG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIG1f
cGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXI7CiAKICAgICAvLyBXZSBjYW4gb25seSBzZW5k
IG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRm
b3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCBjOGEwYWI5MmFiOTBiZDdm
N2VkNzIzNWU2OTBkM2I0ODgwMjlhODUyLi5iZTllZTZkZjdkMGFmMjY0ZDE1Y2ViMjBjOWFjMTE5
MjYwOTA2M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CkBAIC01MDIsNyArNTAyLDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgQVNTRVJUKG1fYXJndW1lbnRzKTtcbicpCiAgICAgICAgICAgICByZXN1bHQgKz0g
WycgICAgbV9hcmd1bWVudHMtPmVuY29kZSglcyk7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29s
IHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShtX2FyZ3VtZW50cy5yZWxlYXNl
KCkpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpN
ZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTtcbicpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHJlc3VsdDtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IGRkOWZiZWNjM2YxOTFiMzhmYmFiYTM4ZTYz
MWQ4MzIxM2RlMDhlZjkuLmQ0NTc1NDg4MjMzNjhmMGNkMWQwMDdjOWQzZTQzMmJjMjA5ODA0MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0
dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5p
dHRlc3QucHkKQEAgLTMyMyw3ICszMjMsNyBAQCBfZXhwZWN0ZWRfaGVhZGVyID0gIiIiLyoKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBB
cmd1bWVudEVuY29kZXI7CisgICAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgQ29u
bmVjdGlvbjsKICAgICBjbGFzcyBEdW1teVR5cGU7CiAgICAgY2xhc3MgTWFjaFBvcnQ7CkBAIC00
NjcsMTQgKzQ2NywxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2lucyA6IENvcmVJUEM6OkFyZ3VtZW50czE8
Ym9vbD4gewogc3RydWN0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogQ29yZUlQQzo6QXJn
dW1lbnRzMTxjb25zdCBXVEY6OlN0cmluZyY+IHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNz
YWdlSUQgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOwogICAgIHN0cnVjdCBEZWxheWVk
UmVwbHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAg
ICAgIERlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOworICAgICAgICBEZWxheWVkUmVwbHkoUGFz
c1JlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4pOwogICAgICAgICB+RGVsYXllZFJlcGx5KCk7CiAKICAgICAgICAgYm9vbCBzZW5k
KGNvbnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwotICAgICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtX2FyZ3Vt
ZW50czsKKyAgICAgICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtX2VuY29kZXI7
CiAgICAgfTsKIAogICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzMTxDb3JlSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHN0cnVjdCBHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpT
dHJpbmcmPiB7CiBzdHJ1Y3QgVGVzdE11bHRpcGxlQXR0cmlidXRlcyA6IENvcmVJUEM6OkFyZ3Vt
ZW50czAgewogICAgIHN0YXRpYyBjb25zdCBLaW5kIG1lc3NhZ2VJRCA9IFRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXNJRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+KTsKKyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5
ZWRSZXBseSgpOwogCiAgICAgICAgIGJvb2wgc2VuZCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBl
ZGVmIENvcmVJUEM6OkFyZ3VtZW50czAgUmVwbHk7CkBAIC02NDAsOSArNjQwLDkgQEAgbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBhZ2UgewogCi1HZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4gYXJndW1lbnRzKQorR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlv
biwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisg
ICAgLCBtX2VuY29kZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NTMsMTYgKzY1MywxNiBAQCBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkK
IAogYm9vbCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNv
bnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAg
ICBBU1NFUlQobV9hcmd1bWVudHMpOwotICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
bV9hcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBtX2Vu
Y29kZXItPmVuY29kZShjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29u
bmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFy
Z3VtZW50cykKK1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJl
cGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBtX2VuY29k
ZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NzMsOCArNjczLDggQEAgVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9vbCBUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewotICAgIEFTU0VSVChtX2FyZ3Vt
ZW50cyk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9h
cmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBib29sIHJl
c3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxD
b3JlSVBDOjpNZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBt
X2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRy
PENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdl
SUQuZ2V0PE1lc3NhZ2VzOjpXZWJQYWdlOjpLaW5kPigpKSB7CiAgICAgY2FzZSBNZXNzYWdlczo6
V2ViUGFnZTo6Q3JlYXRlUGx1Z2luSUQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlv
bi5jcHAKaW5kZXggZDk0MTMxOGRiMjRjY2EzNjhjYzExN2FlMmJmMWNjYTQ2NzZjMTQ0YS4uOTc0
M2E3OGM3NzA4NDQ0OTM3YjZmOWFlMWYxNjhlN2UyNmZiZTE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVz
c2FnZUJvZAogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBP
d25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsK
ICAgICBtZXNzYWdlRGF0YS0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdl
Qm9keShtZXNzYWdlRGF0YS5nZXQoKSwgbWVzc2FnZUJvZHkpOwogCkBAIC02MiwxNCArNjIsMTQg
QEAgdm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2QKIAogdm9pZCBXZWJDb25uZWN0aW9uOjpoYW5kbGVN
ZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2VEYXRhKQogewotICAg
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciBtZXNzYWdlRGVjb2RlcihtZXNzYWdlRGF0YS5kYXRh
KCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcj4gZGVjb2RlciA9IENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VE
YXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlTmFt
ZTsKLSAgICBpZiAoIW1lc3NhZ2VEZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiBtZXNzYWdlQm9keTsKLSAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5
KCZtZXNzYWdlRGVjb2RlciwgbWVzc2FnZUJvZHkpKQorICAgIGlmICghZGVjb2RlTWVzc2FnZUJv
ZHkoZGVjb2Rlci5nZXQoKSwgbWVzc2FnZUJvZHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggM2FiZDE0ZDQ2
YWI5ZjVkYTMxNjQ1YzkyNWU1ZTc1NWUzMmVlMmQ5MS4uYjE0ZDFmMzQ3YzUwMGU5ODgyOTQ5OTll
OTViOGU3ZDM1ZDBkNzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBA
IC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
ICAgIGNsYXNzIE1lc3NhZ2VEZWNvZGVyOworICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwogICAg
IGNsYXNzIE1lc3NhZ2VJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2FmYzE4YzAw
MDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uYmZhN2QzYmM2ODU2ODI2NWM2ZTAwYzQ2Mzg2ODM5MmJl
ODBlMWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNSw2ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIFwKICAgICBQbGF0Zm9ybS9D
b3JlSVBDL0RhdGFSZWZlcmVuY2UuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNz
YWdlLmggXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisgICAgUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VJRC5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlci5oIFwKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIFwKQEAgLTM4NCw2ICszODYs
OCBAQCBTT1VSQ0VTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwIFwK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9Db3Jl
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcCBcCisgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBcCiAgICAgUGxhdGZvcm0v
TG9nZ2luZy5jcHAgXAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGQzZGFiNmM3NDA1ODVlNTNiOTBlZjJiODQzZGM4
MWZkNzAxOTNjN2YuLmUyMTVlODJjYTdhNDVhODE4ZTBjMjIwMmE4MmNkZDc1YmIxYmQxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5OCw3ICszOTgsNyBA
QCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJv
Y2VzcygpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fbWVzc2FnZXNUb0luamVj
dGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IHBhaXI8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0PiA+JiBtZXNzYWdlID0gbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKIAotICAgICAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVh
dGUoKTsKIAogICAgICAgICAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlLmZpcnN0KTsK
ICAgICAgICAgICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5j
b2RlcihtZXNzYWdlLnNlY29uZC5nZXQoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgV2Vi
Q29udGV4dDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSU9iamVjCiAKICAgICAvLyBGSVhNRTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNz
YWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVm
cyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBwcm9jZXNzLgogCi0gICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBt
ZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVz
c2FnZURhdGEtPmVuY29kZShtZXNzYWdlTmFtZSk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTZiZTI4ZjA5NTUwMDJm
NjUwNmI5Y2Y1MmI5NDg5NjI3YTc0OGQ5NC4uM2RhZWRiMTM3NDJlNGQ0MzQyYjQwMjcyODI5M2Zk
ZWVlNmExM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25u
ZWN0KCkKICAgICBtX2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1ib29s
IFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cywgdW5zaWdu
ZWQgbWVzc2FnZVNlbmRGbGFncykKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewogICAgIC8vIElm
IHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8g
c3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUK
ICAgICAvLyBhIENvcmVJUEMgY29ubmVjdGlvbi4KICAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewot
ICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZV9wYWlyKENvcmVJUEM6OkNvbm5l
Y3Rpb246Ok91dGdvaW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyksIG1lc3NhZ2VTZW5k
RmxhZ3MpKTsKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3Jl
SVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVz
c2FnZVNlbmRGbGFncykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxDb3JlSQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5k
TWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cywgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdl
U2VuZEZsYWdzKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1NzQ4
NmM3ZGFhNmI0ZDFkYTQ3ZjY5NDk2ZmNiYzUyYWZlMzhkMTI3Li43NTI0ZGYyZmY0NjAwZjhlYjVm
Njg2YzBkMWU4NDk3ZDI1MTBlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaWxsIHBv
dGVudGlhbGx5IGNhdXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJlIGZyZWVkLgog
ICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpN
ZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiwgdW5zaWduZWQg
bWVzc2FnZVNlbmRGbGFncyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdl
SUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzKTsKIAogICAgIC8vIENvcmVJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lk
IGFkZEJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBiYWNrRm9yd2FyZERhdGEpOwpAQCAtMjE2
LDE5ICsyMTYsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+
CiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZGVwcmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5k
TWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJl
bGVhc2UoKSwgMCk7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCht
ZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIE93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgIGFyZ3VtZW50RW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKLSAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rl
ci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMmRhZTM1NTZl
MjZlMTA0NWI0NGM2ZjEzZTY4YmNlZjBiMWQxODgwLi5mMmQzYjRkNzc4MzQ0ODNlMGFhMGZhOWQx
NDkxNTY0ZDkwZDUyMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MSw2ICs4MSwxMCBAQAogCQkxQTIxNjFCMTExRjM3NjY0
MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjE2MUFGMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1
bnRpbWVPYmplY3RNYXAuY3BwICovOyB9OwogCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyog
TlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjE2MkFFMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRp
ZXMuY3BwICovOyB9OwogCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIxNjJBRjExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi87IH07CisJ
CTFBMjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGQzE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwICovOyB9OworCQkxQTIzMjhGRjE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5oICovOyB9OworCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5
MDAxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI5
MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyog
TWVzc2FnZURlY29kZXIuaCAqLzsgfTsKIAkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovOyB9
OwogCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1RjExMUY1MzFFODAw
QzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMUEyNEJFRDUxMjA4OTREMTAwRkJC
MDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICov
OyB9OwpAQCAtMTIwNyw2ICsxMjExLDEwIEBACiAJCTFBMjE2MkFGMTFGMzg5NzEwMDhBRDBGNSAv
KiBOUFJ1bnRpbWVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlBSdW50aW1lVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJG
MEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMjMyOEZD
MTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVz
c2FnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMTE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5
IC8qIFNoYXJlZE1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRNZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTgsOCArMjcyNiw2
IEBACiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICov
LAogCQkJCUUxRURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAotCQkJCTI5MTIxNzA1
MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCi0JCQkJMjkx
MjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzgy
LDYgKzI3ODgsMTAgQEAKIAkJCQkxQThFRkRGRDEyNTNDQjZFMDBGNzA2N0YgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCiAJCQkJMUE4RUZERjkxMjUzQ0FBMjAwRjcwNjdGIC8qIERhdGFSZWZlcmVu
Y2UuaCAqLywKIAkJCQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5o
ICovLAorCQkJCTFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAg
Ki8sCisJCQkJMUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8s
CisJCQkJMUEyMzI4RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLywK
KwkJCQkxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLywKIAkJ
CQlCQzAzMkRBNDEwRjQzN0QxMDA1OEMxNUEgLyogTWVzc2FnZUlELmggKi8sCiAJCQkJMUEzRUVE
MTExNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBD
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLApAQCAtNDY3OSw2
ICs0Njg5LDggQEAKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUw
MTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyMzI4RkYxNjJDODY2QTAw
RDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTIzMjkwMzE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTYy
Miw2ICs1NjM0LDggQEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFREZFMTIxNjI4
Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOTAyMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCmluZGV4
IDc2MzMwNWNiZWI5Mzk0ODcyNTNmODZlZmJlYTkzZGU1NjBlYzI4OGIuLmQwOWE2NDdmZGVjNmI5
YmM1YWUwYzBhMjQ4NDhiMDIwYThkZDMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2RlY29kZXIo
YnVmZmVyLCBidWZmZXJTaXplKQorICAgIDogbV9kZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiB7CiB9CiAKIGJvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiB7CiAgICAgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29k
ZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2UpKQorICAgIGlmICghbV9kZWNv
ZGVyLT5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYnl0ZXMgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOwpA
QCAtNDksNDIgKzQ5LDQyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rv
cjx1aW50OF90PiYgYnl0ZXMpCiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJvb2woYm9v
bCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVCb29sKHZhbHVlKTsKKyAg
ICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVCb29sKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlVUludDE2KHVpbnQxNl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9k
ZWNvZGVyLmRlY29kZVVJbnQxNih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
VUludDE2KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDMyKHVp
bnQzMl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQzMih2YWx1
ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDMyKHZhbHVlKTsKIH0KIAogYm9v
bCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDY0KHVpbnQ2NF90JiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlVUludDY0KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
SW50MzIoaW50MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVJbnQz
Mih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlSW50MzIodmFsdWUpOwogfQog
CiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVJbnQ2NChpbnQ2NF90JiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUludDY0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVJbnQ2NCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29k
ZUZsb2F0KGZsb2F0JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUZsb2F0
KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVGbG9hdCh2YWx1ZSk7CiB9CiAK
IGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZURvdWJsZShkb3VibGUmIHZhbHVlKQogewotICAg
IHJldHVybiBtX2RlY29kZXIuZGVjb2RlRG91YmxlKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNv
ZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBEZWNvZGVyQWRh
cHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYgdmFsdWUpCiAgICAgLy8gd2l0aG91dCBicmVha2lu
ZyBlbmNvZGluZy9kZWNvZGluZyBvZiB0aGUgaGlzdG9yeSB0cmVlLgogCiAgICAgdWludDMyX3Qg
bGVuZ3RoOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZShsZW5ndGgpKQorICAgIGlmICghbV9k
ZWNvZGVyLT5kZWNvZGUobGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKQEAgLTEw
NiwyMiArMTA2LDIyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcm
IHZhbHVlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IGxlbmd0aEluQnl0ZXM7Ci0gICAgaWYgKCFt
X2RlY29kZXIuZGVjb2RlKGxlbmd0aEluQnl0ZXMpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNv
ZGUobGVuZ3RoSW5CeXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChsZW5n
dGhJbkJ5dGVzICUgc2l6ZW9mKFVDaGFyKSB8fCBsZW5ndGhJbkJ5dGVzIC8gc2l6ZW9mKFVDaGFy
KSAhPSBsZW5ndGgpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAg
IG1fZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghbV9kZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+
KGxlbmd0aCkpIHsKLSAgICAgICAgbV9kZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgaWYgKCFt
X2RlY29kZXItPmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VUNoYXI+KGxlbmd0aCkpIHsK
KyAgICAgICAgbV9kZWNvZGVyLT5tYXJrSW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5n
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICBpZiAoIW1fZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgX19hbGlnbm9mKFVDaGFyKSkpCisgICAgaWYgKCFt
X2RlY29kZXItPmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBfX2FsaWdub2YoVUNoYXIpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSBzdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCmluZGV4IGQ2YjRl
Yjc2NmFmMTZhMTgyOWNmOTU2ZmQ5NzQ2NWU4YzlkYzRhNWQuLjY3MWUxODk2ZjUwOTUyZThmYzY5
NjVkMmQwNDhiNmIzZjY5M2E5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGRlY29kZURvdWJsZShkb3VibGUmKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGVjb2RlU3RyaW5nKFN0cmluZyYpOwogCi0gICAgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1f
ZGVjb2RlcjsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiBtX2RlY29kZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCmluZGV4IGJkYTdkOWI3MmYyZmQw
MTIzOWE3ZTMyZWQ2ZjQ4NGE5MTg1MzUyYjkuLjE4MDUxNGFkZGVlYWRhOTZhNzljOGM4Y2EyZDhl
MzdhZWE5N2QwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9FbmNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0VuY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsOCArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBFbmNvZGVyQWRhcHRlcjo6RW5jb2RlckFkYXB0ZXIoKQotICAgIDogbV9lbmNvZGVy
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApKQorICAgIDogbV9lbmNvZGVyKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCkpCiB7CisgICAgLy8gV2UgdXNlZCB0byBh
bHdheXMgZW5jb2RlIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgaGVyZS4gS2VlcCBkb2luZyBz
byBmb3Igbm93LgorICAgIG1fZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pigw
KSk7CiB9CiAKIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgRW5jb2RlckFkYXB0ZXI6OmRhdGFSZWZl
cmVuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNmY2N2VkMDIyOTEyNWU3Mzg0OThhMGYyNjcyYzg4NGJjMzY4ODM2NS4uNDNlZDE2YjFhMzlj
OThkNzVlYmZlNTQxOTYwYmVhNGViZWY5OWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMDExLDE0ICsxMDExLDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6
cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VEYXRhLmRhdGEo
KSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyPiBkZWNvZGVyID0gQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyOjpjcmVhdGUobWVzc2FnZURh
dGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2VOYW1l
OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVjb2RlKG1lc3NhZ2VOYW1lKSkKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShtZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJl
ZlB0cjxBUElPYmplY3Q+IG1lc3NhZ2VCb2R5OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVj
b2RlKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VCb2R5KSkpCisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVz
c2FnZUJvZHkpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi52Y3Byb2oKaW5kZXggZWJjZDZjYzM1ZjcwZmZmZjZlZDA4YmUzMTlhMTMxNGM3ZDYy
YjA1ZC4uMDZhM2ZkZDBiYzgzMzBhY2M2ZTM3M2Q2MTVlYmMwM2ExMzIyMjIxZSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNDA5NCw2ICs0MDk0LDIyIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBD
XE1lc3NhZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJUENcTWVzc2FnZURlY29kZXIuaCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRm
b3JtXENvcmVJUENcTWVzc2FnZUVuY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5j
b2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlSUQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169021</attachid>
            <date>2012-10-16 14:06:13 -0700</date>
            <delta_ts>2012-10-16 17:56:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121016140502.patch</filename>
            <type>text/plain</type>
            <size>84431</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLmU5YzY3NTZkMGRkZWY0MGM2NzE1MjgxYmFmMDJkOGNlOGU2YjMz
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCw5ICsyOCw5IEBACiAjaWZuZGVmIENvbm5lY3Rpb25faAogI2RlZmluZSBDb25uZWN0aW9u
X2gKIAotI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1l
b3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBkb3VibGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
Y3JlYXRlU3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwg
dWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3Mg
PSAwKTsKLSAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+
KTsKKyAgICBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVz
c2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElE
KTsKKyAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5j
UmVwbHkoUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHZhcmlhbnRzIG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRl
ZC4KICAgICAvLyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQg
dGFrZSBhIG1lc3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIH07
CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2lu
Z01lc3NhZ2U7CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01l
c3NhZ2U7CiAKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2Vy
dmVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwx
NCArMjUxLDE0IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUg
dGltZW91dCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2Uo
TWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAg
Ci0gICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwg
ZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093
blB0cjxNZXNzYWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0
LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVj
b2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNv
bm5lY3Rpb24gd29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0lu
Y29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rl
cj4pOworICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNs
aWVudCopOwogICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVu
dCopOwpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRn
b2luZ01lc3NhZ2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01l
c3NhZ2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJv
b2wgc2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNv
ZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0
cjxNZXNzYWdlRW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAg
Ci0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwor
ICAgIHR5cGVkZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAg
ICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENv
bm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNo
U3luY01lc3NhZ2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZh
aWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhy
ZWFkLgpAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0
aW9uIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2Fn
ZU11dGV4OwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3Vt
ZW50RGVjb2Rlcio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFw
OwogCiAgICAgLy8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2Fp
dGluZyBvbiBhIHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3
ICszMjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxs
IGJlIG51bGwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAg
ICAgLy8gbWVzc2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVy
KiByZXBseURlY29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAK
ICAgICAgICAgLy8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVj
ZWl2ZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5
OwpAQCAtMzQwLDkgKzM0MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkK
KyAgICAgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2Rlcigp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0g
YWRvcHRQdHIocmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rl
cj4gcmVwbHkgPSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNv
ZGVyID0gMDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2Uo
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
cmVhZEJ1ZmZlcjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1
bWVudEVuY29kZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdl
RW5jb2Rlcj4gbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0
YXRlOwogICAgIEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCkBAIC00MDksMjIgKzQwOSwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0
ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsK
KyAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3Jl
YXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2Up
OwogICAgIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwg
YXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwg
bWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQg
c3luY1NlbmRGbGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBP
d25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2Fn
ZUFyZ3VtZW50RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIs
ICIiLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUg
dGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShtZXNzYWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBO
b3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJn
dW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6
Om1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRp
bWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlE
ZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVx
dWVzdElELCBlbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAg
aWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQz
NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29u
c3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3Rp
bmF0aW9uSUQsIHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9
IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0KTsKICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NDQ5LDEzICs0NDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KIGlubGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3Nh
Z2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBV
JiByZXBseSwgZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRl
U3luY01lc3NhZ2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7
CisgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKCIiLCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShh
cmd1bWVudHMpOworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8v
IE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQo
bWVzc2FnZUlEKSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGlt
ZW91dCk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3lu
Y01lc3NhZ2UoTWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVs
ZWFzZSgpLCB0aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIApAQCAtNDY2LDEwICs0NjYsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlv
bjo6ZGVwcmVjYXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LAogdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVw
cmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQm
IGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29k
ZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVu
dEVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2Uo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcyMGE3NjQy
YzQwNTkxZTM5ZDljMzFmMWNiYWNhOWUxNjkzMTg4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZURlY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK1Bhc3NPd25QdHI8TWVzc2Fn
ZURlY29kZXI+IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVm
ZmVyKQoreworICAgIERlcXVlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50cykpOworfQorCitQ
YXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IERh
dGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVzc2FnZURlY29kZXIoYnVmZmVyLCBhdHRhY2htZW50
cykpOworfQorCitNZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKCkKK3sKK30KKworTWVz
c2FnZURlY29kZXI6Ok1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwg
RGVxdWU8QXR0YWNobWVudD4mIGF0dGFjaG1lbnRzKQorICAgIDogQXJndW1lbnREZWNvZGVyKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGF0dGFjaG1lbnRzKQoreworICAgIENTdHJpbmcg
bWVzc2FnZVJlY2VpdmVyTmFtZTsKKyAgICBpZiAoIWRlY29kZShtZXNzYWdlUmVjZWl2ZXJOYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1N0cmluZyBtZXNzYWdlTmFtZTsKKyAgICBpZiAo
IWRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGRlY29kZVVJbnQ2
NChtX2Rlc3RpbmF0aW9uSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFkZTIxYjJmMTg3ZmY1ZWVhOTc3OWQ3YjYzMTRlMmY1ZmFkM2ZlZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdlRGVjb2Rlcl9oCisj
ZGVmaW5lIE1lc3NhZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworCitj
bGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29kZXIgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGUoY29uc3QgRGF0YVJl
ZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
KyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRlOgorICAgIE1lc3NhZ2VE
ZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8QXR0YWNobWVudD4mKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VEZWNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTViYWNkMGM3Yzg4MTE1MzA1OTY3M2VlYmI1N2RjYjkwMjY1M2Zi
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworICAgIFBhc3NPd25QdHI8TWVz
c2FnZUVuY29kZXI+IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlRW5jb2RlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCkpOworfQorCitNZXNz
YWdlRW5jb2Rlcjo6TWVzc2FnZUVuY29kZXIoY29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
Cit7CisgICAgZW5jb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIGVuY29kZShtZXNzYWdl
TmFtZSk7CisgICAgZW5jb2RlKGRlc3RpbmF0aW9uSUQpOworfQorCitNZXNzYWdlRW5jb2Rlcjo6
fk1lc3NhZ2VFbmNvZGVyKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhODc4NTBiOTliYzNhYzU2NTQwMDNlYjc1ZDBhZmU3N2U2MzU5YWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVzc2FnZUVuY29kZXJfaAor
I2RlZmluZSBNZXNzYWdlRW5jb2Rlcl9oCisKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK2NsYXNz
IE1lc3NhZ2VFbmNvZGVyIDogcHVibGljIEFyZ3VtZW50RW5jb2RlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGNyZWF0ZShjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisgICAgdmlydHVhbCB+TWVzc2FnZUVuY29kZXIoKTsKKworcHJpdmF0
ZToKKyAgICBNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
K307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8vIE1lc3NhZ2VFbmNvZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgK
aW5kZXggZTJiYTBiNTZmNWE1MTNkMTAxZGRiOTE3ZWJkNjg1MGQzOTNmMjQ4Zi4uNzQzODEwNTBj
N2RkN2Q1NmFmMWE0ZTEyYzIwNGVjOWY2M2IzNDg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCBwdWJs
aWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICB7Ci0gICAgICAgIE93blB0cjxBcmd1bWVu
dEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3Rp
bmF0aW9uSUQpOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAg
ICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNy
ZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5z
ZW5kTWVzc2FnZShNZXNzYWdlSUQoVTo6bWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4odGhpcyktPnNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IAotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxB
cmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlcikKKyAgICBib29sIHNlbmRNZXNzYWdlKE1l
c3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiAg
ICAgewogICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLT5jb25uZWN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKIAotICAgICAg
ICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudEVuY29k
ZXIpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBl
bmNvZGVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRTeW5j
KGNvbnN0IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6OlJlcGx5JiByZXBseSwgZG91Ymxl
IHRpbWVvdXQgPSBDb25uZWN0aW9uOjpOb1RpbWVvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDcyOTg5ZGRh
MDFhYTMxZTE5YTQ0NjY2Y2VjODhlYWMxZmU1ZTc0YTUuLjhkNDIzN2NjZjc3NmQ4ZTJhYmQ3MGFl
ODdmNTc2ZmNiOTc0ZDQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgT3duUHRyPEFy
Z3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUo
MCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93blB0cjxNZXNzYWdlRW5j
b2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCAwKTsKKyAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNz
YWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOwor
ICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OkluaXRpYWxpemVD
b25uZWN0aW9uKSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgZGVh
ZCBuYW1lIGhhbmRsZXIgZm9yIG91ciBzZW5kIHBvcnQuCiAgICAgICAgIGluaXRpYWxpemVEZWFk
TmFtZVNvdXJjZSgpOwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVu
KCkKICAgICBpZiAobV9leGNlcHRpb25Qb3J0KSB7CiAgICAgICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9leGNlcHRpb25Qb3J0LCBXb3JrUXVldWU6
Ok1hY2hQb3J0RGF0YUF2YWlsYWJsZSwgYmluZCgmQ29ubmVjdGlvbjo6ZXhjZXB0aW9uU291cmNl
RXZlbnRIYW5kbGVyLCB0aGlzKSk7CiAKLSAgICAgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4g
YXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7Ci0gICAgICAgIGFy
Z3VtZW50RW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIDApOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OwogCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6U2V0RXhj
ZXB0aW9uUG9ydCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAgICBzZW5kTWVz
c2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBlbmNvZGVy
LnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTcsOSArMTU3LDkg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBh
cmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlE
IG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICBW
ZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMgPSBhcmd1bWVudHMtPnJlbGVhc2VBdHRhY2ht
ZW50cygpOworICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IGVuY29kZXItPnJl
bGVhc2VBdHRhY2htZW50cygpOwogICAgIAogICAgIHNpemVfdCBudW1iZXJPZlBvcnREZXNjcmlw
dG9ycyA9IDA7CiAgICAgc2l6ZV90IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMgPSAwOwpA
QCAtMTcxLDE0ICsxNzEsMTQgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgICAg
IG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMrKzsKICAgICB9CiAgICAgCi0gICAgc2l6ZV90
IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCBu
dW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7Cisg
ICAgc2l6ZV90IG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKGVuY29kZXItPmJ1ZmZlclNp
emUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRv
cnMpOwogICAgIGNoYXIgYnVmZmVyW2lubGluZU1lc3NhZ2VNYXhTaXplXTsKIAogICAgIGJvb2wg
bWVzc2FnZUJvZHlJc09PTCA9IGZhbHNlOwogICAgIGlmIChtZXNzYWdlU2l6ZSA+IHNpemVvZihi
dWZmZXIpKSB7CiAgICAgICAgIG1lc3NhZ2VCb2R5SXNPT0wgPSB0cnVlOwogCi0gICAgICAgIGF0
dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJUVUFMX0NPUFksIGZhbHNlKSk7CisgICAgICAg
IGF0dGFjaG1lbnRzLmFwcGVuZChBdHRhY2htZW50KGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVy
LT5idWZmZXJTaXplKCksIE1BQ0hfTVNHX1ZJUlRVQUxfQ09QWSwgZmFsc2UpKTsKICAgICAgICAg
bnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycysrOwogICAgICAgICBtZXNzYWdlU2l6ZSA9IG1h
Y2hNZXNzYWdlU2l6ZSgwLCBudW1iZXJPZlBvcnREZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1v
cnlEZXNjcmlwdG9ycyk7CiAgICAgfQpAQCAtMjMzLDcgKzIzMyw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RW5jCiAKICAgICAvLyBDb3B5IHRoZSBkYXRhIGlmIGl0IGlzIG5vdCBiZWluZyBzZW50
IG91dC1vZi1saW5lLgogICAgIGlmICghbWVzc2FnZUJvZHlJc09PTCkKLSAgICAgICAgbWVtY3B5
KG1lc3NhZ2VEYXRhLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUo
KSk7CisgICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29k
ZXItPmJ1ZmZlclNpemUoKSk7CiAKICAgICBBU1NFUlQobV9zZW5kUG9ydCk7CiAgICAgCkBAIC0y
NTEsMTQgKzI1MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVEZWFkTmFtZVNvdXJj
ZSgpCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJNYWNoUG9ydEV2ZW50SGFuZGxlciht
X3NlbmRQb3J0LCBXb3JrUXVldWU6Ok1hY2hQb3J0RGVhZE5hbWVOb3RpZmljYXRpb24sIGJpbmQo
JkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IGNyZWF0ZUFyZ3VtZW50RGVjb2RlcihtYWNoX21zZ19o
ZWFkZXJfdCogaGVhZGVyKQorc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiB7CiAgICAgaWYgKCEo
aGVhZGVyLT5tc2doX2JpdHMgJiBNQUNIX01TR0hfQklUU19DT01QTEVYKSkgewogICAgICAgICAv
LyBXZSBoYXZlIGEgc2ltcGxlIG1lc3NhZ2UuCi0gICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhl
YWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYm9keSwg
Ym9keVNpemUpKTsKKyAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUg
LSBzaXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOworCisgICAgICAgIHJldHVybiBNZXNzYWdlRGVj
b2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UoYm9keSwgYm9keVNpemUpKTsKICAgICB9CiAKICAg
ICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgJiBNZXNzYWdlQm9keUlz
T09MOwpAQCAtMzAzLDIyICszMDMsMjIgQEAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBjcmVhdGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWQKICAgICAg
ICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUg
PSBtZXNzYWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpOwogCi0gICAgICAgIEFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnREZWNvZGVyOworICAgICAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29k
ZXI7CiAKICAgICAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFy
Z3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VC
b2R5U2l6ZSk7CisgICAgICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShE
YXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNz
YWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRhY2htZW50cyk7CisgICAgICAgICAgICBkZWNv
ZGVyID0gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7CiAKICAgICAgICAgdm1fZGVhbGxvY2F0ZSht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obWVzc2FnZUJv
ZHlBdHRhY2htZW50LmFkZHJlc3MoKSksIG1lc3NhZ2VCb2R5QXR0YWNobWVudC5zaXplKCkpOwog
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihhcmd1bWVudERlY29kZXIpOworICAgICAgICByZXR1
cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5t
c2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPiho
ZWFkZXIpKTsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIE1lc3Nh
Z2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplKSwgYXR0YWNobWVudHMpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91
bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAtMzYwLDggKzM2
MCw4IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIE1lc3NhZ2VJRCBtZXNzYWdlSUQgPSBNZXNzYWdlSUQ6OmZyb21J
bnQoaGVhZGVyLT5tc2doX2lkKTsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVu
dHMgPSBjcmVhdGVBcmd1bWVudERlY29kZXIoaGVhZGVyKTsKLSAgICBBU1NFUlQoYXJndW1lbnRz
KTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVNZXNzYWdlRGVj
b2RlcihoZWFkZXIpOworICAgIEFTU0VSVChkZWNvZGVyKTsKIAogICAgIGlmIChtZXNzYWdlSUQg
PT0gTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbikpIHsKICAg
ICAgICAgQVNTRVJUKG1faXNTZXJ2ZXIpOwpAQCAtMzY5LDggKzM2OSw5IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVCghbV9zZW5k
UG9ydCk7CiAKICAgICAgICAgTWFjaFBvcnQgcG9ydDsKLSAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShwb3J0KSkgeworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwb3J0KSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IERpc2Nvbm5lY3QuCisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zOTAsMTQg
KzM5MSwxNCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQog
CiAgICAgaWYgKG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2Vw
dGlvblBvcnQpKSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHNldE1hY2hFeGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1
bWVudHMucmVsZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwg
ZGVjb2Rlci5yZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25T
b3VyY2VFdmVudEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkx
Y2FhZjZmY2NkZjkxYjIyYzMxODI0OS4uMmQ1ODU2NzdkN2Y1ODBhYTYyNTJjZTlkZmE3OGFhYWQ4
ZWZkMDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMjgyLDEzICsyODEsMTMgQEAgYm9vbCBDb25uZWN0
aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlP
T0woKSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihv
b2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRE
ZWNvZGVyOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcjsKICAgICBpZiAoYXR0
YWNobWVudHMuaXNFbXB0eSgpKQotICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1l
bnREZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICAgICAg
ZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSkpOwogICAgIGVsc2UKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgYXR0YWNobWVudHMpOworICAgICAgICBkZWNvZGVyID0gTWVzc2FnZURlY29kZXI6
OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgp
KSwgYXR0YWNobWVudHMpOwogCi0gICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShtZXNzYWdlSW5m
by5tZXNzYWdlSUQoKSwgYWRvcHRQdHIoYXJndW1lbnREZWNvZGVyKSk7CisgICAgcHJvY2Vzc0lu
Y29taW5nTWVzc2FnZShtZXNzYWdlSW5mby5tZXNzYWdlSUQoKSwgZGVjb2Rlci5yZWxlYXNlKCkp
OwogCiAgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPiBtZXNzYWdlTGVuZ3RoKSB7CiAgICAgICAg
IG1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEoKSArIG1lc3Nh
Z2VMZW5ndGgsIG1fcmVhZEJ1ZmZlclNpemUgLSBtZXNzYWdlTGVuZ3RoKTsKQEAgLTQ0MSw3ICs0
NDAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMo
KSBjb25zdAogICAgIHJldHVybiBtX2lzQ29ubmVjdGVkOwogfQogCi1ib29sIENvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1
bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVz
c2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyKQogewogI2lmIFBMQVRGT1JNKFFUKQogICAgIEFTU0VSVChtX3NvY2tldE5vdGlmaWVyKTsK
QEAgLTQ0OSw3ICs0NDgsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91bnQgKiBzaXpl
b2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01lc3NhZ2VJbmxp
bmUpOwogCi0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gYXJndW1lbnRzLT5y
ZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMg
PSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICBBdHRhY2htZW50UmVzb3VyY2VH
dWFyZDxWZWN0b3I8QXR0YWNobWVudD4sIFZlY3RvcjxBdHRhY2htZW50Pjo6aXRlcmF0b3I+IGF0
dGFjaGVtZW50RGlzcG9zZXIoYXR0YWNobWVudHMpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRzLnNp
emUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50IC0gMSkpIHsKQEAgLTQ1NywxMCArNDU2LDEwIEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBNZXNzYWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGFyZ3VtZW50cy0+YnVmZmVy
U2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOwotICAgIHNpemVfdCBtZXNzYWdlU2l6ZVdpdGhC
b2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50cy5zaXplKCkgKiBz
aXplb2YoQXR0YWNobWVudEluZm8pKSArIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpOwotICAgIGlm
IChtZXNzYWdlU2l6ZVdpdGhCb2R5SW5saW5lID4gbWVzc2FnZU1heFNpemUgJiYgYXJndW1lbnRz
LT5idWZmZXJTaXplKCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBv
b2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoYXJndW1lbnRzLT5i
dWZmZXJTaXplKCkpOworICAgIE1lc3NhZ2VJbmZvIG1lc3NhZ2VJbmZvKG1lc3NhZ2VJRCwgZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpLCBhdHRhY2htZW50cy5zaXplKCkpOworICAgIHNpemVfdCBtZXNz
YWdlU2l6ZVdpdGhCb2R5SW5saW5lID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKSArIChhdHRhY2htZW50
cy5zaXplKCkgKiBzaXplb2YoQXR0YWNobWVudEluZm8pKSArIGVuY29kZXItPmJ1ZmZlclNpemUo
KTsKKyAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYm
IGVuY29kZXItPmJ1ZmZlclNpemUoKSkgeworICAgICAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG9vbE1lc3NhZ2VCb2R5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShlbmNv
ZGVyLT5idWZmZXJTaXplKCkpOwogICAgICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NzAsNyArNDY5LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJn
dW1lbnRFbmMKIAogICAgICAgICBtZXNzYWdlSW5mby5zZXRNZXNzYWdlQm9keU9PTCgpOwogCi0g
ICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9keS0+ZGF0YSgpLCBhcmd1bWVudHMtPmJ1ZmZlcigp
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSk7CisgICAgICAgIG1lbWNweShvb2xNZXNzYWdlQm9k
eS0+ZGF0YSgpLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKIAog
ICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoaGFuZGxlLnJlbGVhc2VUb0F0dGFjaG1lbnQoKSk7
CiAgICAgfQpAQCAtNTQwLDkgKzUzOSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
ICAgICsraW92TGVuZ3RoOwogICAgIH0KIAotICAgIGlmICghbWVzc2FnZUluZm8uaXNNZXNzYWdl
Qm9keU9PTCgpICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXJndW1lbnRzLT5idWZm
ZXIoKSk7Ci0gICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9sZW4gPSBhcmd1bWVudHMtPmJ1ZmZl
clNpemUoKTsKKyAgICBpZiAoIW1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBlbmNv
ZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihlbmNvZGVyLT5idWZmZXIoKSk7CisgICAgICAgIGlvdltp
b3ZMZW5ndGhdLmlvdl9sZW4gPSBlbmNvZGVyLT5idWZmZXJTaXplKCk7CiAgICAgICAgICsraW92
TGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCBmNTFhZDA3OWFiNzA3ZjdiYmEwZTBhNTg5
YTQwYWEzZWZkNzQyMTk1Li4zMjMzZGQ3MWU5YjBiZTlmNzA4MDFmNWI5NTQxM2MxOWEwNDE2Y2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIkJpbmFyeVNlbWFwaG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtMTcyLDcgKzE3MSw4IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAKICAgICAgICAgICAgIHVuc2lnbmVkIG1lc3Nh
Z2VJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obV9yZWFkQnVmZmVyLmRhdGEoKSAr
IHJlYWxCdWZmZXJTaXplKTsKIAotICAgICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShN
ZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlEKSwgYWRvcHRQdHIobmV3IEFyZ3VtZW50RGVjb2Rl
cihtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgICAgIE93
blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0
YVJlZmVyZW5jZShtX3JlYWRCdWZmZXIuZGF0YSgpLCByZWFsQnVmZmVyU2l6ZSkpOworICAgICAg
ICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQ6OmZyb21JbnQobWVzc2FnZUlE
KSwgZGVjb2Rlci5yZWxlYXNlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBvdXQg
dGhlIHNpemUgb2YgdGhlIG5leHQgbWVzc2FnZSBpbiB0aGUgcGlwZSAoaWYgdGhlcmUgaXMgb25l
KSBzbyB0aGF0IHdlIGNhbiByZWFkCkBAIC0yNDcsOSArMjQ3LDkgQEAgdm9pZCBDb25uZWN0aW9u
Ojp3cml0ZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KIAotICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28gd2UgYXJlIG5v
dyBkb25lIHdpdGggaXRzIGFyZ3VtZW50cy4gQ2xlYXJpbmcgdGhpcyBtZW1iZXIKKyAgICAvLyBU
aGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHNvIHdlIGFyZSBub3cgZG9uZSB3aXRoIGl0
cyBlbmNvZGVyLiBDbGVhcmluZyB0aGlzIG1lbWJlcgogICAgIC8vIHdpbGwgYWxsb3cgdXMgdG8g
c2VuZCBtZXNzYWdlcyBhZ2Fpbi4KLSAgICBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50cyA9IG51bGxw
dHI7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdyB0
aGF0IHRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHRyeSB0byBzZW5kIGEg
bmV3IG1lc3NhZ2UuCiAgICAgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKQEAgLTI3NCwyNCArMjc0
LDI0IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBhbGxvdyBzZW5kaW5nIG9uZSBhc3luY2hyb25vdXMg
bWVzc2FnZSBhdCBhIHRpbWUuIElmIHdlIHdhbnRlZCB0byBzZW5kIG1vcmUgdGhhbiBvbmUKICAg
ICAvLyBhdCBvbmNlLCB3ZSdkIGhhdmUgdG8gdXNlIG11bHRpcGxlIE9WRVJMQVBQRUQgc3RydWN0
dXJlcyBhbmQgaG9sZCBvbnRvIG11bHRpcGxlIHBlbmRpbmcKLSAgICAvLyBBcmd1bWVudEVuY29k
ZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3VzIG1lc3Nh
Z2UpLgotICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVBcmd1bWVudHM7CisgICAgLy8gTWVzc2Fn
ZUVuY29kZXJzIChvbmUgb2YgZWFjaCBmb3IgZWFjaCBzaW11bHRhbmVvdXMgYXN5bmNocm9ub3Vz
IG1lc3NhZ2UpLgorICAgIHJldHVybiAhbV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogfQogCi1ib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFz
c093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyKQogewotICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVBcmd1bWVudHMp
OworICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKIAogICAgIC8vIEp1c3QgYmFp
bCBpZiB0aGUgaGFuZGxlIGhhcyBiZWVuIGNsb3NlZC4KICAgICBpZiAobV9jb25uZWN0aW9uUGlw
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgYXJndW1lbnRzLT5lbmNvZGVVSW50
MzIobWVzc2FnZUlELnRvSW50KCkpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihtZXNzYWdl
SUQudG9JbnQoKSk7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIAotICAg
IGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBhcmd1bWVudHMtPmJ1ZmZlcigpLCBh
cmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKKyAgICBpZiAoOjpX
cml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1
ZmZlclNpemUoKSwgMCwgJm1fd3JpdGVTdGF0ZSkpIHsKICAgICAgICAgLy8gV2Ugc3VjY2Vzc2Z1
bGx5IHNlbnQgdGhpcyBtZXNzYWdlLgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0z
MDksOSArMzA5LDkgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xk
IG9udG8gdGhlIGFyZ3VtZW50cyBzbyB0aGF0IHRoZXkgd29uJ3QgYmUgZGVzdHJveWVkCisgICAg
Ly8gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBz
byB0aGF0IGl0IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29t
cGxldGVzLgotICAgIG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzID0gYXJndW1lbnRzOworICAgIG1f
cGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXI7CiAKICAgICAvLyBXZSBjYW4gb25seSBzZW5k
IG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRm
b3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQppbmRleCBjOGEwYWI5MmFiOTBiZDdm
N2VkNzIzNWU2OTBkM2I0ODgwMjlhODUyLi5iZTllZTZkZjdkMGFmMjY0ZDE1Y2ViMjBjOWFjMTE5
MjYwOTA2M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CkBAIC01MDIsNyArNTAyLDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgQVNTRVJUKG1fYXJndW1lbnRzKTtcbicpCiAgICAgICAgICAgICByZXN1bHQgKz0g
WycgICAgbV9hcmd1bWVudHMtPmVuY29kZSglcyk7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29s
IHJlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShtX2FyZ3VtZW50cy5yZWxlYXNl
KCkpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpN
ZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTtcbicpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHJlc3VsdDtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IGRkOWZiZWNjM2YxOTFiMzhmYmFiYTM4ZTYz
MWQ4MzIxM2RlMDhlZjkuLmQ0NTc1NDg4MjMzNjhmMGNkMWQwMDdjOWQzZTQzMmJjMjA5ODA0MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0
dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5p
dHRlc3QucHkKQEAgLTMyMyw3ICszMjMsNyBAQCBfZXhwZWN0ZWRfaGVhZGVyID0gIiIiLyoKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBB
cmd1bWVudEVuY29kZXI7CisgICAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgQ29u
bmVjdGlvbjsKICAgICBjbGFzcyBEdW1teVR5cGU7CiAgICAgY2xhc3MgTWFjaFBvcnQ7CkBAIC00
NjcsMTQgKzQ2NywxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2lucyA6IENvcmVJUEM6OkFyZ3VtZW50czE8
Ym9vbD4gewogc3RydWN0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogQ29yZUlQQzo6QXJn
dW1lbnRzMTxjb25zdCBXVEY6OlN0cmluZyY+IHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNz
YWdlSUQgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOwogICAgIHN0cnVjdCBEZWxheWVk
UmVwbHkgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAg
ICAgIERlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOworICAgICAgICBEZWxheWVkUmVwbHkoUGFz
c1JlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdl
RW5jb2Rlcj4pOwogICAgICAgICB+RGVsYXllZFJlcGx5KCk7CiAKICAgICAgICAgYm9vbCBzZW5k
KGNvbnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwotICAgICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtX2FyZ3Vt
ZW50czsKKyAgICAgICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtX2VuY29kZXI7
CiAgICAgfTsKIAogICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzMTxDb3JlSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmPiBSZXBseTsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHN0cnVjdCBHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpT
dHJpbmcmPiB7CiBzdHJ1Y3QgVGVzdE11bHRpcGxlQXR0cmlidXRlcyA6IENvcmVJUEM6OkFyZ3Vt
ZW50czAgewogICAgIHN0YXRpYyBjb25zdCBLaW5kIG1lc3NhZ2VJRCA9IFRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXNJRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+KTsKKyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5
ZWRSZXBseSgpOwogCiAgICAgICAgIGJvb2wgc2VuZCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBl
ZGVmIENvcmVJUEM6OkFyZ3VtZW50czAgUmVwbHk7CkBAIC02NDAsOSArNjQwLDkgQEAgbmFtZXNw
YWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBhZ2UgewogCi1HZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4gYXJndW1lbnRzKQorR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlv
biwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisg
ICAgLCBtX2VuY29kZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NTMsMTYgKzY1MywxNiBAQCBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkK
IAogYm9vbCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNv
bnN0IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAg
ICBBU1NFUlQobV9hcmd1bWVudHMpOwotICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoY29ubmVjdGlv
bkhhbmRsZSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
bV9hcmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBtX2Vu
Y29kZXItPmVuY29kZShjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29u
bmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVj
dGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFy
Z3VtZW50cykKK1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJl
cGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0
cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBtX2VuY29k
ZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NzMsOCArNjczLDggQEAgVGVzdE11bHRpcGxlQXR0
cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9vbCBUZXN0TXVsdGlw
bGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewotICAgIEFTU0VSVChtX2FyZ3Vt
ZW50cyk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9h
cmd1bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBib29sIHJl
c3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShhZG9wdFB0cihzdGF0aWNfY2FzdDxD
b3JlSVBDOjpNZXNzYWdlRW5jb2Rlcio+KG1fYXJndW1lbnRzLmxlYWtQdHIoKSkpKTsKICAgICBt
X2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRy
PENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdl
SUQuZ2V0PE1lc3NhZ2VzOjpXZWJQYWdlOjpLaW5kPigpKSB7CiAgICAgY2FzZSBNZXNzYWdlczo6
V2ViUGFnZTo6Q3JlYXRlUGx1Z2luSUQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlv
bi5jcHAKaW5kZXggZDk0MTMxOGRiMjRjY2EzNjhjYzExN2FlMmJmMWNjYTQ2NzZjMTQ0YS4uOTc0
M2E3OGM3NzA4NDQ0OTM3YjZmOWFlMWYxNjhlN2UyNmZiZTE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVz
c2FnZUJvZAogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBP
d25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsK
ICAgICBtZXNzYWdlRGF0YS0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdl
Qm9keShtZXNzYWdlRGF0YS5nZXQoKSwgbWVzc2FnZUJvZHkpOwogCkBAIC02MiwxNCArNjIsMTQg
QEAgdm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2QKIAogdm9pZCBXZWJDb25uZWN0aW9uOjpoYW5kbGVN
ZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2VEYXRhKQogewotICAg
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciBtZXNzYWdlRGVjb2RlcihtZXNzYWdlRGF0YS5kYXRh
KCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcj4gZGVjb2RlciA9IENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VE
YXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlTmFt
ZTsKLSAgICBpZiAoIW1lc3NhZ2VEZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiBtZXNzYWdlQm9keTsKLSAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5
KCZtZXNzYWdlRGVjb2RlciwgbWVzc2FnZUJvZHkpKQorICAgIGlmICghZGVjb2RlTWVzc2FnZUJv
ZHkoZGVjb2Rlci5nZXQoKSwgbWVzc2FnZUJvZHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggM2FiZDE0ZDQ2
YWI5ZjVkYTMxNjQ1YzkyNWU1ZTc1NWUzMmVlMmQ5MS4uYjE0ZDFmMzQ3YzUwMGU5ODgyOTQ5OTll
OTViOGU3ZDM1ZDBkNzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBA
IC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOwor
ICAgIGNsYXNzIE1lc3NhZ2VEZWNvZGVyOworICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwogICAg
IGNsYXNzIE1lc3NhZ2VJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2FmYzE4YzAw
MDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uYmZhN2QzYmM2ODU2ODI2NWM2ZTAwYzQ2Mzg2ODM5MmJl
ODBlMWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNSw2ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIFwKICAgICBQbGF0Zm9ybS9D
b3JlSVBDL0RhdGFSZWZlcmVuY2UuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNz
YWdlLmggXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisgICAgUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VJRC5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlci5oIFwKICAg
ICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIFwKQEAgLTM4NCw2ICszODYs
OCBAQCBTT1VSQ0VTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwIFwK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9Db3Jl
SVBDL0RhdGFSZWZlcmVuY2UuY3BwIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcCBcCisgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAogICAg
IFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBcCiAgICAgUGxhdGZvcm0v
TG9nZ2luZy5jcHAgXAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGQzZGFiNmM3NDA1ODVlNTNiOTBlZjJiODQzZGM4
MWZkNzAxOTNjN2YuLmUyMTVlODJjYTdhNDVhODE4ZTBjMjIwMmE4MmNkZDc1YmIxYmQxNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5OCw3ICszOTgsNyBA
QCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJv
Y2VzcygpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fbWVzc2FnZXNUb0luamVj
dGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IHBhaXI8U3RyaW5nLCBSZWZQdHI8QVBJT2JqZWN0PiA+JiBtZXNzYWdlID0gbV9tZXNzYWdlc1Rv
SW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKIAotICAgICAgICAgICAgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVh
dGUoKTsKIAogICAgICAgICAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlLmZpcnN0KTsK
ICAgICAgICAgICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5j
b2RlcihtZXNzYWdlLnNlY29uZC5nZXQoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgV2Vi
Q29udGV4dDo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSU9iamVjCiAKICAgICAvLyBGSVhNRTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNz
YWdlIGJvZHkgY29udGFpbnMgYW55IHJlZmVyZW5jZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVm
cyBldGMuIHNpbmNlIHRoZXkncmUgbG9jYWwgdG8gYSBwcm9jZXNzLgogCi0gICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBt
ZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVz
c2FnZURhdGEtPmVuY29kZShtZXNzYWdlTmFtZSk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTZiZTI4ZjA5NTUwMDJm
NjUwNmI5Y2Y1MmI5NDg5NjI3YTc0OGQ5NC4uM2RhZWRiMTM3NDJlNGQ0MzQyYjQwMjcyODI5M2Zk
ZWVlNmExM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25u
ZWN0KCkKICAgICBtX2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1ib29s
IFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cywgdW5zaWdu
ZWQgbWVzc2FnZVNlbmRGbGFncykKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewogICAgIC8vIElm
IHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8g
c3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUK
ICAgICAvLyBhIENvcmVJUEMgY29ubmVjdGlvbi4KICAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewot
ICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZV9wYWlyKENvcmVJUEM6OkNvbm5l
Y3Rpb246Ok91dGdvaW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyksIG1lc3NhZ2VTZW5k
RmxhZ3MpKTsKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3Jl
SVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVz
c2FnZVNlbmRGbGFncykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxDb3JlSQogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5k
TWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cywgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdl
U2VuZEZsYWdzKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1NzQ4
NmM3ZGFhNmI0ZDFkYTQ3ZjY5NDk2ZmNiYzUyYWZlMzhkMTI3Li43NTI0ZGYyZmY0NjAwZjhlYjVm
Njg2YzBkMWU4NDk3ZDI1MTBlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaWxsIHBv
dGVudGlhbGx5IGNhdXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJlIGZyZWVkLgog
ICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpN
ZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiwgdW5zaWduZWQg
bWVzc2FnZVNlbmRGbGFncyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdl
SUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdl
U2VuZEZsYWdzKTsKIAogICAgIC8vIENvcmVJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lk
IGFkZEJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBiYWNrRm9yd2FyZERhdGEpOwpAQCAtMjE2
LDE5ICsyMTYsMTkgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+
CiBib29sIFdlYlByb2Nlc3NQcm94eTo6ZGVwcmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVu
Y29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5k
TWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJl
bGVhc2UoKSwgMCk7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCht
ZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIE93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgIGFyZ3VtZW50RW5jb2Rl
ci0+ZW5jb2RlKG1lc3NhZ2UpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlciA9IENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKLSAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rl
ci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShD
b3JlSVBDOjpNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMmRhZTM1NTZl
MjZlMTA0NWI0NGM2ZjEzZTY4YmNlZjBiMWQxODgwLi5mMmQzYjRkNzc4MzQ0ODNlMGFhMGZhOWQx
NDkxNTY0ZDkwZDUyMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MSw2ICs4MSwxMCBAQAogCQkxQTIxNjFCMTExRjM3NjY0
MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjE2MUFGMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1
bnRpbWVPYmplY3RNYXAuY3BwICovOyB9OwogCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyog
TlBSdW50aW1lVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjE2MkFFMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRp
ZXMuY3BwICovOyB9OwogCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTIxNjJBRjExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi87IH07CisJ
CTFBMjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGQzE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwICovOyB9OworCQkxQTIzMjhGRjE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5oICovOyB9OworCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5
MDAxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI5
MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyog
TWVzc2FnZURlY29kZXIuaCAqLzsgfTsKIAkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovOyB9
OwogCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1RjExMUY1MzFFODAw
QzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMUEyNEJFRDUxMjA4OTREMTAwRkJC
MDU5IC8qIFNoYXJlZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICov
OyB9OwpAQCAtMTIwNyw2ICsxMjExLDEwIEBACiAJCTFBMjE2MkFGMTFGMzg5NzEwMDhBRDBGNSAv
KiBOUFJ1bnRpbWVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlBSdW50aW1lVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJG
MEZGMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMjMyOEZD
MTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVz
c2FnZURlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMTE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5
IC8qIFNoYXJlZE1lbW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWRNZW1vcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTgsOCArMjcyNiw2
IEBACiAJCQkJQzAzMzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICov
LAogCQkJCUUxRURGREFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAotCQkJCTI5MTIxNzA1
MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCi0JCQkJMjkx
MjE3MDYxNjFDRTczNjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzgy
LDYgKzI3ODgsMTAgQEAKIAkJCQkxQThFRkRGRDEyNTNDQjZFMDBGNzA2N0YgLyogRGF0YVJlZmVy
ZW5jZS5jcHAgKi8sCiAJCQkJMUE4RUZERjkxMjUzQ0FBMjAwRjcwNjdGIC8qIERhdGFSZWZlcmVu
Y2UuaCAqLywKIAkJCQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5o
ICovLAorCQkJCTFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAg
Ki8sCisJCQkJMUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8s
CisJCQkJMUEyMzI4RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLywK
KwkJCQkxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLywKIAkJ
CQlCQzAzMkRBNDEwRjQzN0QxMDA1OEMxNUEgLyogTWVzc2FnZUlELmggKi8sCiAJCQkJMUEzRUVE
MTExNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBD
MTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLApAQCAtNDY3OSw2
ICs0Njg5LDggQEAKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUw
MTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyMzI4RkYxNjJDODY2QTAw
RDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTIzMjkwMzE2
MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTYy
Miw2ICs1NjM0LDggQEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1By
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFREZFMTIxNjI4
Q0ZCMjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxRURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOTAyMTYyQzg2NzMw
MEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCmluZGV4
IDc2MzMwNWNiZWI5Mzk0ODcyNTNmODZlZmJlYTkzZGU1NjBlYzI4OGIuLjYzNDE3NzIwY2MxNDE1
YjFmY2JmZjRlNzllMWFkNTEzYjI4MThiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsMTQgKzMzLDE5IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2RlY29kZXIo
YnVmZmVyLCBidWZmZXJTaXplKQorICAgIDogbV9kZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2Rlcjo6Y3JlYXRlKGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiB7CisgICAgLy8gS2VlcCBmb3JtYXQg
Y29tcGF0aWJpbGl0eSBieSBkZWNvZGluZyBhbiB1bnVzZWQgdWludDY0X3QgdmFsdWUKKyAgICAv
LyB0aGF0IHVzZWQgdG8gYmUgZW5jb2RlZCBieSB0aGUgYXJndW1lbnQgZW5jb2Rlci4KKyAgICB1
aW50NjRfdCB2YWx1ZTsKKyAgICBtX2RlY29kZXItPmRlY29kZSh2YWx1ZSk7CisgICAgQVNTRVJU
KCF2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1
aW50OF90PiYgYnl0ZXMpCiB7CiAgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRh
dGFSZWZlcmVuY2UpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5
dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYnl0
ZXMgPSBkYXRhUmVmZXJlbmNlLnZlY3RvcigpOwpAQCAtNDksNDIgKzU0LDQyIEBAIGJvb2wgRGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiAKIGJvb2wg
RGVjb2RlckFkYXB0ZXI6OmRlY29kZUJvb2woYm9vbCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1f
ZGVjb2Rlci5kZWNvZGVCb29sKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVC
b29sKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDE2KHVpbnQx
Nl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQxNih2YWx1ZSk7
CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDE2KHZhbHVlKTsKIH0KIAogYm9vbCBE
ZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDMyKHVpbnQzMl90JiB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQzMih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZGVjb2RlVUludDMyKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUlu
dDY0KHVpbnQ2NF90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2
NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDY0KHZhbHVlKTsKIH0K
IAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIoaW50MzJfdCYgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVJbnQzMih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZGVjb2RlSW50MzIodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNv
ZGVJbnQ2NChpbnQ2NF90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUlu
dDY0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVJbnQ2NCh2YWx1ZSk7CiB9
CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUZsb2F0KGZsb2F0JiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUZsb2F0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNv
ZGVyLT5kZWNvZGVGbG9hdCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29k
ZURvdWJsZShkb3VibGUmIHZhbHVlKQogewotICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlRG91
YmxlKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpOwog
fQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKQEAg
LTk2LDcgKzEwMSw3IEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcm
IHZhbHVlKQogICAgIC8vIHdpdGhvdXQgYnJlYWtpbmcgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgdGhl
IGhpc3RvcnkgdHJlZS4KIAogICAgIHVpbnQzMl90IGxlbmd0aDsKLSAgICBpZiAoIW1fZGVjb2Rl
ci5kZWNvZGUobGVuZ3RoKSkKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2RlKGxlbmd0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpKSB7CkBAIC0xMDYsMjIgKzExMSwyMiBAQCBib29sIERlY29k
ZXJBZGFwdGVyOjpkZWNvZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKICAgICB9CiAKICAgICB1aW50
NjRfdCBsZW5ndGhJbkJ5dGVzOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZShsZW5ndGhJbkJ5
dGVzKSkKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2RlKGxlbmd0aEluQnl0ZXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobGVuZ3RoSW5CeXRlcyAlIHNpemVvZihVQ2hhcikg
fHwgbGVuZ3RoSW5CeXRlcyAvIHNpemVvZihVQ2hhcikgIT0gbGVuZ3RoKSB7Ci0gICAgICAgIG1f
ZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBtX2RlY29kZXItPm1hcmtJbnZhbGlkKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZGVjb2Rlci5idWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPFVDaGFyPihsZW5ndGgpKSB7Ci0gICAgICAgIG1fZGVj
b2Rlci5tYXJrSW52YWxpZCgpOworICAgIGlmICghbV9kZWNvZGVyLT5idWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluPFVDaGFyPihsZW5ndGgpKSB7CisgICAgICAgIG1fZGVjb2Rlci0+bWFya0lu
dmFsaWQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFVDaGFyKiBidWZm
ZXI7CiAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5n
dGgsIGJ1ZmZlcik7Ci0gICAgaWYgKCFtX2RlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihVQ2hhciks
IF9fYWxpZ25vZihVQ2hhcikpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSwgX19hbGlnbm9mKFVDaGFyKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHZhbHVlID0gc3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RlY29kZXJBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRGVjb2RlckFkYXB0ZXIuaAppbmRleCBkNmI0ZWI3NjZhZjE2YTE4MjljZjk1NmZkOTc0NjVl
OGM5ZGM0YTVkLi42NzFlMTg5NmY1MDk1MmU4ZmM2OTY1ZDJkMDQ4YjZiM2Y2OTNhOTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIu
aApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVEb3Vi
bGUoZG91YmxlJik7CiAgICAgdmlydHVhbCBib29sIGRlY29kZVN0cmluZyhTdHJpbmcmKTsKIAot
ICAgIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciBtX2RlY29kZXI7CisgICAgT3duUHRyPENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2Rlcj4gbV9kZWNvZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2Rl
ckFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJB
ZGFwdGVyLmNwcAppbmRleCBiZGE3ZDliNzJmMmZkMDEyMzlhN2UzMmVkNmY0ODRhOTE4NTM1MmI5
Li41NGY5MzcyZDE5OTYwZTUyYmNlOTgxYTlhMGNkZTU2NGFjMjM4NWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAKQEAg
LTMzLDggKzMzLDExIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRW5jb2RlckFkYXB0ZXI6OkVu
Y29kZXJBZGFwdGVyKCkKLSAgICA6IG1fZW5jb2RlcihDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6
OmNyZWF0ZSgwKSkKKyAgICA6IG1fZW5jb2RlcihDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNy
ZWF0ZSgpKQogeworICAgIC8vIEtlZXAgZm9ybWF0IGNvbXBhdGliaWxpdHkgYnkgZGVjb2Rpbmcg
YW4gdW51c2VkIHVpbnQ2NF90IHZhbHVlCisgICAgLy8gdGhhdCB1c2VkIHRvIGJlIGVuY29kZWQg
YnkgdGhlIGFyZ3VtZW50IGVuY29kZXIuCisgICAgbV9lbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KDApKTsKIH0KIAogQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBFbmNvZGVyQWRh
cHRlcjo6ZGF0YVJlZmVyZW5jZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA2ZjY3ZWQwMjI5MTI1ZTczODQ5OGEwZjI2NzJjODg0YmMzNjg4MzY1
Li40M2VkMTZiMWEzOWM5OGQ3NWViZmU1NDE5NjBiZWE0ZWJlZjk5ZjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMTEsMTQgKzEwMTEsMTQgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmIG1lc3NhZ2UKICAgICBpZiAoIWluamVjdGVkQnVuZGxlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbWVzc2FnZURlY29kZXIobWVz
c2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOworICAgIE93blB0cjxDb3JlSVBD
OjpBcmd1bWVudERlY29kZXI+IGRlY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNy
ZWF0ZShtZXNzYWdlRGF0YS5kYXRhKCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CiAKICAgICBTdHJp
bmcgbWVzc2FnZU5hbWU7Ci0gICAgaWYgKCFtZXNzYWdlRGVjb2Rlci5kZWNvZGUobWVzc2FnZU5h
bWUpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gbWVzc2FnZUJvZHk7Ci0gICAgaWYgKCFtZXNz
YWdlRGVjb2Rlci5kZWNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVzc2Fn
ZUJvZHkpKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRGVjb2RlcihtZXNzYWdlQm9keSkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbmplY3Rl
ZEJ1bmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBlYmNkNmNjMzVmNzBmZmZmNmVkMDhi
ZTMxOWExMzE0YzdkNjJiMDVkLi4wNmEzZmRkMGJjODMzMGFjYzZlMzczZDYxNWViYzAzYTEzMjIy
MjFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC00MDk0LDYgKzQwOTQsMjIgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBs
YXRmb3JtXENvcmVJUENcTWVzc2FnZURlY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdl
RGVjb2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5jb2Rlci5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3Jl
SVBDXE1lc3NhZ2VFbmNvZGVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBDXE1lc3NhZ2VJRC5oIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169065</attachid>
            <date>2012-10-16 17:56:49 -0700</date>
            <delta_ts>2012-10-17 10:28:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121016175537.patch</filename>
            <type>text/plain</type>
            <size>85160</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLmM5YmJjZmE3YjA5OGMwMDFkNjExYTkwNmQzOTg4Y2E3NTViZmE0
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCwxMiArMjgsMTMgQEAKICNpZm5kZWYgQ29ubmVjdGlvbl9oCiAjZGVmaW5lIENvbm5lY3Rp
b25faAogCi0jaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCi0jaW5jbHVkZSAiQXJndW1lbnRF
bmNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29k
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CkBAIC0xOTAsOSArMTkxLDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgc2VuZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVw
bHkmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCA9IE5vVGlt
ZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IDApOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRp
b25JRCwgZG91YmxlIHRpbWVvdXQpOwogCi0gICAgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+
IGNyZWF0ZVN5bmNNZXNzYWdlQXJndW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKLSAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJ
RCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdz
ID0gMCk7Ci0gICAgYm9vbCBzZW5kU3luY1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVy
Pik7CisgICAgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IENTdHJpbmcmIG1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJ
RCk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZUVu
Y29kZXI+LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gMCk7CisgICAgYm9vbCBzZW5kU3lu
Y1JlcGx5KFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+KTsKIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSB2YXJpYW50cyBvZiBzZW5kLCBzZW5kU3luYyBhbmQgd2FpdEZvciBhcmUgYWxsIGRlcHJlY2F0
ZWQuCiAgICAgLy8gQWxsIGNsaWVudHMgc2hvdWxkIG1vdmUgdG8gdGhlIG92ZXJsb2FkcyB0aGF0
IHRha2UgYSBtZXNzYWdlIHR5cGUuCkBAIC0yNDIsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICB9
OwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RW5jb2Rlcj4gT3V0Z29p
bmdNZXNzYWdlOworICAgIHR5cGVkZWYgTWVzc2FnZTxNZXNzYWdlRW5jb2Rlcj4gT3V0Z29pbmdN
ZXNzYWdlOwogCiBwcml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1Nl
cnZlciwgQ2xpZW50KiwgV2ViQ29yZTo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7CkBAIC0yNTEs
MTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50OyB9CiAgICAgCi0gICAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+
IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91Ymxl
IHRpbWVvdXQpOworICAgIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IHdhaXRGb3JNZXNzYWdl
KE1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpOwogICAg
IAotICAgIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UoTWVzc2Fn
ZUlELCB1aW50NjRfdCBzeW5jUmVxdWVzdElELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4s
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gMCk7Ci0gICAgUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpOworICAgIFBhc3NP
d25QdHI8TWVzc2FnZURlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQsIHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+LCBkb3VibGUgdGltZW91
dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IDApOworICAgIFBhc3NPd25QdHI8TWVzc2FnZURl
Y29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgZG91YmxlIHRp
bWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBj
b25uZWN0aW9uIHdvcmsgcXVldWUuCi0gICAgdm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1l
c3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+KTsKLSAgICB2b2lkIHByb2Nlc3NJ
bmNvbWluZ1N5bmNSZXBseShQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOworICAgIHZvaWQg
cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2FnZURlY29k
ZXI+KTsKKyAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQYXNzT3duUHRyPE1lc3Nh
Z2VEZWNvZGVyPik7CiAKICAgICB2b2lkIGFkZFF1ZXVlQ2xpZW50T25Xb3JrUXVldWUoUXVldWVD
bGllbnQqKTsKICAgICB2b2lkIHJlbW92ZVF1ZXVlQ2xpZW50T25Xb3JrUXVldWUoUXVldWVDbGll
bnQqKTsKQEAgLTI2NiwxNyArMjY3LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TZW5kT3V0
Z29pbmdNZXNzYWdlcygpIGNvbnN0OwogICAgIGJvb2wgcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdN
ZXNzYWdlcygpIGNvbnN0OwogICAgIHZvaWQgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKLSAgICBi
b29sIHNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5j
b2Rlcj4pOworICAgIGJvb2wgc2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25Q
dHI8TWVzc2FnZUVuY29kZXI+KTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAg
IAotICAgIHR5cGVkZWYgTWVzc2FnZTxBcmd1bWVudERlY29kZXI+IEluY29taW5nTWVzc2FnZTsK
KyAgICB0eXBlZGVmIE1lc3NhZ2U8TWVzc2FnZURlY29kZXI+IEluY29taW5nTWVzc2FnZTsKIAog
ICAgIC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgogICAgIHZvaWQgZGlzcGF0Y2hD
b25uZWN0aW9uRGlkQ2xvc2UoKTsKICAgICB2b2lkIGRpc3BhdGNoT25lTWVzc2FnZSgpOwogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlKEluY29taW5nTWVzc2FnZSYpOwotICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlKE1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKik7CisgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2UoTWVzc2FnZUlELCBNZXNzYWdlRGVjb2RlciopOworICAgIHZvaWQgZGlzcGF0
Y2hTeW5jTWVzc2FnZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CiAgICAgdm9pZCBkaWRG
YWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRo
cmVhZC4KQEAgLTMxMiw3ICszMTMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFRocmVhZENvbmRp
dGlvbiBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uOwogICAgIE11dGV4IG1fd2FpdEZvck1lc3Nh
Z2VNdXRleDsKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdWludDY0X3Q+LCBBcmd1
bWVudERlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFwOworICAgIEhhc2hNYXA8c3RkOjpwYWly
PHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj4gbV93YWl0Rm9yTWVzc2FnZU1h
cDsKIAogICAgIC8vIFJlcHJlc2VudHMgYSBzeW5jIHJlcXVlc3QgZm9yIHdoaWNoIHdlJ3JlIHdh
aXRpbmcgb24gYSByZXBseS4KICAgICBzdHJ1Y3QgUGVuZGluZ1N5bmNSZXBseSB7CkBAIC0zMjEs
NyArMzIyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBUaGUgcmVwbHkgZGVjb2Rlciwgd2ls
bCBiZSBudWxsIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBwcm9jZXNzaW5nIHRoZSBzeW5jCiAgICAg
ICAgIC8vIG1lc3NhZ2Ugb24gdGhlIG90aGVyIHNpZGUuCi0gICAgICAgIEFyZ3VtZW50RGVjb2Rl
ciogcmVwbHlEZWNvZGVyOworICAgICAgICBNZXNzYWdlRGVjb2RlciogcmVwbHlEZWNvZGVyOwog
CiAgICAgICAgIC8vIFdpbGwgYmUgc2V0IHRvIHRydWUgb25jZSBhIHJlcGx5IGhhcyBiZWVuIHJl
Y2VpdmVkIG9yIGFuIGVycm9yIG9jY3VycmVkLgogICAgICAgICBib29sIGRpZFJlY2VpdmVSZXBs
eTsKQEAgLTM0MCw5ICszNDEsOSBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2Rlcigp
CisgICAgICAgIFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlbGVhc2VSZXBseURlY29kZXIo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZXBseSA9
IGFkb3B0UHRyKHJlcGx5RGVjb2Rlcik7CisgICAgICAgICAgICBPd25QdHI8TWVzc2FnZURlY29k
ZXI+IHJlcGx5ID0gYWRvcHRQdHIocmVwbHlEZWNvZGVyKTsKICAgICAgICAgICAgIHJlcGx5RGVj
b2RlciA9IDA7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiByZXBseS5yZWxlYXNl
KCk7CkBAIC0zODgsNyArMzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rvcjx1aW50OF90PiBt
X3JlYWRCdWZmZXI7CiAgICAgT1ZFUkxBUFBFRCBtX3JlYWRTdGF0ZTsKLSAgICBPd25QdHI8QXJn
dW1lbnRFbmNvZGVyPiBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50czsKKyAgICBPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IG1fcGVuZGluZ1dyaXRlRW5jb2RlcjsKICAgICBPVkVSTEFQUEVEIG1fd3JpdGVT
dGF0ZTsKICAgICBIQU5ETEUgbV9jb25uZWN0aW9uUGlwZTsKICNlbGlmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQpAQCAtNDA5LDIyICs0MTAsMjIgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kKGNvbnN0IFQmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7Ci0gICAgT3duUHRy
PEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVh
dGUoZGVzdGluYXRpb25JRCk7Ci0gICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7
CisgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNy
ZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
KTsKICAgICAKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCks
IGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVy
biBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCks
IG1lc3NhZ2VTZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5l
Y3Rpb246OnNlbmRTeW5jKGNvbnN0IFQmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFQ6OlJlcGx5
JiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQsIHVuc2lnbmVk
IHN5bmNTZW5kRmxhZ3MpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAg
T3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRlU3luY01lc3Nh
Z2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgT3du
UHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKCIi
LCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAgICAgCiAgICAgLy8gRW5jb2Rl
IHRoZSByZXN0IG9mIHRoZSBpbnB1dCBhcmd1bWVudHMuCi0gICAgYXJndW1lbnRFbmNvZGVyLT5l
bmNvZGUobWVzc2FnZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UpOwogCiAgICAgLy8g
Tm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIGEgcmVwbHkuCi0gICAgT3duUHRyPEFy
Z3VtZW50RGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChU
OjptZXNzYWdlSUQpLCBzeW5jUmVxdWVzdElELCBhcmd1bWVudEVuY29kZXIucmVsZWFzZSgpLCB0
aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5
RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgc3luY1Jl
cXVlc3RJRCwgZW5jb2Rlci5yZWxlYXNlKCksIHRpbWVvdXQsIHN5bmNTZW5kRmxhZ3MpOwogICAg
IGlmICghcmVwbHlEZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQzNCw3ICs0
MzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jKGNv
bnN0IFQmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJv
b2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVz
dGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RGVjb2Rl
cj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0
aW5hdGlvbklELCB0aW1lb3V0KTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIg
PSB3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgZGVzdGluYXRpb25JRCwg
dGltZW91dCk7CiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTQ0OSwxMyArNDUwLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CiBpbmxpbmUgYm9vbCBDb25uZWN0aW9uOjpkZXByZWNhdGVkU2VuZFN5bmMoRSBtZXNz
YWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cywgY29uc3Qg
VSYgcmVwbHksIGRvdWJsZSB0aW1lb3V0KQogewogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQg
PSAwOwotICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IGNyZWF0
ZVN5bmNNZXNzYWdlQXJndW1lbnRFbmNvZGVyKGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQp
OworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5bmNNZXNzYWdl
RW5jb2RlcigiIiwgIiIsIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8g
RW5jb2RlIHRoZSBpbnB1dCBhcmd1bWVudHMuCi0gICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUo
YXJndW1lbnRzKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKICAgICAKICAgICAv
LyBOb3cgc2VuZCB0aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8
QXJndW1lbnREZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlE
KG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRp
bWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5
bmNNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBzeW5jUmVxdWVzdElELCBlbmNvZGVyLnJl
bGVhc2UoKSwgdGltZW91dCk7CiAgICAgaWYgKCFyZXBseURlY29kZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKQEAgLTQ2NiwxMCArNDY3LDEwIEBAIGlubGluZSBib29sIENvbm5lY3Rp
b246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+CiBib29sIENvbm5lY3Rpb246OmRl
cHJlY2F0ZWRTZW5kKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBjb25zdCBU
JiBhcmd1bWVudHMpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNv
ZGVyID0gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7Ci0gICAgYXJndW1l
bnRFbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKKyAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+
IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKGFyZ3VtZW50cyk7CiAKLSAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoTWVzc2FnZUlEKG1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCkpOworICAg
IHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQobWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNl
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYWVmMzUy
NWE2NWFlYjAyMmQwOWU5NzBiNDE0ZmNjZWIxMmZjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBDb3JlSVBDIHsKKworUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gTWVzc2FnZURlY29kZXI6
OmNyZWF0ZShjb25zdCBEYXRhUmVmZXJlbmNlJiBidWZmZXIpCit7CisgICAgRGVxdWU8QXR0YWNo
bWVudD4gYXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlRGVjb2Rl
cihidWZmZXIsIGF0dGFjaG1lbnRzKSk7Cit9CisKK1Bhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+
IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVmZmVyLCBEZXF1
ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBN
ZXNzYWdlRGVjb2RlcihidWZmZXIsIGF0dGFjaG1lbnRzKSk7Cit9CisKK01lc3NhZ2VEZWNvZGVy
Ojp+TWVzc2FnZURlY29kZXIoKQoreworfQorCitNZXNzYWdlRGVjb2Rlcjo6TWVzc2FnZURlY29k
ZXIoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVmZmVyLCBEZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNo
bWVudHMpCisgICAgOiBBcmd1bWVudERlY29kZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgYXR0YWNobWVudHMpCit7CisgICAgQ1N0cmluZyBtZXNzYWdlUmVjZWl2ZXJOYW1lOworICAg
IGlmICghZGVjb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDU3RyaW5nIG1lc3NhZ2VOYW1lOworICAgIGlmICghZGVjb2RlKG1lc3NhZ2VOYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZGVjb2RlVUludDY0KG1fZGVzdGluYXRpb25JRCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDhjOWI0YjljMmVmNWYxZmQ5ZmM3
YjcyYzk0MWNmMzYyNmZhZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE1lc3NhZ2VEZWNvZGVyX2gKKyNkZWZpbmUgTWVzc2FnZURlY29kZXJfaAor
CisjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwor
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKKworY2xhc3MgTWVzc2FnZURlY29kZXIgOiBwdWJsaWMgQXJn
dW1lbnREZWNvZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVj
b2Rlcj4gY3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlcik7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8TWVzc2FnZURlY29kZXI+IGNyZWF0ZShjb25zdCBEYXRhUmVmZXJlbmNlJiBidWZm
ZXIsIERlcXVlPEF0dGFjaG1lbnQ+Jik7CisgICAgdmlydHVhbCB+TWVzc2FnZURlY29kZXIoKTsK
KworcHJpdmF0ZToKKyAgICBNZXNzYWdlRGVjb2Rlcihjb25zdCBEYXRhUmVmZXJlbmNlJiBidWZm
ZXIsIERlcXVlPEF0dGFjaG1lbnQ+Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCisK
KyNlbmRpZiAvLyBNZXNzYWdlRGVjb2Rlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzODU4YjZlYjgwNjY2
NDllZDE0YWM4MDBjMTNmNDFhYjczODI4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFbmNv
ZGVyLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgQ29yZUlQ
QyB7CisKK1Bhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUo
Y29uc3QgQ1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNZXNzYWdlRW5jb2RlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGlu
YXRpb25JRCkpOworfQorCitNZXNzYWdlRW5jb2Rlcjo6TWVzc2FnZUVuY29kZXIoY29uc3QgQ1N0
cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgZW5jb2RlKG1lc3NhZ2VSZWNlaXZlck5hbWUp
OworICAgIGVuY29kZShtZXNzYWdlTmFtZSk7CisgICAgZW5jb2RlKGRlc3RpbmF0aW9uSUQpOwor
fQorCitNZXNzYWdlRW5jb2Rlcjo6fk1lc3NhZ2VFbmNvZGVyKCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhODc4NTBiOTliYzNhYzU2NTQwMDNlYjc1ZDBhZmU3
N2U2MzU5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VFbmNvZGVyLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWVzc2FnZUVuY29kZXJfaAorI2RlZmluZSBNZXNzYWdlRW5jb2Rlcl9oCisKKyNpbmNsdWRl
ICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgQ29yZUlQQyB7CisKK2NsYXNzIE1lc3NhZ2VFbmNvZGVyIDogcHVibGljIEFyZ3VtZW50RW5j
b2RlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGNy
ZWF0ZShjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdmlydHVhbCB+TWVzc2Fn
ZUVuY29kZXIoKTsKKworcHJpdmF0ZToKKyAgICBNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5n
JiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2Vu
ZGlmIC8vIE1lc3NhZ2VFbmNvZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggZTJiYTBiNTZmNWE1MTNkMTAxZGRiOTE3ZWJkNjg1
MGQzOTNmMjQ4Zi4uNzQzODEwNTBjN2RkN2Q1NmFmMWE0ZTEyYzIwNGVjOWY2M2IzNDg2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlU2VuZGVyLmgKQEAg
LTQwLDE4ICs0MCwxOCBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29s
IHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICB7Ci0g
ICAgICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50
RW5jb2Rlcjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgICAgICBhcmd1bWVudEVuY29kZXIt
PmVuY29kZShtZXNzYWdlKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVy
ID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIGRlc3RpbmF0aW9uSUQpOworICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VCo+KHRoaXMpLT5zZW5kTWVzc2FnZShNZXNzYWdlSUQoVTo6bWVzc2FnZUlEKSwg
YXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
Kj4odGhpcyktPnNlbmRNZXNzYWdlKE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJl
bGVhc2UoKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlcikKKyAg
ICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIpCiAgICAgewogICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9u
ID0gc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLT5jb25uZWN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChj
b25uZWN0aW9uKTsKIAotICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWVz
c2FnZUlELCBhcmd1bWVudEVuY29kZXIpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIHNlbmRTeW5jKGNvbnN0IFUmIG1lc3NhZ2UsIGNvbnN0IHR5cGVuYW1lIFU6
OlJlcGx5JiByZXBseSwgZG91YmxlIHRpbWVvdXQgPSBDb25uZWN0aW9uOjpOb1RpbWVvdXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9u
TWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25N
YWMuY3BwCmluZGV4IDcyOTg5ZGRhMDFhYTMxZTE5YTQ0NjY2Y2VjODhlYWMxZmU1ZTc0YTUuLmMx
M2IyM2JhNWI5MTUxNDkwM2JmN2U3ZjQyMjIwNmM2Yzc0ZGM3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiQ29yZUlQ
Q01lc3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
YWNoUG9ydC5oIgogI2luY2x1ZGUgIk1hY2hVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1J1bkxvb3AuaD4KQEAgLTExMSwxMCArMTEyLDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6b3Blbigp
CiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2Vu
ZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9y
IHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1
bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKLSAgICAgICAgYXJndW1l
bnRFbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpKTsKKyAgICAgICAgT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gTWVz
c2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIDApOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
TWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAotICAg
ICAgICBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OkluaXRpYWxpemVDb25u
ZWN0aW9uKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAgICAgIHNlbmRNZXNzYWdl
KE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pLCBlbmNvZGVy
LnJlbGVhc2UoKSk7CiAKICAgICAgICAgLy8gU2V0IHRoZSBkZWFkIG5hbWUgaGFuZGxlciBmb3Ig
b3VyIHNlbmQgcG9ydC4KICAgICAgICAgaW5pdGlhbGl6ZURlYWROYW1lU291cmNlKCk7CkBAIC0x
MzAsMTAgKzEzMSwxMCBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgIGlmIChtX2V4Y2Vw
dGlvblBvcnQpIHsKICAgICAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJNYWNoUG9ydEV2
ZW50SGFuZGxlcihtX2V4Y2VwdGlvblBvcnQsIFdvcmtRdWV1ZTo6TWFjaFBvcnREYXRhQXZhaWxh
YmxlLCBiaW5kKCZDb25uZWN0aW9uOjpleGNlcHRpb25Tb3VyY2VFdmVudEhhbmRsZXIsIHRoaXMp
KTsKIAotICAgICAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBB
cmd1bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKLSAgICAgICAgYXJndW1lbnRFbmNvZGVyLT5lbmNv
ZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwor
ICAgICAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6
Y3JlYXRlKCIiLCAiIiwgMCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX2V4
Y2VwdGlvblBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1l
c3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpTZXRFeGNlcHRpb25Qb3J0KSwgYXJndW1l
bnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRChDb3Jl
SVBDTWVzc2FnZTo6U2V0RXhjZXB0aW9uUG9ydCksIGVuY29kZXIucmVsZWFzZSgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1Nyw5ICsxNTgsOSBAQCBib29sIENvbm5lY3Rpb246
OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3du
UHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewotICAgIFZlY3RvcjxBdHRhY2htZW50PiBh
dHRhY2htZW50cyA9IGFyZ3VtZW50cy0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CisgICAgVmVjdG9y
PEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gZW5jb2Rlci0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7
CiAgICAgCiAgICAgc2l6ZV90IG51bWJlck9mUG9ydERlc2NyaXB0b3JzID0gMDsKICAgICBzaXpl
X3QgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyA9IDA7CkBAIC0xNzEsMTQgKzE3MiwxNCBA
QCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgICAgICAgICAgbnVtYmVyT2ZPT0xNZW1vcnlE
ZXNjcmlwdG9ycysrOwogICAgIH0KICAgICAKLSAgICBzaXplX3QgbWVzc2FnZVNpemUgPSBtYWNo
TWVzc2FnZVNpemUoYXJndW1lbnRzLT5idWZmZXJTaXplKCksIG51bWJlck9mUG9ydERlc2NyaXB0
b3JzLCBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3JzKTsKKyAgICBzaXplX3QgbWVzc2FnZVNp
emUgPSBtYWNoTWVzc2FnZVNpemUoZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCBudW1iZXJPZlBvcnRE
ZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7CiAgICAgY2hhciBidWZm
ZXJbaW5saW5lTWVzc2FnZU1heFNpemVdOwogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0g
ZmFsc2U7CiAgICAgaWYgKG1lc3NhZ2VTaXplID4gc2l6ZW9mKGJ1ZmZlcikpIHsKICAgICAgICAg
bWVzc2FnZUJvZHlJc09PTCA9IHRydWU7CiAKLSAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKEF0
dGFjaG1lbnQoYXJndW1lbnRzLT5idWZmZXIoKSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCksIE1B
Q0hfTVNHX1ZJUlRVQUxfQ09QWSwgZmFsc2UpKTsKKyAgICAgICAgYXR0YWNobWVudHMuYXBwZW5k
KEF0dGFjaG1lbnQoZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1ZmZlclNpemUoKSwgTUFD
SF9NU0dfVklSVFVBTF9DT1BZLCBmYWxzZSkpOwogICAgICAgICBudW1iZXJPZk9PTE1lbW9yeURl
c2NyaXB0b3JzKys7CiAgICAgICAgIG1lc3NhZ2VTaXplID0gbWFjaE1lc3NhZ2VTaXplKDAsIG51
bWJlck9mUG9ydERlc2NyaXB0b3JzLCBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3JzKTsKICAg
ICB9CkBAIC0yMzMsNyArMjM0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNz
YWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKIAogICAgIC8v
IENvcHkgdGhlIGRhdGEgaWYgaXQgaXMgbm90IGJlaW5nIHNlbnQgb3V0LW9mLWxpbmUuCiAgICAg
aWYgKCFtZXNzYWdlQm9keUlzT09MKQotICAgICAgICBtZW1jcHkobWVzc2FnZURhdGEsIGFyZ3Vt
ZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKTsKKyAgICAgICAgbWVtY3B5
KG1lc3NhZ2VEYXRhLCBlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsK
IAogICAgIEFTU0VSVChtX3NlbmRQb3J0KTsKICAgICAKQEAgLTI1MSwxNCArMjUyLDE0IEBAIHZv
aWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZURlYWROYW1lU291cmNlKCkKICAgICBtX2Nvbm5lY3Rp
b25RdWV1ZS5yZWdpc3Rlck1hY2hQb3J0RXZlbnRIYW5kbGVyKG1fc2VuZFBvcnQsIFdvcmtRdWV1
ZTo6TWFjaFBvcnREZWFkTmFtZU5vdGlmaWNhdGlvbiwgYmluZCgmQ29ubmVjdGlvbjo6Y29ubmVj
dGlvbkRpZENsb3NlLCB0aGlzKSk7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RGVj
b2Rlcj4gY3JlYXRlQXJndW1lbnREZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCitz
dGF0aWMgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFj
aF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKIHsKICAgICBpZiAoIShoZWFkZXItPm1zZ2hfYml0cyAm
IE1BQ0hfTVNHSF9CSVRTX0NPTVBMRVgpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBzaW1wbGUg
bWVzc2FnZS4KLSAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSBz
aXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOwogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEFyZ3VtZW50RGVjb2Rlcihib2R5LCBib2R5U2l6ZSkpOworICAgICAg
ICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21zZ19o
ZWFkZXJfdCk7CisKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJl
ZmVyZW5jZShib2R5LCBib2R5U2l6ZSkpOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2FnZUJvZHlJ
c09PTCA9IGhlYWRlci0+bXNnaF9pZCAmIE1lc3NhZ2VCb2R5SXNPT0w7CkBAIC0zMDMsMjIgKzMw
NCwyMiBAQCBzdGF0aWMgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGNyZWF0ZUFyZ3VtZW50
RGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZAogICAgICAgICB1aW50OF90KiBtZXNzYWdl
Qm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtZXNzYWdlQm9keUF0dGFjaG1lbnQuYWRkcmVz
cygpKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IG1lc3NhZ2VCb2R5QXR0YWNo
bWVudC5zaXplKCk7CiAKLSAgICAgICAgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29kZXI7
CisgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlcjsKIAogICAgICAgICBpZiAo
YXR0YWNobWVudHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3
IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplKTsKKyAgICAgICAg
ICAgIGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UobWVzc2Fn
ZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1
bWVudERlY29kZXIgPSBuZXcgQXJndW1lbnREZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9k
eVNpemUsIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgICAgIGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rl
cjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSksIGF0
dGFjaG1lbnRzKTsKIAogICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PihtZXNzYWdlQm9keUF0dGFjaG1lbnQuYWRkcmVz
cygpKSwgbWVzc2FnZUJvZHlBdHRhY2htZW50LnNpemUoKSk7CiAKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKGFyZ3VtZW50RGVjb2Rlcik7CisgICAgICAgIHJldHVybiBkZWNvZGVyLnJlbGVhc2Uo
KTsKICAgICB9CiAKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwog
ICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlw
dG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5
U2l6ZSwgYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShE
YXRhUmVmZXJlbmNlKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpLCBhdHRhY2htZW50cyk7
CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0
aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC0zNjAsOCArMzYxLDggQEAgdm9pZCBDb25uZWN0
aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
TWVzc2FnZUlEIG1lc3NhZ2VJRCA9IE1lc3NhZ2VJRDo6ZnJvbUludChoZWFkZXItPm1zZ2hfaWQp
OwotICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IGNyZWF0ZUFyZ3VtZW50
RGVjb2RlcihoZWFkZXIpOwotICAgIEFTU0VSVChhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNz
YWdlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKGhlYWRlcik7CisgICAg
QVNTRVJUKGRlY29kZXIpOwogCiAgICAgaWYgKG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQ
Q01lc3NhZ2U6OkluaXRpYWxpemVDb25uZWN0aW9uKSkgewogICAgICAgICBBU1NFUlQobV9pc1Nl
cnZlcik7CkBAIC0zNjksNyArMzcwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNl
RXZlbnRIYW5kbGVyKCkKICAgICAgICAgQVNTRVJUKCFtX3NlbmRQb3J0KTsKIAogICAgICAgICBN
YWNoUG9ydCBwb3J0OwotICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKHBvcnQpKSB7Cisg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBvcnQpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogRGlzY29ubmVjdC4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzkwLDE0
ICszOTEsMTQgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkK
IAogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlEKENvcmVJUENNZXNzYWdlOjpTZXRFeGNl
cHRpb25Qb3J0KSkgewogICAgICAgICBNYWNoUG9ydCBleGNlcHRpb25Qb3J0OwotICAgICAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGV4Y2VwdGlvblBvcnQpKQorICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShleGNlcHRpb25Qb3J0KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBzZXRNYWNoRXhjZXB0aW9uUG9ydChleGNlcHRpb25Qb3J0LnBvcnQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgYXJn
dW1lbnRzLnJlbGVhc2UoKSk7CisgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShtZXNzYWdlSUQs
IGRlY29kZXIucmVsZWFzZSgpKTsKIH0gICAgCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZXhjZXB0aW9u
U291cmNlRXZlbnRIYW5kbGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDYzNzRmMDMyM2JhZmExYmY5
MWNhYWY2ZmNjZGY5MWIyMmMzMTgyNDkuLjJkNTg1Njc3ZDdmNTgwYWE2MjUyY2U5ZGZhNzhhYWFk
OGVmZDA2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTI4MiwxMyArMjgxLDEzIEBAIGJvb2wgQ29ubmVj
dGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5
T09MKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
b29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50
RGVjb2RlcjsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXI7CiAgICAgaWYgKGF0
dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFyZ3Vt
ZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSk7CisgICAgICAg
IGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVuY2UobWVzc2FnZUJv
ZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpKTsKICAgICBlbHNlCi0gICAgICAgIGFyZ3VtZW50
RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJv
ZHlTaXplKCksIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVy
OjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSksIGF0dGFjaG1lbnRzKTsKIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlu
Zm8ubWVzc2FnZUlEKCksIGFkb3B0UHRyKGFyZ3VtZW50RGVjb2RlcikpOworICAgIHByb2Nlc3NJ
bmNvbWluZ01lc3NhZ2UobWVzc2FnZUluZm8ubWVzc2FnZUlEKCksIGRlY29kZXIucmVsZWFzZSgp
KTsKIAogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplID4gbWVzc2FnZUxlbmd0aCkgewogICAgICAg
ICBtZW1tb3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBtZXNz
YWdlTGVuZ3RoLCBtX3JlYWRCdWZmZXJTaXplIC0gbWVzc2FnZUxlbmd0aCk7CkBAIC00NDEsNyAr
NDQwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2Vz
KCkgY29uc3QKICAgICByZXR1cm4gbV9pc0Nvbm5lY3RlZDsKIH0KIAotYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJn
dW1lbnRFbmNvZGVyPiBhcmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlcikKIHsKICNpZiBQTEFURk9STShRVCkKICAgICBBU1NFUlQobV9zb2NrZXROb3RpZmllcik7
CkBAIC00NDksNyArNDQ4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKIAogICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRhY2htZW50TWF4QW1vdW50ICogc2l6
ZW9mKHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFjaG1lbnRzRml0VG9NZXNzYWdlSW5s
aW5lKTsKIAotICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cyA9IGFyZ3VtZW50cy0+
cmVsZWFzZUF0dGFjaG1lbnRzKCk7CisgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRz
ID0gZW5jb2Rlci0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgQXR0YWNobWVudFJlc291cmNl
R3VhcmQ8VmVjdG9yPEF0dGFjaG1lbnQ+LCBWZWN0b3I8QXR0YWNobWVudD46Oml0ZXJhdG9yPiBh
dHRhY2hlbWVudERpc3Bvc2VyKGF0dGFjaG1lbnRzKTsKIAogICAgIGlmIChhdHRhY2htZW50cy5z
aXplKCkgPiAoYXR0YWNobWVudE1heEFtb3VudCAtIDEpKSB7CkBAIC00NTcsMTAgKzQ1NiwxMCBA
QCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgTWVzc2FnZUluZm8gbWVzc2FnZUluZm8obWVzc2FnZUlELCBhcmd1bWVudHMtPmJ1ZmZl
clNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgpKTsKLSAgICBzaXplX3QgbWVzc2FnZVNpemVXaXRo
Qm9keUlubGluZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0YWNobWVudHMuc2l6ZSgpICog
c2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKTsKLSAgICBp
ZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VNYXhTaXplICYmIGFyZ3VtZW50
cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4g
b29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlKGFyZ3VtZW50cy0+
YnVmZmVyU2l6ZSgpKTsKKyAgICBNZXNzYWdlSW5mbyBtZXNzYWdlSW5mbyhtZXNzYWdlSUQsIGVu
Y29kZXItPmJ1ZmZlclNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICBzaXplX3QgbWVz
c2FnZVNpemVXaXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0YWNobWVu
dHMuc2l6ZSgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBlbmNvZGVyLT5idWZmZXJTaXpl
KCk7CisgICAgaWYgKG1lc3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUgPiBtZXNzYWdlTWF4U2l6ZSAm
JiBlbmNvZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpKTsKICAgICAgICAgaWYgKCFvb2xNZXNzYWdlQm9keSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDcwLDcgKzQ2OSw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFy
Z3VtZW50RW5jCiAKICAgICAgICAgbWVzc2FnZUluZm8uc2V0TWVzc2FnZUJvZHlPT0woKTsKIAot
ICAgICAgICBtZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwgYXJndW1lbnRzLT5idWZmZXIo
KSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOworICAgICAgICBtZW1jcHkob29sTWVzc2FnZUJv
ZHktPmRhdGEoKSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1ZmZlclNpemUoKSk7CiAK
ICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKGhhbmRsZS5yZWxlYXNlVG9BdHRhY2htZW50KCkp
OwogICAgIH0KQEAgLTU0MCw5ICs1MzksOSBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2lu
Z01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAg
ICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAKLSAgICBpZiAoIW1lc3NhZ2VJbmZvLmlzTWVzc2Fn
ZUJvZHlPT0woKSAmJiBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSkgewotICAgICAgICBpb3ZbaW92
TGVuZ3RoXS5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFyZ3VtZW50cy0+YnVm
ZmVyKCkpOwotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gYXJndW1lbnRzLT5idWZm
ZXJTaXplKCk7CisgICAgaWYgKCFtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgJiYgZW5j
b2Rlci0+YnVmZmVyU2l6ZSgpKSB7CisgICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9iYXNlID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5jb2Rlci0+YnVmZmVyKCkpOworICAgICAgICBpb3Zb
aW92TGVuZ3RoXS5pb3ZfbGVuID0gZW5jb2Rlci0+YnVmZmVyU2l6ZSgpOwogICAgICAgICArK2lv
dkxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggZjUxYWQwNzlhYjcwN2Y3YmJhMGUwYTU4
OWE0MGFhM2VmZDc0MjE5NS4uMzIzM2RkNzFlOWIwYmU5ZjcwODAxZjViOTU0MTNjMTlhMDQxNmNi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVj
dGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKICNp
bmNsdWRlICJCaW5hcnlTZW1hcGhvcmUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KQEAgLTE3Miw3ICsxNzEsOCBAQCB2b2lkIENv
bm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogCiAgICAgICAgICAgICB1bnNpZ25lZCBtZXNz
YWdlSUQgPSAqcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1fcmVhZEJ1ZmZlci5kYXRhKCkg
KyByZWFsQnVmZmVyU2l6ZSk7CiAKLSAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
TWVzc2FnZUlEOjpmcm9tSW50KG1lc3NhZ2VJRCksIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29k
ZXIobV9yZWFkQnVmZmVyLmRhdGEoKSwgcmVhbEJ1ZmZlclNpemUpKSk7CisgICAgICAgICAgICBP
d25QdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERh
dGFSZWZlcmVuY2UobV9yZWFkQnVmZmVyLmRhdGEoKSwgcmVhbEJ1ZmZlclNpemUpKTsKKyAgICAg
ICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVzc2FnZUlEOjpmcm9tSW50KG1lc3NhZ2VJ
RCksIGRlY29kZXIucmVsZWFzZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZpbmQgb3V0
IHRoZSBzaXplIG9mIHRoZSBuZXh0IG1lc3NhZ2UgaW4gdGhlIHBpcGUgKGlmIHRoZXJlIGlzIG9u
ZSkgc28gdGhhdCB3ZSBjYW4gcmVhZApAQCAtMjQ3LDkgKzI0Nyw5IEBAIHZvaWQgQ29ubmVjdGlv
bjo6d3JpdGVFdmVudEhhbmRsZXIoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICAvLyBUaGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHNvIHdlIGFyZSBu
b3cgZG9uZSB3aXRoIGl0cyBhcmd1bWVudHMuIENsZWFyaW5nIHRoaXMgbWVtYmVyCisgICAgLy8g
VGhlIHBlbmRpbmcgd3JpdGUgaGFzIGZpbmlzaGVkLCBzbyB3ZSBhcmUgbm93IGRvbmUgd2l0aCBp
dHMgZW5jb2Rlci4gQ2xlYXJpbmcgdGhpcyBtZW1iZXIKICAgICAvLyB3aWxsIGFsbG93IHVzIHRv
IHNlbmQgbWVzc2FnZXMgYWdhaW4uCi0gICAgbV9wZW5kaW5nV3JpdGVBcmd1bWVudHMgPSBudWxs
cHRyOworICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IG51bGxwdHI7CiAKICAgICAvLyBOb3cg
dGhhdCB0aGUgcGVuZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHdlIGNhbiB0cnkgdG8gc2VuZCBh
IG5ldyBtZXNzYWdlLgogICAgIHNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7CkBAIC0yNzQsMjQgKzI3
NCwyNCBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMo
KSBjb25zdAogewogICAgIC8vIFdlIG9ubHkgYWxsb3cgc2VuZGluZyBvbmUgYXN5bmNocm9ub3Vz
IG1lc3NhZ2UgYXQgYSB0aW1lLiBJZiB3ZSB3YW50ZWQgdG8gc2VuZCBtb3JlIHRoYW4gb25lCiAg
ICAgLy8gYXQgb25jZSwgd2UnZCBoYXZlIHRvIHVzZSBtdWx0aXBsZSBPVkVSTEFQUEVEIHN0cnVj
dHVyZXMgYW5kIGhvbGQgb250byBtdWx0aXBsZSBwZW5kaW5nCi0gICAgLy8gQXJndW1lbnRFbmNv
ZGVycyAob25lIG9mIGVhY2ggZm9yIGVhY2ggc2ltdWx0YW5lb3VzIGFzeW5jaHJvbm91cyBtZXNz
YWdlKS4KLSAgICByZXR1cm4gIW1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIC8vIE1lc3Nh
Z2VFbmNvZGVycyAob25lIG9mIGVhY2ggZm9yIGVhY2ggc2ltdWx0YW5lb3VzIGFzeW5jaHJvbm91
cyBtZXNzYWdlKS4KKyAgICByZXR1cm4gIW1fcGVuZGluZ1dyaXRlRW5jb2RlcjsKIH0KIAotYm9v
bCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudHMpCitib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdl
RW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICBBU1NFUlQoIW1fcGVuZGluZ1dyaXRlQXJndW1lbnRz
KTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ1dyaXRlRW5jb2Rlcik7CiAKICAgICAvLyBKdXN0IGJh
aWwgaWYgdGhlIGhhbmRsZSBoYXMgYmVlbiBjbG9zZWQuCiAgICAgaWYgKG1fY29ubmVjdGlvblBp
cGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIFdlIHB1dCB0aGUgbWVzc2FnZSBJRCBsYXN0LgotICAgIGFyZ3VtZW50cy0+ZW5jb2RlVUlu
dDMyKG1lc3NhZ2VJRC50b0ludCgpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIobWVzc2Fn
ZUlELnRvSW50KCkpOwogCiAgICAgLy8gV3JpdGUgdGhlIG91dGdvaW5nIG1lc3NhZ2UuCiAKLSAg
ICBpZiAoOjpXcml0ZUZpbGUobV9jb25uZWN0aW9uUGlwZSwgYXJndW1lbnRzLT5idWZmZXIoKSwg
YXJndW1lbnRzLT5idWZmZXJTaXplKCksIDAsICZtX3dyaXRlU3RhdGUpKSB7CisgICAgaWYgKDo6
V3JpdGVGaWxlKG1fY29ubmVjdGlvblBpcGUsIGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVyLT5i
dWZmZXJTaXplKCksIDAsICZtX3dyaXRlU3RhdGUpKSB7CiAgICAgICAgIC8vIFdlIHN1Y2Nlc3Nm
dWxseSBzZW50IHRoaXMgbWVzc2FnZS4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MzA5LDkgKzMwOSw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNz
YWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICAvLyBUaGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgc29vbi4gSG9s
ZCBvbnRvIHRoZSBhcmd1bWVudHMgc28gdGhhdCB0aGV5IHdvbid0IGJlIGRlc3Ryb3llZAorICAg
IC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xkIG9udG8gdGhlIGVuY29kZXIg
c28gdGhhdCBpdCB3b24ndCBiZSBkZXN0cm95ZWQKICAgICAvLyBiZWZvcmUgdGhlIHdyaXRlIGNv
bXBsZXRlcy4KLSAgICBtX3BlbmRpbmdXcml0ZUFyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAgICBt
X3BlbmRpbmdXcml0ZUVuY29kZXIgPSBlbmNvZGVyOwogCiAgICAgLy8gV2UgY2FuIG9ubHkgc2Vu
ZCBvbmUgYXN5bmNocm9ub3VzIG1lc3NhZ2UgYXQgYSB0aW1lIChzZWUgY29tbWVudCBpbiBwbGF0
Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKS4KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKaW5kZXggYzhhMGFiOTJhYjkwYmQ3
ZjdlZDcyMzVlNjkwZDNiNDg4MDI5YTg1Mi4uOTc0ODIzZDkzNmJjMjJhMWQ2NjAwOThjMjUxMGI2
MzEyNjI0MTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5w
eQpAQCAtMjMwLDcgKzIzMCw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVy
cyhyZWNlaXZlcik6CiAgICAgZm9yIG1lc3NhZ2UgaW4gcmVjZWl2ZXIubWVzc2FnZXM6CiAgICAg
ICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoREVMQVlFRF9BVFRSSUJVVEUpOgogICAgICAgICAgICAgaGVhZGVycy5hZGQoJzx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4nKQotICAgICAgICAgICAgdHlwZXNfYnlfbmFtZXNw
YWNlWydDb3JlSVBDJ10udXBkYXRlKFsnQXJndW1lbnRFbmNvZGVyJywgJ0Nvbm5lY3Rpb24nXSkK
KyAgICAgICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnQ29yZUlQQyddLnVwZGF0ZShbJ01lc3Nh
Z2VFbmNvZGVyJywgJ0Nvbm5lY3Rpb24nXSkKIAogICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVjZWl2
ZXIuaXRlcnBhcmFtZXRlcnMoKToKICAgICAgICAgdHlwZSA9IHBhcmFtZXRlci50eXBlCkBAIC01
MDIsNyArNTAyLDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgQVNTRVJUKG1fYXJndW1lbnRzKTtcbicpCiAgICAgICAgICAgICByZXN1bHQgKz0gWycgICAg
bV9hcmd1bWVudHMtPmVuY29kZSglcyk7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3Vs
dCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShtX2FyZ3VtZW50cy5yZWxlYXNlKCkpO1xu
JykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBib29sIHJlc3VsdCA9IG1fY29ubmVj
dGlvbi0+c2VuZFN5bmNSZXBseShzdGF0aWNfcG9pbnRlcl9jYXN0PENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPihtX2FyZ3VtZW50cy5yZWxlYXNlKCkpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjtcbicpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgcmV0dXJuIHJlc3VsdDtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd9XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21l
c3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3Nh
Z2VzX3VuaXR0ZXN0LnB5CmluZGV4IGRkOWZiZWNjM2YxOTFiMzhmYmFiYTM4ZTYzMWQ4MzIxM2Rl
MDhlZjkuLjJjMjdjNWVlZTAyZTk4YzE2NWE0MTMwYTlkMzc3YjJkMjYwNDdmNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVzdC5weQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHkK
QEAgLTMyMyw4ICszMjMsOCBAQCBfZXhwZWN0ZWRfaGVhZGVyID0gIiIiLyoKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKKyAgICBjbGFzcyBNZXNzYWdlRW5jb2RlcjsK
ICAgICBjbGFzcyBEdW1teVR5cGU7CiAgICAgY2xhc3MgTWFjaFBvcnQ7CiB9CkBAIC00NjcsMTQg
KzQ2NywxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2lucyA6IENvcmVJUEM6OkFyZ3VtZW50czE8Ym9vbD4g
ewogc3RydWN0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogQ29yZUlQQzo6QXJndW1lbnRz
MTxjb25zdCBXVEY6OlN0cmluZyY+IHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNzYWdlSUQg
PSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOwogICAgIHN0cnVjdCBEZWxheWVkUmVwbHkg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVsYXllZFJlcGx5PiB7Ci0gICAgICAgIERl
bGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4pOworICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rl
cj4pOwogICAgICAgICB+RGVsYXllZFJlcGx5KCk7CiAKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0
IENvcmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwotICAgICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtX2FyZ3VtZW50czsK
KyAgICAgICAgT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBtX2VuY29kZXI7CiAgICAg
fTsKIAogICAgIHR5cGVkZWYgQ29yZUlQQzo6QXJndW1lbnRzMTxDb3JlSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmPiBSZXBseTsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHN0cnVjdCBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpTdHJpbmcm
PiB7CiBzdHJ1Y3QgVGVzdE11bHRpcGxlQXR0cmlidXRlcyA6IENvcmVJUEM6OkFyZ3VtZW50czAg
ewogICAgIHN0YXRpYyBjb25zdCBLaW5kIG1lc3NhZ2VJRCA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXNJRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3Jl
SVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+KTsK
KyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4sIFBh
c3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5ZWRSZXBs
eSgpOwogCiAgICAgICAgIGJvb2wgc2VuZCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0cjxDb3Jl
SVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBlZGVmIENv
cmVJUEM6OkFyZ3VtZW50czAgUmVwbHk7CkBAIC02NDAsOSArNjQwLDkgQEAgbmFtZXNwYWNlIE1l
c3NhZ2VzIHsKIAogbmFtZXNwYWNlIFdlYlBhZ2UgewogCi1HZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBDOjpDb25u
ZWN0aW9uPiBjb25uZWN0aW9uLCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4g
YXJndW1lbnRzKQorR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVs
YXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFz
c093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBt
X2VuY29kZXIoYXJndW1lbnRzKQogewogfQogCkBAIC02NTMsMTYgKzY1MywxNiBAQCBHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9v
bCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNvbnN0IENv
cmVJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAgICBBU1NF
UlQobV9hcmd1bWVudHMpOwotICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoY29ubmVjdGlvbkhhbmRs
ZSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9hcmd1
bWVudHMucmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBtX2VuY29kZXIt
PmVuY29kZShjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fY29ubmVjdGlv
bi0+c2VuZFN5bmNSZXBseShzdGF0aWNfcG9pbnRlcl9jYXN0PENvcmVJUEM6Ok1lc3NhZ2VFbmNv
ZGVyPihtX2FyZ3VtZW50cy5yZWxlYXNlKCkpKTsKICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRy
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5
ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29u
bmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykK
K1Rlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NS
ZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3JlSVBD
OjpNZXNzYWdlRW5jb2Rlcj4gYXJndW1lbnRzKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCi0gICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgLCBtX2VuY29kZXIoYXJndW1l
bnRzKQogewogfQogCkBAIC02NzMsOCArNjczLDggQEAgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6
RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIAogYm9vbCBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewotICAgIEFTU0VSVChtX2FyZ3VtZW50cyk7Ci0g
ICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9hcmd1bWVudHMu
cmVsZWFzZSgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVyKTsKKyAgICBib29sIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzdGF0aWNfcG9pbnRlcl9jYXN0PENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPihtX2FyZ3VtZW50cy5yZWxlYXNlKCkpKTsKICAgICBtX2Nvbm5lY3Rpb24g
PSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTUsNyArNzU1LDcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+
JiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlSUQuZ2V0PE1lc3Nh
Z2VzOjpXZWJQYWdlOjpLaW5kPigpKSB7CiAgICAgY2FzZSBNZXNzYWdlczo6V2ViUGFnZTo6Q3Jl
YXRlUGx1Z2luSUQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDk0MTMxOGRiMjRjY2EzNjhjYzExN2FlMmJmMWNjYTQ2NzZjMTQ0YS4uOTc0M2E3OGM3NzA4NDQ0
OTM3YjZmOWFlMWYxNjhlN2UyNmZiZTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25u
ZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkNvbm5lY3Rpb246OnBvc3RNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9iamVjdCogbWVzc2FnZUJvZAogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8Q29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
cjo6Y3JlYXRlKDApOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1lc3Nh
Z2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsKICAgICBtZXNzYWdl
RGF0YS0+ZW5jb2RlKG1lc3NhZ2VOYW1lKTsKICAgICBlbmNvZGVNZXNzYWdlQm9keShtZXNzYWdl
RGF0YS5nZXQoKSwgbWVzc2FnZUJvZHkpOwogCkBAIC02MiwxNCArNjIsMTQgQEAgdm9pZCBXZWJD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmpl
Y3QqIG1lc3NhZ2VCb2QKIAogdm9pZCBXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKGNvbnN0
IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2VEYXRhKQogewotICAgIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlRGVjb2RlcihtZXNzYWdlRGF0YS5kYXRhKCksIG1lc3NhZ2VE
YXRhLnNpemUoKSk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcj4gZGVjb2Rl
ciA9IENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRhLmRhdGEoKSwg
bWVzc2FnZURhdGEuc2l6ZSgpKTsKIAogICAgIFN0cmluZyBtZXNzYWdlTmFtZTsKLSAgICBpZiAo
IW1lc3NhZ2VEZWNvZGVyLmRlY29kZShtZXNzYWdlTmFtZSkpCisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUobWVzc2FnZU5hbWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJT2Jq
ZWN0PiBtZXNzYWdlQm9keTsKLSAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5KCZtZXNzYWdlRGVj
b2RlciwgbWVzc2FnZUJvZHkpKQorICAgIGlmICghZGVjb2RlTWVzc2FnZUJvZHkoZGVjb2Rlci5n
ZXQoKSwgbWVzc2FnZUJvZHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlTWVzc2FnZSh0aGlzLCBtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKaW5kZXggM2FiZDE0ZDQ2YWI5ZjVkYTMxNjQ1
YzkyNWU1ZTc1NWUzMmVlMmQ5MS4uYjE0ZDFmMzQ3YzUwMGU5ODgyOTQ5OTllOTViOGU3ZDM1ZDBk
NzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCkBAIC0zNSw2ICszNSw4
IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiAgICAg
Y2xhc3MgQ29ubmVjdGlvbjsKICAgICBjbGFzcyBEYXRhUmVmZXJlbmNlOworICAgIGNsYXNzIE1l
c3NhZ2VEZWNvZGVyOworICAgIGNsYXNzIE1lc3NhZ2VFbmNvZGVyOwogICAgIGNsYXNzIE1lc3Nh
Z2VJRDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNGYzOTMwNzUzY2FmYzE4YzAwMDdhZDdjYTFiZjQ4
OGVlNjE0YjkzNi4uYmZhN2QzYmM2ODU2ODI2NWM2ZTAwYzQ2Mzg2ODM5MmJlODBlMWM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9U
YXJnZXQucHJpCkBAIC0yNSw2ICsyNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIFBsYXRmb3JtL0Nv
cmVJUEMvQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0RhdGFS
ZWZlcmVuY2UuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmggXAorICAg
IFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisgICAgUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRW5jb2Rlci5oIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oIFwK
ICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlci5oIFwKICAgICBQbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIFwKQEAgLTM4NCw2ICszODYsOCBAQCBTT1VSQ0VT
ICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwIFwKICAgICBQbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0RhdGFSZWZl
cmVuY2UuY3BwIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcCBcCisg
ICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAogICAgIFBsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBcCiAgICAgUGxhdGZvcm0vTG9nZ2luZy5jcHAg
XAogICAgIFBsYXRmb3JtL01vZHVsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCmluZGV4IGQzZGFiNmM3NDA1ODVlNTNiOTBlZjJiODQzZGM4MWZkNzAxOTNjN2Yu
LmUyMTVlODJjYTdhNDVhODE4ZTBjMjIwMmE4MmNkZDc1YmIxYmQxNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM5OCw3ICszOTgsNyBAQCBQYXNzUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9z
dGVkVG9FbXB0eUNvbnRleHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHBhaXI8U3RyaW5n
LCBSZWZQdHI8QVBJT2JqZWN0PiA+JiBtZXNzYWdlID0gbV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5k
bGVQb3N0ZWRUb0VtcHR5Q29udGV4dFtpXTsKIAotICAgICAgICAgICAgT3duUHRyPENvcmVJUEM6
OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6
OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+
IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKTsKIAogICAg
ICAgICAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlLmZpcnN0KTsKICAgICAgICAgICAg
IG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdl
LnNlY29uZC5nZXQoKSkpOwpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSU9i
amVjCiAKICAgICAvLyBGSVhNRTogUmV0dXJuIGVhcmx5IGlmIHRoZSBtZXNzYWdlIGJvZHkgY29u
dGFpbnMgYW55IHJlZmVyZW5jZXMgdG8gV0tQYWdlUmVmcy9XS0ZyYW1lUmVmcyBldGMuIHNpbmNl
IHRoZXkncmUgbG9jYWwgdG8gYSBwcm9jZXNzLgogCi0gICAgT3duUHRyPENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0
ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9
IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVzc2FnZURhdGEtPmVu
Y29kZShtZXNzYWdlTmFtZSk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShXZWJDb250ZXh0VXNl
ck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTZiZTI4ZjA5NTUwMDJmNjUwNmI5Y2Y1MmI5
NDg5NjI3YTc0OGQ5NC4uM2RhZWRiMTM3NDJlNGQ0MzQyYjQwMjcyODI5M2ZkZWVlNmExM2JkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE0
NiwxMiArMTQ2LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNjb25uZWN0KCkKICAgICBt
X2NvbnRleHQtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cywgdW5zaWduZWQgbWVzc2FnZVNl
bmRGbGFncykKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNz
YWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNv
ZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewogICAgIC8vIElmIHdlJ3JlIHdhaXRp
bmcgZm9yIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2ggYXdheSB0
aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUKICAgICAvLyBhIENv
cmVJUEMgY29ubmVjdGlvbi4KICAgICBpZiAoaXNMYXVuY2hpbmcoKSkgewotICAgICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZV9wYWlyKENvcmVJUEM6OkNvbm5lY3Rpb246Ok91dGdv
aW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKKyAg
ICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3JlSVBDOjpDb25uZWN0
aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFn
cykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBi
b29sIFdlYlByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3Nh
Z2VJRCwgUGFzc093blB0cjxDb3JlSQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShtZXNz
YWdlSUQsIGFyZ3VtZW50cywgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJuIGNvbm5lY3Rp
b24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBlbmNvZGVyLCBtZXNzYWdlU2VuZEZsYWdzKTsK
IH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzTGF1bmNoaW5nKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1NzQ4NmM3ZGFhNmI0ZDFk
YTQ3ZjY5NDk2ZmNiYzUyYWZlMzhkMTI3Li43NTI0ZGYyZmY0NjAwZjhlYjVmNjg2YzBkMWU4NDk3
ZDI1MTBlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXaWxsIHBvdGVudGlhbGx5IGNh
dXNlIHRoZSBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHRvIGJlIGZyZWVkLgogICAgIHZvaWQgZGlz
Y29ubmVjdCgpOwogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQsIFBh
c3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRG
bGFncyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNzYWdlSUQsIFBhc3NPd25Q
dHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+LCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKTsK
IAogICAgIC8vIENvcmVJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGFkZEJhY2tGb3J3
YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlJiBiYWNrRm9yd2FyZERhdGEpOwpAQCAtMjE2LDE5ICsyMTYsMTkg
QEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lIFQ+CiBib29sIFdlYlBy
b2Nlc3NQcm94eTo6ZGVwcmVjYXRlZFNlbmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50cykKIHsKLSAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNy
ZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShhcmd1bWVu
dHMpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9IENvcmVJ
UEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShDb3Jl
SVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgMCk7
CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRChtZXNzYWdlSUQpLCBl
bmNvZGVyLnJlbGVhc2UoKSwgMCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBib29sIFdl
YlByb2Nlc3NQcm94eTo6c2VuZChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIE93blB0cjxDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
cjo6Y3JlYXRlKGRlc3RpbmF0aW9uSUQpOwotICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UpOworICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9IENv
cmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29y
ZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCks
IG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShDb3JlSVBDOjpNZXNz
YWdlSUQoVDo6bWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIG1lc3NhZ2VTZW5kRmxhZ3Mp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMmRhZTM1NTZlMjZlMTA0NWI0NGM2
ZjEzZTY4YmNlZjBiMWQxODgwLi5mMmQzYjRkNzc4MzQ0ODNlMGFhMGZhOWQxNDkxNTY0ZDkwZDUy
MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04MSw2ICs4MSwxMCBAQAogCQkxQTIxNjFCMTExRjM3NjY0MDA4QUQwRjUgLyog
TlBSdW50aW1lT2JqZWN0TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBMjE2MUFGMTFGMzc2NjQwMDhBRDBGNSAvKiBOUFJ1bnRpbWVPYmplY3RN
YXAuY3BwICovOyB9OwogCQkxQTIxNjJCMDExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBMjE2MkFFMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVVdGlsaXRpZXMuY3BwICovOyB9
OwogCQkxQTIxNjJCMTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIxNjJBRjExRjM4
OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi87IH07CisJCTFBMjMyOEZFMTYy
Qzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGQzE2MkM4NjZBMDBEODJGN0EgLyogTWVz
c2FnZUVuY29kZXIuY3BwICovOyB9OworCQkxQTIzMjhGRjE2MkM4NjZBMDBEODJGN0EgLyogTWVz
c2FnZUVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oICovOyB9Owor
CQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5MDAxNjJDODY3MzAw
RDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI5MDMxNjJDODY3MzAw
RDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjkwMTE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29k
ZXIuaCAqLzsgfTsKIAkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1
RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovOyB9OwogCQkxQTI0QjVG
MzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyNEI1RjExMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMUEyNEJFRDUxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJl
ZE1lbW9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1lbW9yeS5oICovOyB9OwpAQCAtMTIw
Nyw2ICsxMjExLDEwIEBACiAJCTFBMjE2MkFGMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1bnRpbWVV
dGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlBSdW50aW1lVXRp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJGMEZGMTI4OUZDRDkw
MDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVQYWdlT3Zlcmxh
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBMjMyOEZDMTYyQzg2NkEwMEQ4
MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFBMjMyOEZEMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZURlY29kZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjkwMTE2MkM4NjczMDBEODJG
N0EgLyogTWVzc2FnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVzc2FnZURlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEI1RjAx
MUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWFjaFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNEJFRDMxMjA4OTREMTAwRkJCMDU5IC8qIFNoYXJlZE1l
bW9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRNZW1vcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTgsOCArMjcyNiw2IEBACiAJCQkJQzAz
MzdERDAxMjdBMjk4MDAwOEZGNEY0IC8qIFdlYldoZWVsRXZlbnQuY3BwICovLAogCQkJCUUxRURG
REFEMTYyODg5M0IwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggKi8sCiAJCQkJRTFFREZEQUYxNjI4ODk4MTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAotCQkJCTI5MTIxNzA1MTYxQ0U3MzYwMDU3
RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5jcHAgKi8sCi0JCQkJMjkxMjE3MDYxNjFDRTcz
NjAwNTdENDUxIC8qIFVzZXJDb250ZW50Q29udGFpbmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzgyLDYgKzI3ODgsMTAg
QEAKIAkJCQkxQThFRkRGRDEyNTNDQjZFMDBGNzA2N0YgLyogRGF0YVJlZmVyZW5jZS5jcHAgKi8s
CiAJCQkJMUE4RUZERjkxMjUzQ0FBMjAwRjcwNjdGIC8qIERhdGFSZWZlcmVuY2UuaCAqLywKIAkJ
CQlDMENFNzJBQzEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5oICovLAorCQkJCTFB
MjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgKi8sCisJCQkJMUEy
MzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8sCisJCQkJMUEyMzI4
RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLywKKwkJCQkxQTIzMjhG
RDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLywKIAkJCQlCQzAzMkRBNDEw
RjQzN0QxMDA1OEMxNUEgLyogTWVzc2FnZUlELmggKi8sCiAJCQkJMUEzRUVEMTExNjFBNTNENjAw
QUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBDMTYxQTUzNTMwMEFF
QjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLApAQCAtNDY3OSw2ICs0Njg5LDggQEAK
IAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFREZFMTMxNjI4Q0ZCRDAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTUwMTcyNDE2MkE0NTA0
MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1l
c3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTIzMjkwMzE2MkM4NjczMDBEODJG
N0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTYyMiw2ICs1NjM0LDgg
QEAKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFREZFMTIxNjI4Q0ZCMjAwMzlFQ0RB
IC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
RURGRTE1MTYyOEREN0EwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUEyMzI4RkUxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOTAyMTYyQzg2NzMwMEQ4MkY3QSAvKiBN
ZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCmluZGV4IDc2MzMwNWNiZWI5
Mzk0ODcyNTNmODZlZmJlYTkzZGU1NjBlYzI4OGIuLjYzNDE3NzIwY2MxNDE1YjFmY2JmZjRlNzll
MWFkNTEzYjI4MThiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcApAQCAtMzMsMTQgKzMzLDE5IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogRGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2RlY29kZXIoYnVmZmVyLCBidWZm
ZXJTaXplKQorICAgIDogbV9kZWNvZGVyKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcjo6Y3JlYXRl
KGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiB7CisgICAgLy8gS2VlcCBmb3JtYXQgY29tcGF0aWJpbGl0
eSBieSBkZWNvZGluZyBhbiB1bnVzZWQgdWludDY0X3QgdmFsdWUKKyAgICAvLyB0aGF0IHVzZWQg
dG8gYmUgZW5jb2RlZCBieSB0aGUgYXJndW1lbnQgZW5jb2Rlci4KKyAgICB1aW50NjRfdCB2YWx1
ZTsKKyAgICBtX2RlY29kZXItPmRlY29kZSh2YWx1ZSk7CisgICAgQVNTRVJUKCF2YWx1ZSk7CiB9
CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0
ZXMpCiB7CiAgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
ICghbV9kZWNvZGVyLmRlY29kZVZhcmlhYmxlTGVuZ3RoQnl0ZUFycmF5KGRhdGFSZWZlcmVuY2Up
KQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRh
UmVmZXJlbmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYnl0ZXMgPSBkYXRhUmVm
ZXJlbmNlLnZlY3RvcigpOwpAQCAtNDksNDIgKzU0LDQyIEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6
OmRlY29kZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYgYnl0ZXMpCiAKIGJvb2wgRGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2woYm9vbCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNv
ZGVCb29sKHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVCb29sKHZhbHVlKTsK
IH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDE2KHVpbnQxNl90JiB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQxNih2YWx1ZSk7CisgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZGVjb2RlVUludDE2KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRl
cjo6ZGVjb2RlVUludDMyKHVpbnQzMl90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVy
LmRlY29kZVVJbnQzMih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDMy
KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDY0KHVpbnQ2NF90
JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2NCh2YWx1ZSk7Cisg
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlVUludDY0KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNv
ZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIoaW50MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1f
ZGVjb2Rlci5kZWNvZGVJbnQzMih2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
SW50MzIodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVJbnQ2NChpbnQ2
NF90JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUludDY0KHZhbHVlKTsK
KyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVJbnQ2NCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVj
b2RlckFkYXB0ZXI6OmRlY29kZUZsb2F0KGZsb2F0JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9k
ZWNvZGVyLmRlY29kZUZsb2F0KHZhbHVlKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVG
bG9hdCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZURvdWJsZShkb3Vi
bGUmIHZhbHVlKQogewotICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlRG91YmxlKHZhbHVlKTsK
KyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpOwogfQogCiBib29sIERl
Y29kZXJBZGFwdGVyOjpkZWNvZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKQEAgLTk2LDcgKzEwMSw3
IEBAIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcmIHZhbHVlKQogICAg
IC8vIHdpdGhvdXQgYnJlYWtpbmcgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgdGhlIGhpc3RvcnkgdHJl
ZS4KIAogICAgIHVpbnQzMl90IGxlbmd0aDsKLSAgICBpZiAoIW1fZGVjb2Rlci5kZWNvZGUobGVu
Z3RoKSkKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2RlKGxlbmd0aCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpKSB7CkBAIC0xMDYsMjIgKzExMSwyMiBAQCBib29sIERlY29kZXJBZGFwdGVyOjpk
ZWNvZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKICAgICB9CiAKICAgICB1aW50NjRfdCBsZW5ndGhJ
bkJ5dGVzOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZShsZW5ndGhJbkJ5dGVzKSkKKyAgICBp
ZiAoIW1fZGVjb2Rlci0+ZGVjb2RlKGxlbmd0aEluQnl0ZXMpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAobGVuZ3RoSW5CeXRlcyAlIHNpemVvZihVQ2hhcikgfHwgbGVuZ3RoSW5C
eXRlcyAvIHNpemVvZihVQ2hhcikgIT0gbGVuZ3RoKSB7Ci0gICAgICAgIG1fZGVjb2Rlci5tYXJr
SW52YWxpZCgpOworICAgICAgICBtX2RlY29kZXItPm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZGVjb2Rlci5idWZmZXJJc0xhcmdlRW5v
dWdoVG9Db250YWluPFVDaGFyPihsZW5ndGgpKSB7Ci0gICAgICAgIG1fZGVjb2Rlci5tYXJrSW52
YWxpZCgpOworICAgIGlmICghbV9kZWNvZGVyLT5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWlu
PFVDaGFyPihsZW5ndGgpKSB7CisgICAgICAgIG1fZGVjb2Rlci0+bWFya0ludmFsaWQoKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXI7CiAgICAgU3Ry
aW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7
Ci0gICAgaWYgKCFtX2RlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIF9fYWxpZ25vZihV
Q2hhcikpKQorICAgIGlmICghbV9kZWNvZGVyLT5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgX19h
bGlnbm9mKFVDaGFyKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gc3Ry
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29k
ZXJBZGFwdGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFk
YXB0ZXIuaAppbmRleCBkNmI0ZWI3NjZhZjE2YTE4MjljZjk1NmZkOTc0NjVlOGM5ZGM0YTVkLi42
NzFlMTg5NmY1MDk1MmU4ZmM2OTY1ZDJkMDQ4YjZiM2Y2OTNhOTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaApAQCAtNDgsNyAr
NDgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVEb3VibGUoZG91YmxlJik7
CiAgICAgdmlydHVhbCBib29sIGRlY29kZVN0cmluZyhTdHJpbmcmKTsKIAotICAgIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciBtX2RlY29kZXI7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50
RGVjb2Rlcj4gbV9kZWNvZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcApp
bmRleCBiZGE3ZDliNzJmMmZkMDEyMzlhN2UzMmVkNmY0ODRhOTE4NTM1MmI5Li41NGY5MzcyZDE5
OTYwZTUyYmNlOTgxYTlhMGNkZTU2NGFjMjM4NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAKQEAgLTMzLDggKzMzLDEx
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRW5jb2RlckFkYXB0ZXI6OkVuY29kZXJBZGFwdGVy
KCkKLSAgICA6IG1fZW5jb2RlcihDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgwKSkK
KyAgICA6IG1fZW5jb2RlcihDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgpKQogewor
ICAgIC8vIEtlZXAgZm9ybWF0IGNvbXBhdGliaWxpdHkgYnkgZGVjb2RpbmcgYW4gdW51c2VkIHVp
bnQ2NF90IHZhbHVlCisgICAgLy8gdGhhdCB1c2VkIHRvIGJlIGVuY29kZWQgYnkgdGhlIGFyZ3Vt
ZW50IGVuY29kZXIuCisgICAgbV9lbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KDApKTsKIH0KIAogQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBFbmNvZGVyQWRhcHRlcjo6ZGF0YVJl
ZmVyZW5jZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCA2ZjY3ZWQwMjI5MTI1ZTczODQ5OGEwZjI2NzJjODg0YmMzNjg4MzY1Li40M2VkMTZiMWEz
OWM5OGQ3NWViZmU1NDE5NjBiZWE0ZWJlZjk5ZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMTEsMTQgKzEwMTEsMTQgQEAgdm9pZCBXZWJQcm9jZXNz
Ojpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2Um
IG1lc3NhZ2UKICAgICBpZiAoIWluamVjdGVkQnVuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbWVzc2FnZURlY29kZXIobWVzc2FnZURhdGEuZGF0
YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXI+IGRlY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZShtZXNzYWdl
RGF0YS5kYXRhKCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CiAKICAgICBTdHJpbmcgbWVzc2FnZU5h
bWU7Ci0gICAgaWYgKCFtZXNzYWdlRGVjb2Rlci5kZWNvZGUobWVzc2FnZU5hbWUpKQorICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEFQSU9iamVjdD4gbWVzc2FnZUJvZHk7Ci0gICAgaWYgKCFtZXNzYWdlRGVjb2Rlci5k
ZWNvZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVzc2FnZUJvZHkpKSkKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2Rlciht
ZXNzYWdlQm9keSkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbmplY3RlZEJ1bmRsZS0+ZGlk
UmVjZWl2ZU1lc3NhZ2UobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvagppbmRleCBlYmNkNmNjMzVmNzBmZmZmNmVkMDhiZTMxOWExMzE0Yzdk
NjJiMDVkLi4wNmEzZmRkMGJjODMzMGFjYzZlMzczZDYxNWViYzAzYTEzMjIyMjFlIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIudmNwcm9qCkBAIC00MDk0LDYgKzQwOTQsMjIgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJ
UENcTWVzc2FnZURlY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRGVjb2Rlci5oIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxh
dGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5jb2Rlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBDXE1lc3NhZ2VF
bmNvZGVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBDXE1lc3NhZ2VJRC5oIgogCQkJCQk+CiAJCQkJPC9GaWxl
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169208</attachid>
            <date>2012-10-17 10:28:10 -0700</date>
            <delta_ts>2012-10-17 14:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121017102657.patch</filename>
            <type>text/plain</type>
            <size>85296</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLjczMTNiN2ZiYjJmODBkMzkwNDcxZWJkNGZhNTQzYmFmNmFhY2Fl
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCwxNSArMjgsMTYgQEAKICNpZm5kZWYgQ29ubmVjdGlvbl9oCiAjZGVmaW5lIENvbm5lY3Rp
b25faAogCi0jaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCi0jaW5jbHVkZSAiQXJndW1lbnRF
bmNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29k
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KQEAg
LTE5MCw5ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBz
ZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHks
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1lb3V0LCB1bnNp
Z25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3Vi
bGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlU3lu
Y01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlELCBQYXNzT3du
UHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKLSAg
ICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+KTsKKyAgICBQ
YXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoY29uc3Qg
Q1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBi
b29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIHVu
c2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFz
c093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHZhcmlhbnRz
IG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRlZC4KICAgICAv
LyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQgdGFrZSBhIG1l
c3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIH07CiAKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2luZ01lc3NhZ2U7
CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01lc3NhZ2U7CiAK
IHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGll
bnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwxNCArMjUyLDE0
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvck1l
c3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7
CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlE
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAgCi0gICAgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQsIHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwgZG91YmxlIHRp
bWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3duUHRyPEFyZ3Vt
ZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3Vi
bGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25l
ZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2Fp
dEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCwgdW5z
aWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24g
d29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3lu
Y1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAg
IHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+
KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVudCopOwog
ICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVudCopOwpAQCAt
MjY2LDE3ICsyNjcsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRnb2luZ01lc3Nh
Z2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJvb2wgc2VuZE91
dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPik7Cisg
ICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdl
RW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAgCi0gICAgdHlw
ZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOworICAgIHR5cGVk
ZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAgICAgLy8gQ2Fs
bGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENvbm5lY3Rpb25E
aWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uo
TWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNoU3luY01lc3Nh
Z2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNz
YWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRT
eW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAt
MzEyLDcgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fd2Fp
dEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2FnZU11dGV4Owot
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3VtZW50RGVjb2Rl
cio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQs
IHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFwOwogCiAgICAg
Ly8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2FpdGluZyBvbiBh
IHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3ICszMjIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxsIGJlIG51bGwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAgICAgLy8gbWVz
c2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVyKiByZXBseURl
Y29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAKICAgICAgICAg
Ly8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVjZWl2ZWQgb3Ig
YW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5OwpAQCAtMzQw
LDkgKzM0MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFBh
c3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkKKyAgICAgICAg
UGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2RlcigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0gYWRvcHRQdHIo
cmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHkg
PSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNvZGVyID0gMDsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2UoKTsKQEAgLTM4
OCw3ICszODksNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVhZEJ1ZmZl
cjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1bWVudEVuY29k
ZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
bV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0YXRlOwogICAg
IEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CkBAIC00MDksMjIgKzQxMCwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5h
dGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKCIiLCAi
IiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UpOwogICAgIAot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgYXJndW1lbnRF
bmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNl
bmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRG
bGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBPd25QdHI8QXJn
dW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50
RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIsICIiLCBkZXN0
aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUgdGhlIHJlc3Qg
b2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNz
YWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBOb3cgc2VuZCB0
aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJ
RCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRpbWVvdXQsIHN5
bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0g
c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVxdWVzdElELCBl
bmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAgaWYgKCFyZXBs
eURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQzNSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVz
c2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0
aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBkZWNvZGVy
ID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3RpbmF0aW9uSUQs
IHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JN
ZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsK
ICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDQ5LDEzICs0
NTAsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGlu
bGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3NhZ2VJRCwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBVJiByZXBseSwg
ZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAg
T3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRlU3luY01lc3Nh
Z2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgT3du
UHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKCIi
LCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShhcmd1bWVudHMp
OworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8vIE5vdyBzZW5k
IHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxBcmd1bWVudERl
Y29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQobWVzc2FnZUlE
KSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCk7Cisg
ICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uo
TWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVsZWFzZSgpLCB0
aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIApAQCAtNDY2LDEwICs0NjcsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlvbjo6ZGVwcmVj
YXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELAogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNl
bmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50
cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXIt
PmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9
IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdl
SUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHNl
bmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhZWYzNTI1YTY1YWViMDIy
ZDA5ZTk3MGI0MTRmY2NlYjEyZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIu
aCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMg
eworCitQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNv
bnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlcikKK3sKKyAgICBEZXF1ZTxBdHRhY2htZW50PiBhdHRh
Y2htZW50czsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VEZWNvZGVyKGJ1ZmZlciwg
YXR0YWNobWVudHMpKTsKK30KKworUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gTWVzc2FnZURl
Y29kZXI6OmNyZWF0ZShjb25zdCBEYXRhUmVmZXJlbmNlJiBidWZmZXIsIERlcXVlPEF0dGFjaG1l
bnQ+JiBhdHRhY2htZW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VEZWNv
ZGVyKGJ1ZmZlciwgYXR0YWNobWVudHMpKTsKK30KKworTWVzc2FnZURlY29kZXI6On5NZXNzYWdl
RGVjb2RlcigpCit7Cit9CisKK01lc3NhZ2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcihjb25zdCBE
YXRhUmVmZXJlbmNlJiBidWZmZXIsIERlcXVlPEF0dGFjaG1lbnQ+JiBhdHRhY2htZW50cykKKyAg
ICA6IEFyZ3VtZW50RGVjb2RlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBhdHRhY2ht
ZW50cykKK3sKKyAgICBDU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWU7CisgICAgaWYgKCFkZWNv
ZGUobWVzc2FnZVJlY2VpdmVyTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIENTdHJpbmcg
bWVzc2FnZU5hbWU7CisgICAgaWYgKCFkZWNvZGUobWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1
cm47CisKKyAgICBkZWNvZGVVSW50NjQobV9kZXN0aW5hdGlvbklEKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0OGM5YjRiOWMyZWY1ZjFmZDlmYzdiNzJjOTQxY2Yz
NjI2ZmFlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWVzc2FnZURlY29kZXJfaAorI2RlZmluZSBNZXNzYWdlRGVjb2Rlcl9oCisKKyNpbmNsdWRl
ICJBcmd1bWVudERlY29kZXIuaCIKKworbmFtZXNwYWNlIENvcmVJUEMgeworCitjbGFzcyBEYXRh
UmVmZXJlbmNlOworCitjbGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29k
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVh
dGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxN
ZXNzYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8
QXR0YWNobWVudD4mKTsKKyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRl
OgorICAgIE1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8
QXR0YWNobWVudD4mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8v
IE1lc3NhZ2VEZWNvZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4NThiNmViODA2NjY0OWVkMTRhYzgw
MGMxM2Y0MWFiNzM4MjhiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKwor
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworUGFz
c093blB0cjxNZXNzYWdlRW5jb2Rlcj4gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShjb25zdCBDU3Ry
aW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VF
bmNvZGVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKSk7
Cit9CisKK01lc3NhZ2VFbmNvZGVyOjpNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBlbmNvZGUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgZW5j
b2RlKG1lc3NhZ2VOYW1lKTsKKyAgICBlbmNvZGUoZGVzdGluYXRpb25JRCk7Cit9CisKK01lc3Nh
Z2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBDb3Jl
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmE4Nzg1MGI5OWJjM2FjNTY1NDAwM2ViNzVkMGFmZTc3ZTYzNTlhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUVuY29kZXIuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdl
RW5jb2Rlcl9oCisjZGVmaW5lIE1lc3NhZ2VFbmNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50
RW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBDb3JlSVBD
IHsKKworY2xhc3MgTWVzc2FnZUVuY29kZXIgOiBwdWJsaWMgQXJndW1lbnRFbmNvZGVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlKGNvbnN0
IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2aXJ0dWFsIH5NZXNzYWdlRW5jb2Rlcigp
OworCitwcml2YXRlOgorICAgIE1lc3NhZ2VFbmNvZGVyKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworCisjZW5kaWYgLy8gTWVz
c2FnZUVuY29kZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VTZW5kZXIuaAppbmRleCBlMmJhMGI1NmY1YTUxM2QxMDFkZGI5MTdlYmQ2ODUwZDM5M2YyNDhm
Li43NDM4MTA1MGM3ZGQ3ZDU2YWYxYTRlMTJjMjA0ZWM5ZjYzYjM0ODZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDAsMTggKzQw
LDE4IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25z
dCBVJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogICAgIHsKLSAgICAgICAgT3du
UHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpj
cmVhdGUoZGVzdGluYXRpb25JRCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UpOworICAgICAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdl
RW5jb2Rlcjo6Y3JlYXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGVuY29kZXIt
PmVuY29kZShtZXNzYWdlKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
Kj4odGhpcyktPnNlbmRNZXNzYWdlKE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBhcmd1bWVudEVu
Y29kZXIucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPih0aGlzKS0+
c2VuZE1lc3NhZ2UoTWVzc2FnZUlEKFU6Om1lc3NhZ2VJRCksIGVuY29kZXIucmVsZWFzZSgpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZW5kTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyKQorICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlcikKICAgICB7CiAgICAgICAgIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBzdGF0aWNf
Y2FzdDxUKj4odGhpcyktPmNvbm5lY3Rpb24oKTsKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24p
OwogCi0gICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZShtZXNzYWdlSUQsIGFy
Z3VtZW50RW5jb2Rlcik7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZSht
ZXNzYWdlSUQsIGVuY29kZXIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFN5bmMoY29uc3QgVSYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmIHJl
cGx5LCBkb3VibGUgdGltZW91dCA9IENvbm5lY3Rpb246Ok5vVGltZW91dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5k
ZXggNzI5ODlkZGEwMWFhMzFlMTlhNDQ2NjZjZWM4OGVhYzFmZTVlNzRhNS4uYzEzYjIzYmE1Yjkx
NTE0OTAzYmY3ZTdmNDIyMjA2YzZjNzRkYzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJDb3JlSVBDTWVzc2FnZUtp
bmRzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1hY2hQb3J0Lmgi
CiAjaW5jbHVkZSAiTWFjaFV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5o
PgpAQCAtMTExLDEwICsxMTIsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAg
bV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0
aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZl
ciB0byB1c2UuCi0gICAgICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2Rl
ciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOwotICAgICAgICBhcmd1bWVudEVuY29kZXIt
PmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OworICAgICAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rl
cjo6Y3JlYXRlKCIiLCAiIiwgMCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydCht
X3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCi0gICAgICAgIHNlbmRN
ZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pLCBh
cmd1bWVudEVuY29kZXIucmVsZWFzZSgpKTsKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGVuY29kZXIucmVsZWFzZSgp
KTsKIAogICAgICAgICAvLyBTZXQgdGhlIGRlYWQgbmFtZSBoYW5kbGVyIGZvciBvdXIgc2VuZCBw
b3J0LgogICAgICAgICBpbml0aWFsaXplRGVhZE5hbWVTb3VyY2UoKTsKQEAgLTEzMCwxMCArMTMx
LDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgaWYgKG1fZXhjZXB0aW9uUG9ydCkg
ewogICAgICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3Rlck1hY2hQb3J0RXZlbnRIYW5kbGVy
KG1fZXhjZXB0aW9uUG9ydCwgV29ya1F1ZXVlOjpNYWNoUG9ydERhdGFBdmFpbGFibGUsIGJpbmQo
JkNvbm5lY3Rpb246OmV4Y2VwdGlvblNvdXJjZUV2ZW50SGFuZGxlciwgdGhpcykpOwogCi0gICAg
ICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5j
b2Rlcjo6Y3JlYXRlKDApOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShNYWNoUG9y
dChtX2V4Y2VwdGlvblBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93
blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIs
ICIiLCAwKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAotICAgICAgICBzZW5kTWVzc2FnZShNZXNz
YWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBhcmd1bWVudEVuY29kZXIu
cmVsZWFzZSgpKTsKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNzYWdl
OjpTZXRFeGNlcHRpb25Qb3J0KSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTU3LDkgKzE1OCw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1D
YW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRzKQorYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIpCiB7Ci0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRz
ID0gYXJndW1lbnRzLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVu
dD4gYXR0YWNobWVudHMgPSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICAKICAg
ICBzaXplX3QgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMgPSAwOwogICAgIHNpemVfdCBudW1iZXJP
Zk9PTE1lbW9yeURlc2NyaXB0b3JzID0gMDsKQEAgLTE3MSwxNCArMTcyLDE0IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3du
UHRyPEFyZ3VtZW50RW5jCiAgICAgICAgICAgICBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3Jz
Kys7CiAgICAgfQogICAgIAotICAgIHNpemVfdCBtZXNzYWdlU2l6ZSA9IG1hY2hNZXNzYWdlU2l6
ZShhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJl
ck9mT09MTWVtb3J5RGVzY3JpcHRvcnMpOworICAgIHNpemVfdCBtZXNzYWdlU2l6ZSA9IG1hY2hN
ZXNzYWdlU2l6ZShlbmNvZGVyLT5idWZmZXJTaXplKCksIG51bWJlck9mUG9ydERlc2NyaXB0b3Jz
LCBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3JzKTsKICAgICBjaGFyIGJ1ZmZlcltpbmxpbmVN
ZXNzYWdlTWF4U2l6ZV07CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBmYWxzZTsKICAg
ICBpZiAobWVzc2FnZVNpemUgPiBzaXplb2YoYnVmZmVyKSkgewogICAgICAgICBtZXNzYWdlQm9k
eUlzT09MID0gdHJ1ZTsKIAotICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChh
cmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgTUFDSF9NU0dfVklS
VFVBTF9DT1BZLCBmYWxzZSkpOworICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVu
dChlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJU
VUFMX0NPUFksIGZhbHNlKSk7CiAgICAgICAgIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMr
KzsKICAgICAgICAgbWVzc2FnZVNpemUgPSBtYWNoTWVzc2FnZVNpemUoMCwgbnVtYmVyT2ZQb3J0
RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMpOwogICAgIH0KQEAgLTIz
Myw3ICsyMzQsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgLy8gQ29weSB0aGUg
ZGF0YSBpZiBpdCBpcyBub3QgYmVpbmcgc2VudCBvdXQtb2YtbGluZS4KICAgICBpZiAoIW1lc3Nh
Z2VCb2R5SXNPT0wpCi0gICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgYXJndW1lbnRzLT5idWZm
ZXIoKSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOworICAgICAgICBtZW1jcHkobWVzc2FnZURh
dGEsIGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVyLT5idWZmZXJTaXplKCkpOwogCiAgICAgQVNT
RVJUKG1fc2VuZFBvcnQpOwogICAgIApAQCAtMjUxLDE0ICsyNTIsMTQgQEAgdm9pZCBDb25uZWN0
aW9uOjppbml0aWFsaXplRGVhZE5hbWVTb3VyY2UoKQogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJl
Z2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9zZW5kUG9ydCwgV29ya1F1ZXVlOjpNYWNoUG9y
dERlYWROYW1lTm90aWZpY2F0aW9uLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xv
c2UsIHRoaXMpKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVh
dGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKK3N0YXRpYyBQYXNz
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogewogICAgIGlmICghKGhlYWRlci0+bXNnaF9iaXRzICYgTUFDSF9NU0dI
X0JJVFNfQ09NUExFWCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHNpbXBsZSBtZXNzYWdlLgot
ICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNo
X21zZ19oZWFkZXJfdCk7CiAgICAgICAgIHVpbnQ4X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihoZWFkZXIgKyAxKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQXJndW1lbnREZWNvZGVyKGJvZHksIGJvZHlTaXplKSk7CisgICAgICAgIHNpemVfdCBi
b2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsK
KworICAgICAgICByZXR1cm4gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKGJv
ZHksIGJvZHlTaXplKSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVh
ZGVyLT5tc2doX2lkICYgTWVzc2FnZUJvZHlJc09PTDsKQEAgLTMwMywyMiArMzA0LDIyIEBAIHN0
YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gY3JlYXRlQXJndW1lbnREZWNvZGVyKG1h
Y2hfbXNnX2hlYWRlcl90KiBoZWFkCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1lc3NhZ2VCb2R5QXR0YWNobWVudC5hZGRyZXNzKCkpOwogICAg
ICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gbWVzc2FnZUJvZHlBdHRhY2htZW50LnNpemUo
KTsKIAotICAgICAgICBBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50RGVjb2RlcjsKKyAgICAgICAg
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyOwogCiAgICAgICAgIGlmIChhdHRhY2htZW50
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1lbnRE
ZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpOworICAgICAgICAgICAgZGVjb2Rl
ciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVz
c2FnZUJvZHlTaXplKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50RGVjb2Rl
ciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgYXR0
YWNobWVudHMpOworICAgICAgICAgICAgZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUo
RGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplKSwgYXR0YWNobWVudHMp
OwogCiAgICAgICAgIHZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRf
Y2FzdDx2bV9hZGRyZXNzX3Q+KG1lc3NhZ2VCb2R5QXR0YWNobWVudC5hZGRyZXNzKCkpLCBtZXNz
YWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpKTsKIAotICAgICAgICByZXR1cm4gYWRvcHRQdHIoYXJn
dW1lbnREZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZXIucmVsZWFzZSgpOwogICAgIH0K
IAogICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gZGVzY3JpcHRvckRhdGE7CiAgICAgc2l6ZV90
IG1lc3NhZ2VCb2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gKGRlc2NyaXB0b3JEYXRhIC0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyKSk7CiAKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVu
Y2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSksIGF0dGFjaG1lbnRzKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTM2MCw4ICszNjEsOCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBNZXNzYWdlSUQg
bWVzc2FnZUlEID0gTWVzc2FnZUlEOjpmcm9tSW50KGhlYWRlci0+bXNnaF9pZCk7Ci0gICAgT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzID0gY3JlYXRlQXJndW1lbnREZWNvZGVyKGhl
YWRlcik7Ci0gICAgQVNTRVJUKGFyZ3VtZW50cyk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVy
PiBkZWNvZGVyID0gY3JlYXRlTWVzc2FnZURlY29kZXIoaGVhZGVyKTsKKyAgICBBU1NFUlQoZGVj
b2Rlcik7CiAKICAgICBpZiAobWVzc2FnZUlEID09IE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6
SW5pdGlhbGl6ZUNvbm5lY3Rpb24pKSB7CiAgICAgICAgIEFTU0VSVChtX2lzU2VydmVyKTsKQEAg
LTM2OSw3ICszNzAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRs
ZXIoKQogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOwogCiAgICAgICAgIE1hY2hQb3J0IHBv
cnQ7Ci0gICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUocG9ydCkpIHsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocG9ydCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEaXNjb25u
ZWN0LgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zOTAsMTQgKzM5MSwxNCBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogCiAgICAgaWYg
KG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQp
KSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHNldE1hY2hF
eGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMucmVs
ZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZGVjb2Rlci5y
ZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25Tb3VyY2VFdmVu
dEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkxY2FhZjZmY2Nk
ZjkxYjIyYzMxODI0OS4uMmRmNjE2NDFmNzcwOWZhNjdiMjQ3ZWY0NDE3MzcwNDc5YTVmMmNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2lu
Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTI4MiwxMyArMjgy
LDEzIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdl
SW5mby5pc01lc3NhZ2VCb2R5T09MKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBBcmd1bWVu
dERlY29kZXIqIGFyZ3VtZW50RGVjb2RlcjsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRl
Y29kZXI7CiAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSk7CisgICAgICAgIGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFS
ZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpKTsKICAgICBlbHNl
Ci0gICAgICAgIGFyZ3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJv
ZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgZGVjb2Rl
ciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVz
c2FnZUluZm8uYm9keVNpemUoKSksIGF0dGFjaG1lbnRzKTsKIAotICAgIHByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2UobWVzc2FnZUluZm8ubWVzc2FnZUlEKCksIGFkb3B0UHRyKGFyZ3VtZW50RGVjb2Rl
cikpOworICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUluZm8ubWVzc2FnZUlEKCks
IGRlY29kZXIucmVsZWFzZSgpKTsKIAogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplID4gbWVzc2Fn
ZUxlbmd0aCkgewogICAgICAgICBtZW1tb3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1
ZmZlci5kYXRhKCkgKyBtZXNzYWdlTGVuZ3RoLCBtX3JlYWRCdWZmZXJTaXplIC0gbWVzc2FnZUxl
bmd0aCk7CkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNl
bmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9pc0Nvbm5lY3RlZDsKIH0K
IAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudHMpCitib29sIENvbm5lY3Rp
b246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxN
ZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKICNpZiBQTEFURk9STShRVCkKICAgICBBU1NFUlQo
bV9zb2NrZXROb3RpZmllcik7CkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1l
bnRFbmMKIAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRhY2ht
ZW50TWF4QW1vdW50ICogc2l6ZW9mKHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFjaG1l
bnRzRml0VG9NZXNzYWdlSW5saW5lKTsKIAotICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2ht
ZW50cyA9IGFyZ3VtZW50cy0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CisgICAgVmVjdG9yPEF0dGFj
aG1lbnQ+IGF0dGFjaG1lbnRzID0gZW5jb2Rlci0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAg
QXR0YWNobWVudFJlc291cmNlR3VhcmQ8VmVjdG9yPEF0dGFjaG1lbnQ+LCBWZWN0b3I8QXR0YWNo
bWVudD46Oml0ZXJhdG9yPiBhdHRhY2hlbWVudERpc3Bvc2VyKGF0dGFjaG1lbnRzKTsKIAogICAg
IGlmIChhdHRhY2htZW50cy5zaXplKCkgPiAoYXR0YWNobWVudE1heEFtb3VudCAtIDEpKSB7CkBA
IC00NTcsMTAgKzQ1NywxMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTWVzc2FnZUluZm8gbWVzc2FnZUluZm8obWVzc2FnZUlE
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgpKTsKLSAgICBzaXpl
X3QgbWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0
YWNobWVudHMuc2l6ZSgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBhcmd1bWVudHMtPmJ1
ZmZlclNpemUoKTsKLSAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VN
YXhTaXplICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4gb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKTsKKyAgICBNZXNzYWdlSW5mbyBtZXNzYWdl
SW5mbyhtZXNzYWdlSUQsIGVuY29kZXItPmJ1ZmZlclNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgp
KTsKKyAgICBzaXplX3QgbWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdl
SW5mbykgKyAoYXR0YWNobWVudHMuc2l6ZSgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBl
bmNvZGVyLT5idWZmZXJTaXplKCk7CisgICAgaWYgKG1lc3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUg
PiBtZXNzYWdlTWF4U2l6ZSAmJiBlbmNvZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgUmVm
UHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpjcmVhdGUoZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKICAgICAgICAgaWYgKCFvb2xN
ZXNzYWdlQm9keSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAKICAgICAgICAgbWVzc2FnZUluZm8uc2V0TWVz
c2FnZUJvZHlPT0woKTsKIAotICAgICAgICBtZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwg
YXJndW1lbnRzLT5idWZmZXIoKSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOworICAgICAgICBt
ZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXIt
PmJ1ZmZlclNpemUoKSk7CiAKICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKGhhbmRsZS5yZWxl
YXNlVG9BdHRhY2htZW50KCkpOwogICAgIH0KQEAgLTU0MCw5ICs1NDAsOSBAQCBib29sIENvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0
cjxBcmd1bWVudEVuYwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAKLSAgICBpZiAoIW1l
c3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSkg
ewotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGFyZ3VtZW50cy0+YnVmZmVyKCkpOwotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVu
ID0gYXJndW1lbnRzLT5idWZmZXJTaXplKCk7CisgICAgaWYgKCFtZXNzYWdlSW5mby5pc01lc3Nh
Z2VCb2R5T09MKCkgJiYgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKSB7CisgICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5jb2Rlci0+YnVmZmVy
KCkpOworICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gZW5jb2Rlci0+YnVmZmVyU2l6
ZSgpOwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggZjUxYWQw
NzlhYjcwN2Y3YmJhMGUwYTU4OWE0MGFhM2VmZDc0MjE5NS4uYzkxZTdjMzMxNTQzZTM1YTYzNjA4
YmNlN2U0NTE2Y2NmYmM1YWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJBcmd1
bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJCaW5hcnlTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0x
NzIsNyArMTcyLDggQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKIAogICAg
ICAgICAgICAgdW5zaWduZWQgbWVzc2FnZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihtX3JlYWRCdWZmZXIuZGF0YSgpICsgcmVhbEJ1ZmZlclNpemUpOwogCi0gICAgICAgICAgICBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRDo6ZnJvbUludChtZXNzYWdlSUQpLCBhZG9w
dFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1fcmVhZEJ1ZmZlci5kYXRhKCksIHJlYWxCdWZmZXJT
aXplKSkpOworICAgICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gTWVz
c2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIHJl
YWxCdWZmZXJTaXplKSk7CisgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3Nh
Z2VJRDo6ZnJvbUludChtZXNzYWdlSUQpLCBkZWNvZGVyLnJlbGVhc2UoKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgbmV4dCBtZXNzYWdlIGluIHRo
ZSBwaXBlIChpZiB0aGVyZSBpcyBvbmUpIHNvIHRoYXQgd2UgY2FuIHJlYWQKQEAgLTI0Nyw5ICsy
NDgsOSBAQCB2b2lkIENvbm5lY3Rpb246OndyaXRlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgLy8gVGhlIHBlbmRpbmcgd3JpdGUgaGFz
IGZpbmlzaGVkLCBzbyB3ZSBhcmUgbm93IGRvbmUgd2l0aCBpdHMgYXJndW1lbnRzLiBDbGVhcmlu
ZyB0aGlzIG1lbWJlcgorICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28g
d2UgYXJlIG5vdyBkb25lIHdpdGggaXRzIGVuY29kZXIuIENsZWFyaW5nIHRoaXMgbWVtYmVyCiAg
ICAgLy8gd2lsbCBhbGxvdyB1cyB0byBzZW5kIG1lc3NhZ2VzIGFnYWluLgotICAgIG1fcGVuZGlu
Z1dyaXRlQXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICBtX3BlbmRpbmdXcml0ZUVuY29kZXIgPSBu
dWxscHRyOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIHBlbmRpbmcgd3JpdGUgaGFzIGZpbmlzaGVk
LCB3ZSBjYW4gdHJ5IHRvIHNlbmQgYSBuZXcgbWVzc2FnZS4KICAgICBzZW5kT3V0Z29pbmdNZXNz
YWdlcygpOwpAQCAtMjc0LDI0ICsyNzUsMjQgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNh
blNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKIHsKICAgICAvLyBXZSBvbmx5IGFsbG93IHNl
bmRpbmcgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGltZS4gSWYgd2Ugd2FudGVkIHRv
IHNlbmQgbW9yZSB0aGFuIG9uZQogICAgIC8vIGF0IG9uY2UsIHdlJ2QgaGF2ZSB0byB1c2UgbXVs
dGlwbGUgT1ZFUkxBUFBFRCBzdHJ1Y3R1cmVzIGFuZCBob2xkIG9udG8gbXVsdGlwbGUgcGVuZGlu
ZwotICAgIC8vIEFyZ3VtZW50RW5jb2RlcnMgKG9uZSBvZiBlYWNoIGZvciBlYWNoIHNpbXVsdGFu
ZW91cyBhc3luY2hyb25vdXMgbWVzc2FnZSkuCi0gICAgcmV0dXJuICFtX3BlbmRpbmdXcml0ZUFy
Z3VtZW50czsKKyAgICAvLyBNZXNzYWdlRW5jb2RlcnMgKG9uZSBvZiBlYWNoIGZvciBlYWNoIHNp
bXVsdGFuZW91cyBhc3luY2hyb25vdXMgbWVzc2FnZSkuCisgICAgcmV0dXJuICFtX3BlbmRpbmdX
cml0ZUVuY29kZXI7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShN
ZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRz
KQorYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiB7Ci0gICAgQVNTRVJUKCFt
X3BlbmRpbmdXcml0ZUFyZ3VtZW50cyk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdXcml0ZUVuY29k
ZXIpOwogCiAgICAgLy8gSnVzdCBiYWlsIGlmIHRoZSBoYW5kbGUgaGFzIGJlZW4gY2xvc2VkLgog
ICAgIGlmIChtX2Nvbm5lY3Rpb25QaXBlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSBwdXQgdGhlIG1lc3NhZ2UgSUQgbGFzdC4KLSAg
ICBhcmd1bWVudHMtPmVuY29kZVVJbnQzMihtZXNzYWdlSUQudG9JbnQoKSk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlVUludDMyKG1lc3NhZ2VJRC50b0ludCgpKTsKIAogICAgIC8vIFdyaXRlIHRoZSBv
dXRnb2luZyBtZXNzYWdlLgogCi0gICAgaWYgKDo6V3JpdGVGaWxlKG1fY29ubmVjdGlvblBpcGUs
IGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCAwLCAmbV93cml0
ZVN0YXRlKSkgeworICAgIGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBlbmNvZGVy
LT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCAwLCAmbV93cml0ZVN0YXRlKSkgewog
ICAgICAgICAvLyBXZSBzdWNjZXNzZnVsbHkgc2VudCB0aGlzIG1lc3NhZ2UuCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMwOSw5ICszMTAsOSBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVu
dEVuYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gVGhlIG1lc3NhZ2Ug
d2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgYXJndW1lbnRzIHNvIHRoYXQgdGhleSB3
b24ndCBiZSBkZXN0cm95ZWQKKyAgICAvLyBUaGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgc29vbi4g
SG9sZCBvbnRvIHRoZSBlbmNvZGVyIHNvIHRoYXQgaXQgd29uJ3QgYmUgZGVzdHJveWVkCiAgICAg
Ly8gYmVmb3JlIHRoZSB3cml0ZSBjb21wbGV0ZXMuCi0gICAgbV9wZW5kaW5nV3JpdGVBcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gZW5jb2RlcjsKIAog
ICAgIC8vIFdlIGNhbiBvbmx5IHNlbmQgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGlt
ZSAoc2VlIGNvbW1lbnQgaW4gcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcykuCiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQy
L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CmluZGV4IGM4YTBhYjkyYWI5MGJkN2Y3ZWQ3MjM1ZTY5MGQzYjQ4ODAyOWE4NTIuLjk3NDgyM2Q5
MzZiYzIyYTFkNjYwMDk4YzI1MTBiNjMxMjYyNDE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKQEAgLTIzMCw3ICsyMzAsNyBAQCBkZWYgZm9yd2FyZF9k
ZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgIGZvciBtZXNzYWdlIGluIHJl
Y2VpdmVyLm1lc3NhZ2VzOgogICAgICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0g
Tm9uZSBhbmQgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRUUklCVVRFKToKICAgICAg
ICAgICAgIGhlYWRlcnMuYWRkKCc8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+JykKLSAgICAg
ICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnQ29yZUlQQyddLnVwZGF0ZShbJ0FyZ3VtZW50RW5j
b2RlcicsICdDb25uZWN0aW9uJ10pCisgICAgICAgICAgICB0eXBlc19ieV9uYW1lc3BhY2VbJ0Nv
cmVJUEMnXS51cGRhdGUoWydNZXNzYWdlRW5jb2RlcicsICdDb25uZWN0aW9uJ10pCiAKICAgICBm
b3IgcGFyYW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6CiAgICAgICAgIHR5cGUg
PSBwYXJhbWV0ZXIudHlwZQpAQCAtNTAyLDcgKzUwMiw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVChtX2FyZ3VtZW50cyk7XG4nKQogICAgICAg
ICAgICAgcmVzdWx0ICs9IFsnICAgIG1fYXJndW1lbnRzLT5lbmNvZGUoJXMpO1xuJyAlIHgubmFt
ZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkobV9h
cmd1bWVudHMucmVsZWFzZSgpKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
Ym9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3RhdGljX3BvaW50ZXJf
Y2FzdDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1bWVudHMucmVsZWFzZSgpKSk7XG4n
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIG1fY29ubmVjdGlvbiA9IG51bGxwdHI7
XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiByZXN1bHQ7XG4nKQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQy
L1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVzdC5weQppbmRleCBkZDlmYmVjYzNmMTkx
YjM4ZmJhYmEzOGU2MzFkODMyMTNkZTA4ZWY5Li4yYzI3YzVlZWUwMmU5OGMxNjVhNDEzMGE5ZDM3
N2IyZDI2MDQ3ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIv
bWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQy
L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zMjMsOCArMzIzLDggQEAgX2V4cGVjdGVkX2hlYWRl
ciA9ICIiIi8qCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7
Ci0gICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogICAgIGNsYXNzIENvbm5lY3Rpb247CisgICAg
Y2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgRHVtbXlUeXBlOwogICAgIGNsYXNzIE1h
Y2hQb3J0OwogfQpAQCAtNDY3LDE0ICs0NjcsMTQgQEAgc3RydWN0IEdldFBsdWdpbnMgOiBDb3Jl
SVBDOjpBcmd1bWVudHMxPGJvb2w+IHsKIHN0cnVjdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpTdHJpbmcmPiB7CiAgICAgc3RhdGlj
IGNvbnN0IEtpbmQgbWVzc2FnZUlEID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25JRDsKICAg
ICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5
ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0cjxDb3JlSVBDOjpDb25u
ZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+KTsKKyAgICAgICAg
RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4sIFBhc3NPd25QdHI8
Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5ZWRSZXBseSgpOwogCiAg
ICAgICAgIGJvb2wgc2VuZChjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPENvcmVJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50
RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5j
b2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBlZGVmIENvcmVJUEM6OkFyZ3VtZW50
czE8Q29yZUlQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj4gUmVwbHk7CkBAIC00ODgsMTQgKzQ4OCwx
NCBAQCBzdHJ1Y3QgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBDb3JlSVBDOjpBcmd1bWVu
dHMxPGNvbnN0IFdURjo6U3RyaW5nJj4gewogc3RydWN0IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMg
OiBDb3JlSVBDOjpBcmd1bWVudHMwIHsKICAgICBzdGF0aWMgY29uc3QgS2luZCBtZXNzYWdlSUQg
PSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzSUQ7CiAgICAgc3RydWN0IERlbGF5ZWRSZXBseSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHsKLSAgICAgICAgRGVsYXll
ZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4sIFBhc3NPd25QdHI8Q29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyPik7CisgICAgICAgIERlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENv
cmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPik7
CiAgICAgICAgIH5EZWxheWVkUmVwbHkoKTsKIAogICAgICAgICBib29sIHNlbmQoKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247Ci0gICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1fYXJndW1lbnRz
OworICAgICAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IG1fZW5jb2RlcjsKICAg
ICB9OwogCiAgICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMwIFJlcGx5OwpAQCAtNjQwLDkg
KzY0MCw5IEBAIG5hbWVzcGFjZSBNZXNzYWdlcyB7CiAKIG5hbWVzcGFjZSBXZWJQYWdlIHsKIAot
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBh
c3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgUGFzc093blB0cjxDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK0dldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGFy
Z3VtZW50cykKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9hcmd1bWVu
dHMoYXJndW1lbnRzKQorICAgICwgbV9lbmNvZGVyKGFyZ3VtZW50cykKIHsKIH0KIApAQCAtNjUz
LDE2ICs2NTMsMTYgQEAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6
fkRlbGF5ZWRSZXBseSgpCiAKIGJvb2wgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseTo6c2VuZChjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rp
b25IYW5kbGUpCiB7Ci0gICAgQVNTRVJUKG1fYXJndW1lbnRzKTsKLSAgICBtX2FyZ3VtZW50cy0+
ZW5jb2RlKGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9jb25uZWN0aW9u
LT5zZW5kU3luY1JlcGx5KG1fYXJndW1lbnRzLnJlbGVhc2UoKSk7CisgICAgQVNTRVJUKG1fZW5j
b2Rlcik7CisgICAgbV9lbmNvZGVyLT5lbmNvZGUoY29ubmVjdGlvbkhhbmRsZSk7CisgICAgYm9v
bCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3RhdGljX3BvaW50ZXJfY2Fz
dDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1bWVudHMucmVsZWFzZSgpKSk7CiAgICAg
bV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1UZXN0TXVs
dGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENv
cmVJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyPiBhcmd1bWVudHMpCitUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVw
bHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGFyZ3VtZW50cykKICAgICA6
IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQor
ICAgICwgbV9lbmNvZGVyKGFyZ3VtZW50cykKIHsKIH0KIApAQCAtNjczLDggKzY3Myw4IEBAIFRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpCiAKIGJv
b2wgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpzZW5kKCkKIHsKLSAgICBB
U1NFUlQobV9hcmd1bWVudHMpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5k
U3luY1JlcGx5KG1fYXJndW1lbnRzLnJlbGVhc2UoKSk7CisgICAgQVNTRVJUKG1fZW5jb2Rlcik7
CisgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3RhdGljX3Bv
aW50ZXJfY2FzdDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1bWVudHMucmVsZWFzZSgp
KSk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVT
eW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVu
dHMsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mIHJlcGx5KQogewogICAgIHN3aXRj
aCAobWVzc2FnZUlELmdldDxNZXNzYWdlczo6V2ViUGFnZTo6S2luZD4oKSkgewogICAgIGNhc2Ug
TWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbklEOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbm5lY3Rpb24uY3BwCmluZGV4IGQ5NDEzMThkYjI0Y2NhMzY4Y2MxMTdhZTJiZjFjY2E0Njc2
YzE0NGEuLjk3NDNhNzhjNzcwODQ0NDkzN2I2ZjlhZTFmMTY4ZTdlMjZmYmUxNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBX
ZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElP
YmplY3QqIG1lc3NhZ2VCb2QKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6
Y3JlYXRlKCk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdlTmFtZSk7CiAgICAgZW5j
b2RlTWVzc2FnZUJvZHkobWVzc2FnZURhdGEuZ2V0KCksIG1lc3NhZ2VCb2R5KTsKIApAQCAtNjIs
MTQgKzYyLDE0IEBAIHZvaWQgV2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9kCiAKIHZvaWQgV2ViQ29ubmVjdGlv
bjo6aGFuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlRGF0
YSkKIHsKLSAgICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbWVzc2FnZURlY29kZXIobWVzc2Fn
ZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOworICAgIE93blB0cjxDb3JlSVBDOjpB
cmd1bWVudERlY29kZXI+IGRlY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0
ZShtZXNzYWdlRGF0YS5kYXRhKCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7CiAKICAgICBTdHJpbmcg
bWVzc2FnZU5hbWU7Ci0gICAgaWYgKCFtZXNzYWdlRGVjb2Rlci5kZWNvZGUobWVzc2FnZU5hbWUp
KQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VOYW1lKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gbWVzc2FnZUJvZHk7Ci0gICAgaWYgKCFkZWNvZGVN
ZXNzYWdlQm9keSgmbWVzc2FnZURlY29kZXIsIG1lc3NhZ2VCb2R5KSkKKyAgICBpZiAoIWRlY29k
ZU1lc3NhZ2VCb2R5KGRlY29kZXIuZ2V0KCksIG1lc3NhZ2VCb2R5KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UodGhpcywgbWVzc2FnZU5hbWUsIG1l
c3NhZ2VCb2R5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5oCmluZGV4
IDNhYmQxNGQ0NmFiOWY1ZGEzMTY0NWM5MjVlNWU3NTVlMzJlZTJkOTEuLmIxNGQxZjM0N2M1MDBl
OTg4Mjk0OTk5ZTk1YjhlN2QzNWQwZDc4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5l
Y3Rpb24uaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAgICAgY2xhc3Mg
QXJndW1lbnRFbmNvZGVyOwogICAgIGNsYXNzIENvbm5lY3Rpb247CiAgICAgY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKKyAgICBjbGFzcyBNZXNzYWdlRGVjb2RlcjsKKyAgICBjbGFzcyBNZXNzYWdlRW5j
b2RlcjsKICAgICBjbGFzcyBNZXNzYWdlSUQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDRmMzkzMDc1
M2NhZmMxOGMwMDA3YWQ3Y2ExYmY0ODhlZTYxNGI5MzYuLmJmYTdkM2JjNjg1NjgyNjVjNmUwMGM0
NjM4NjgzOTJiZTgwZTFjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMjUsNiArMjUsOCBAQCBIRUFERVJT
ICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0NvcmVJUENNZXNzYWdlS2luZHMuaCBcCiAgICAg
UGxhdGZvcm0vQ29yZUlQQy9EYXRhUmVmZXJlbmNlLmggXAogICAgIFBsYXRmb3JtL0NvcmVJUEMv
SGFuZGxlTWVzc2FnZS5oIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmgg
XAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlSUQuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2
ZXIuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaCBcCkBAIC0z
ODQsNiArMzg2LDggQEAgU09VUkNFUyArPSBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2ht
ZW50LmNwcCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBcCiAgICAgUGxh
dGZvcm0vQ29yZUlQQy9EYXRhUmVmZXJlbmNlLmNwcCBcCisgICAgUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5jcHAgXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
Y3BwIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgXAogICAg
IFBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBQbGF0Zm9ybS9Nb2R1bGUuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCBkM2RhYjZjNzQwNTg1ZTUzYjkw
ZWYyYjg0M2RjODFmZDcwMTkzYzdmLi5lMjE1ZTgyY2E3YTQ1YTgxOGUwYzIyMDJhODJjZGQ3NWJi
MWJkMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zOTgs
NyArMzk4LDcgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0
ZU5ld1dlYlByb2Nlc3MoKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtX21lc3Nh
Z2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4gPiYgbWVzc2FnZSA9IG1f
bWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRleHRbaV07CiAKLSAgICAg
ICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7CisgICAgICAgICAgICBPd25QdHI8Q29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcjo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUobWVzc2Fn
ZS5maXJzdCk7CiAgICAgICAgICAgICBtZXNzYWdlRGF0YS0+ZW5jb2RlKFdlYkNvbnRleHRVc2Vy
TWVzc2FnZUVuY29kZXIobWVzc2FnZS5zZWNvbmQuZ2V0KCkpKTsKQEAgLTYyMiw3ICs2MjIsNyBA
QCB2b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplYwogCiAgICAgLy8gRklYTUU6IFJldHVybiBlYXJseSBp
ZiB0aGUgbWVzc2FnZSBib2R5IGNvbnRhaW5zIGFueSByZWZlcmVuY2VzIHRvIFdLUGFnZVJlZnMv
V0tGcmFtZVJlZnMgZXRjLiBzaW5jZSB0aGV5J3JlIGxvY2FsIHRvIGEgcHJvY2Vzcy4KIAotICAg
IE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1lc3NhZ2VEYXRhID0gQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50
RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
OwogICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUobWVzc2FnZU5hbWUpOwogICAgIG1lc3NhZ2VEYXRh
LT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNzYWdlQm9keSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU2YmUy
OGYwOTU1MDAyZjY1MDZiOWNmNTJiOTQ4OTYyN2E3NDhkOTQuLjNkYWVkYjEzNzQyZTRkNDM0MmI0
MDI3MjgyOTNmZGVlZTZhMTNiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlzY29ubmVjdCgpCiAgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsK
IH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVu
dHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIFdlYlByb2Nlc3NQcm94eTo6c2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxDb3JlSVBD
OjpNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsK
ICAgICAvLyBJZiB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgd2ViIHByb2Nlc3MgdG8gbGF1bmNoLCB3
ZSBuZWVkIHRvIHN0YXNoIGF3YXkgdGhlIG1lc3NhZ2VzIHNvIHdlIGNhbiBzZW5kIHRoZW0gb25j
ZSB3ZSBoYXZlCiAgICAgLy8gYSBDb3JlSVBDIGNvbm5lY3Rpb24uCiAgICAgaWYgKGlzTGF1bmNo
aW5nKCkpIHsKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VfcGFpcihDb3Jl
SVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMpLCBt
ZXNzYWdlU2VuZEZsYWdzKSk7CisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtl
X3BhaXIoQ29yZUlQQzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5j
b2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUkKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNvbm5lY3Rp
b24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMsIG1lc3NhZ2VTZW5kRmxhZ3Mp
OworICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2Rl
ciwgbWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0xhdW5j
aGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggNTc0ODZjN2RhYTZiNGQxZGE0N2Y2OTQ5NmZjYmM1MmFmZTM4ZDEyNy4uNzUyNGRmMmZm
NDYwMGY4ZWI1ZjY4NmMwZDFlODQ5N2QyNTEwZTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdCB0byBi
ZSBmcmVlZC4KICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAotICAgIGJvb2wgc2VuZE1lc3NhZ2Uo
Q29yZUlQQzo6TWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4s
IHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoQ29yZUlQ
Qzo6TWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWdu
ZWQgbWVzc2FnZVNlbmRGbGFncyk7CiAKICAgICAvLyBDb3JlSVBDIG1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBhZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgYmFja0ZvcndhcmREYXRh
KTsKQEAgLTIxNiwxOSArMjE2LDE5IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0
eXBlbmFtZSBUPgogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmRlcHJlY2F0ZWRTZW5kKEUgbWVzc2Fn
ZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBjb25zdCBUJiBhcmd1bWVudHMpCiB7Ci0gICAg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7Ci0gICAgYXJndW1lbnRF
bmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVu
Y29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKCIiLCAiIiwg
ZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGFyZ3VtZW50cyk7CiAKLSAgICBy
ZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKG1lc3NhZ2VJRCksIGFyZ3VtZW50
RW5jb2Rlci5yZWxlYXNlKCksIDApOworICAgIHJldHVybiBzZW5kTWVzc2FnZShDb3JlSVBDOjpN
ZXNzYWdlSUQobWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIDApOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmQoY29uc3QgVCYgbWVzc2Fn
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsK
LSAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1
bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKCIiLCAi
IiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UpOwogCi0gICAg
cmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBhcmd1
bWVudEVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsKKyAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGVuY29kZXIucmVsZWFz
ZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVT4gCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZjJkYWUzNTU2ZTI2ZTEwNDViNDRjNmYxM2U2OGJjZWYwYjFkMTg4MC4uZjJkM2I0ZDc3ODM0NDgz
ZTBhYTBmYTlkMTQ5MTU2NGQ5MGQ1MjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODEsNiArODEsMTAgQEAKIAkJMUEyMTYx
QjExMUYzNzY2NDAwOEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIxNjFBRjExRjM3NjY0MDA4QUQw
RjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCAqLzsgfTsKIAkJMUEyMTYyQjAxMUYzODk3MTAw
OEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIxNjJBRTExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50
aW1lVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMUEyMTYyQjExMUYzODk3MTAwOEFEMEY1IC8qIE5Q
UnVudGltZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEyMTYyQUYxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5o
ICovOyB9OworCQkxQTIzMjhGRTE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI4RkMx
NjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLzsgfTsKKwkJMUEyMzI4RkYx
NjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVz
c2FnZUVuY29kZXIuaCAqLzsgfTsKKwkJMUEyMzI5MDIxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3Nh
Z2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgKi87IH07
CisJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMzI5MDExNjJDODY3MzAw
RDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi87IH07CiAJCTFBMjRCNUYyMTFGNTMxRTgwMEMz
ODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVz
LmNwcCAqLzsgfTsKIAkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjRCNUYx
MTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggKi87IH07CiAJCTFBMjRCRUQ1MTIw
ODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRN
ZW1vcnkuaCAqLzsgfTsKQEAgLTEyMDcsNiArMTIxMSwxMCBAQAogCQkxQTIxNjJBRjExRjM4OTcx
MDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5QUnVudGltZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VPdmVybGF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBX
S0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQTIzMjhGQzE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZUVuY29kZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjhGRDE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2Fn
ZUVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZUVuY29k
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUEyMzI5MDAxNjJDODY3MzAwRDgy
RjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lc3NhZ2VEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY2hVdGlsaXRpZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI0QjVGMTExRjUzMUU4MDBDMzgyNjkg
LyogTWFjaFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNo
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCRUQzMTIwODk0
RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkTWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzE4
LDggKzI3MjYsNiBAQAogCQkJCUMwMzM3REQwMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2
ZW50LmNwcCAqLywKIAkJCQlFMUVERkRBRDE2Mjg4OTNCMDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCUUxRURGREFGMTYyODg5ODEwMDM5
RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKLQkJ
CQkyOTEyMTcwNTE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRDb250YWluZXIuY3BwICov
LAotCQkJCTI5MTIxNzA2MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29udGVudENvbnRhaW5lci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBTaGFyZWQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMjc4Miw2ICsyNzg4LDEwIEBACiAJCQkJMUE4RUZERkQxMjUzQ0I2RTAwRjcwNjdGIC8q
IERhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBOEVGREY5MTI1M0NBQTIwMEY3MDY3RiAvKiBE
YXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQzBDRTcyQUMxMjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRs
ZU1lc3NhZ2UuaCAqLywKKwkJCQkxQTIzMjkwMDE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURl
Y29kZXIuY3BwICovLAorCQkJCTFBMjMyOTAxMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVj
b2Rlci5oICovLAorCQkJCTFBMjMyOEZDMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rl
ci5jcHAgKi8sCisJCQkJMUEyMzI4RkQxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVy
LmggKi8sCiAJCQkJQkMwMzJEQTQxMEY0MzdEMTAwNThDMTVBIC8qIE1lc3NhZ2VJRC5oICovLAog
CQkJCTFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCAqLywKIAkJ
CQkxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCAqLywK
QEAgLTQ2NzksNiArNDY4OSw4IEBACiAJCQkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5l
dHdvcmtQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRURGRTEzMTYyOENG
QkQwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBMjMyOEZG
MTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUEyMzI5MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTU2MjIsNiArNTYzNCw4IEBACiAJCQkJNTE2MzE5OTQxNjI4OUE2MDAwRTIyRjAwIC8q
IE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
RURGRTEyMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMUVERkUxNTE2MjhERDdBMDAzOUVDREEgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMyOEZFMTYyQzg2NkEw
MEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTIzMjkw
MjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVy
LmNwcAppbmRleCA3NjMzMDVjYmViOTM5NDg3MjUzZjg2ZWZiZWE5M2RlNTYwZWMyODhiLi42MzQx
NzcyMGNjMTQxNWIxZmNiZmY0ZTc5ZTFhZDUxM2IyODE4YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKQEAgLTMzLDE0
ICszMywxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIERlY29kZXJBZGFwdGVyOjpEZWNvZGVy
QWRhcHRlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQotICAgIDog
bV9kZWNvZGVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSkKKyAgICA6IG1fZGVjb2RlcihDb3JlSVBDOjpB
cmd1bWVudERlY29kZXI6OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUpKQogeworICAgIC8vIEtl
ZXAgZm9ybWF0IGNvbXBhdGliaWxpdHkgYnkgZGVjb2RpbmcgYW4gdW51c2VkIHVpbnQ2NF90IHZh
bHVlCisgICAgLy8gdGhhdCB1c2VkIHRvIGJlIGVuY29kZWQgYnkgdGhlIGFyZ3VtZW50IGVuY29k
ZXIuCisgICAgdWludDY0X3QgdmFsdWU7CisgICAgbV9kZWNvZGVyLT5kZWNvZGUodmFsdWUpOwor
ICAgIEFTU0VSVCghdmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVCeXRl
cyhWZWN0b3I8dWludDhfdD4mIGJ5dGVzKQogewogICAgIENvcmVJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIW1fZGVjb2Rlci5kZWNvZGVWYXJpYWJsZUxlbmd0aEJ5
dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2RlVmFyaWFi
bGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGJ5dGVzID0gZGF0YVJlZmVyZW5jZS52ZWN0b3IoKTsKQEAgLTQ5LDQyICs1NCw0MiBA
QCBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVCeXRlcyhWZWN0b3I8dWludDhfdD4mIGJ5dGVz
KQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVCb29sKGJvb2wmIHZhbHVlKQogewotICAg
IHJldHVybiBtX2RlY29kZXIuZGVjb2RlQm9vbCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlQm9vbCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJ
bnQxNih1aW50MTZfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVVSW50
MTYodmFsdWUpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZVVJbnQxNih2YWx1ZSk7CiB9
CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMih1aW50MzJfdCYgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVVSW50MzIodmFsdWUpOworICAgIHJldHVybiBt
X2RlY29kZXItPmRlY29kZVVJbnQzMih2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6
OmRlY29kZVVJbnQ2NCh1aW50NjRfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5k
ZWNvZGVVSW50NjQodmFsdWUpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZVVJbnQ2NCh2
YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUludDMyKGludDMyX3QmIHZh
bHVlKQogewotICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlSW50MzIodmFsdWUpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUludDMyKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRh
cHRlcjo6ZGVjb2RlSW50NjQoaW50NjRfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rl
ci5kZWNvZGVJbnQ2NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlSW50NjQo
dmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVGbG9hdChmbG9hdCYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVGbG9hdCh2YWx1ZSk7CisgICAgcmV0
dXJuIG1fZGVjb2Rlci0+ZGVjb2RlRmxvYXQodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFw
dGVyOjpkZWNvZGVEb3VibGUoZG91YmxlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9kZWNvZGVy
LmRlY29kZURvdWJsZSh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlRG91Ymxl
KHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYg
dmFsdWUpCkBAIC05Niw3ICsxMDEsNyBAQCBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVTdHJp
bmcoU3RyaW5nJiB2YWx1ZSkKICAgICAvLyB3aXRob3V0IGJyZWFraW5nIGVuY29kaW5nL2RlY29k
aW5nIG9mIHRoZSBoaXN0b3J5IHRyZWUuCiAKICAgICB1aW50MzJfdCBsZW5ndGg7Ci0gICAgaWYg
KCFtX2RlY29kZXIuZGVjb2RlKGxlbmd0aCkpCisgICAgaWYgKCFtX2RlY29kZXItPmRlY29kZShs
ZW5ndGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobGVuZ3RoID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewpAQCAtMTA2LDIyICsxMTEsMjIgQEAg
Ym9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYgdmFsdWUpCiAgICAgfQog
CiAgICAgdWludDY0X3QgbGVuZ3RoSW5CeXRlczsKLSAgICBpZiAoIW1fZGVjb2Rlci5kZWNvZGUo
bGVuZ3RoSW5CeXRlcykpCisgICAgaWYgKCFtX2RlY29kZXItPmRlY29kZShsZW5ndGhJbkJ5dGVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGxlbmd0aEluQnl0ZXMgJSBzaXpl
b2YoVUNoYXIpIHx8IGxlbmd0aEluQnl0ZXMgLyBzaXplb2YoVUNoYXIpICE9IGxlbmd0aCkgewot
ICAgICAgICBtX2RlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgbV9kZWNvZGVyLT5tYXJr
SW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2Rl
Y29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxVQ2hhcj4obGVuZ3RoKSkgewotICAg
ICAgICBtX2RlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIW1fZGVjb2Rlci0+YnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjxVQ2hhcj4obGVuZ3RoKSkgeworICAgICAgICBtX2RlY29k
ZXItPm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBV
Q2hhciogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghbV9kZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXpl
b2YoVUNoYXIpLCBfX2FsaWdub2YoVUNoYXIpKSkKKyAgICBpZiAoIW1fZGVjb2Rlci0+ZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0
aCAqIHNpemVvZihVQ2hhciksIF9fYWxpZ25vZihVQ2hhcikpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB2YWx1ZSA9IHN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmgKaW5kZXggZDZiNGViNzY2YWYxNmExODI5Y2Y5
NTZmZDk3NDY1ZThjOWRjNGE1ZC4uNjcxZTE4OTZmNTA5NTJlOGZjNjk2NWQyZDA0OGI2YjNmNjkz
YTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29k
ZXJBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29k
ZXJBZGFwdGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
ZGVjb2RlRG91YmxlKGRvdWJsZSYpOwogICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVTdHJpbmcoU3Ry
aW5nJik7CiAKLSAgICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbV9kZWNvZGVyOworICAgIE93
blB0cjxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+IG1fZGVjb2RlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0VuY29kZXJBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9FbmNvZGVyQWRhcHRlci5jcHAKaW5kZXggYmRhN2Q5YjcyZjJmZDAxMjM5YTdlMzJlZDZmNDg0
YTkxODUzNTJiOS4uNTRmOTM3MmQxOTk2MGU1MmJjZTk4MWE5YTBjZGU1NjRhYzIzODVkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0
ZXIuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIEVuY29kZXJB
ZGFwdGVyOjpFbmNvZGVyQWRhcHRlcigpCi0gICAgOiBtX2VuY29kZXIoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyOjpjcmVhdGUoMCkpCisgICAgOiBtX2VuY29kZXIoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyOjpjcmVhdGUoKSkKIHsKKyAgICAvLyBLZWVwIGZvcm1hdCBjb21wYXRpYmlsaXR5IGJ5
IGRlY29kaW5nIGFuIHVudXNlZCB1aW50NjRfdCB2YWx1ZQorICAgIC8vIHRoYXQgdXNlZCB0byBi
ZSBlbmNvZGVkIGJ5IHRoZSBhcmd1bWVudCBlbmNvZGVyLgorICAgIG1fZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PHVpbnQ2NF90PigwKSk7CiB9CiAKIENvcmVJUEM6OkRhdGFSZWZlcmVuY2Ug
RW5jb2RlckFkYXB0ZXI6OmRhdGFSZWZlcmVuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmY2N2VkMDIyOTEyNWU3Mzg0OThhMGYyNjcyYzg4
NGJjMzY4ODM2NS4uNDNlZDE2YjFhMzljOThkNzVlYmZlNTQxOTYwYmVhNGViZWY5OWY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDExLDE0ICsxMDEx
LDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShjb25zdCBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyIG1lc3NhZ2VE
ZWNvZGVyKG1lc3NhZ2VEYXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6ZSgpKTsKKyAgICBPd25Q
dHI8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiBkZWNvZGVyID0gQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyOjpjcmVhdGUobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOwog
CiAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lOwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVjb2Rl
KG1lc3NhZ2VOYW1lKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNzYWdlTmFtZSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxBUElPYmplY3Q+IG1lc3NhZ2VCb2R5OwotICAg
IGlmICghbWVzc2FnZURlY29kZXIuZGVjb2RlKEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNv
ZGVyKG1lc3NhZ2VCb2R5KSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoSW5qZWN0ZWRCdW5k
bGVVc2VyTWVzc2FnZURlY29kZXIobWVzc2FnZUJvZHkpKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdl
Qm9keS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2ogYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKaW5kZXggZWJjZDZjYzM1Zjcw
ZmZmZjZlZDA4YmUzMTlhMTMxNGM3ZDYyYjA1ZC4uMDZhM2ZkZDBiYzgzMzBhY2M2ZTM3M2Q2MTVl
YmMwM2ExMzIyMjIxZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagpAQCAtNDA5NCw2ICs0
MDk0LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBDXE1lc3NhZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJ
UENcTWVzc2FnZURlY29kZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJUENcTWVzc2FnZUVuY29kZXIuY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxh
dGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5jb2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlSUQu
aCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169262</attachid>
            <date>2012-10-17 14:30:18 -0700</date>
            <delta_ts>2012-10-17 16:54:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99365-20121017142905.patch</filename>
            <type>text/plain</type>
            <size>85995</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTU4OTUzNjdlMjgwZmNj
MDU3MjFlOTU3MzA0OTY4YzAyZmU5ZDEyZC4uYWFhZGQ1ODkzMTg1ODNjZWY5OTczZmM4MjFiZWRm
ZTA0ZjVlZmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0xMC0xNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZXNzYWdl
RW5jb2RlciBhbmQgTWVzc2FnZURlY29kZXIgc3ViY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzNjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIHRvd2Fy
ZHMgY2xlYW5pbmcgdXAgSVBDIGhhbmRsaW5nIGluIFdlYktpdDIuIFRoZSBpZGVhIGlzIHRoYXQg
TWVzc2FnZUVuY29kZXIgYW5kIE1lc3NhZ2VEZWNvZGVyCisgICAgICAgIHdpbGwgaGFuZGxlIGFs
bCB0aGUgSVBDIHNwZWNpZmljIHBhcnRzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc3VjaCBh
cyBhdHRhY2htZW50cyksIHdoZXJlYXMgdGhlIEFyZ3VtZW50RW5jb2RlciBhbmQgQXJndW1lbnRE
ZWNvZGVyCisgICAgICAgIGNsYXNzZXMgYXJlIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXppbmcgc2lt
cGxlciBkYXRhIHR5cGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZSk6
CisgICAgICAgIChDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgIChBcmd1bWVu
dERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQXJndW1lbnRFbmNv
ZGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAg
ICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6c2VuZFN5
bmNNZXNzYWdlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5jUmVw
bHkpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6
CisgICAgICAgIChQZW5kaW5nU3luY1JlcGx5KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OlBlbmRpbmdTeW5jUmVwbHk6OnJlbGVhc2VSZXBseURlY29kZXIpOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpz
ZW5kU3luYyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpkZXByZWNhdGVk
U2VuZFN5bmMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNlbmQp
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6TWVzc2FnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChDb3JlSVBDOjpN
ZXNzYWdlRGVjb2Rlcjo6fk1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlRGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjpjcmVh
dGUpOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZUVuY29kZXI6Ok1lc3NhZ2VFbmNvZGVyKToK
KyAgICAgICAgKENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAoQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjo6c2Vu
ZCk6CisgICAgICAgIChDb3JlSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlTWVzc2FnZURl
Y29kZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpD
b25uZWN0aW9uOjp3cml0ZUV2ZW50SGFuZGxlcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKToKKyAgICAgICAgKENvcmVJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb25uZWN0aW9uOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmRlcHJlY2F0ZWRTZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5k
KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RGVjb2RlckFkYXB0ZXI6OkRlY29kZXJBZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6RGVj
b2RlckFkYXB0ZXI6OmRlY29kZUJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0
ZXI6OmRlY29kZUJvb2wpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
VUludDE2KToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMik6
CisgICAgICAgIChXZWJLaXQ6OkRlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50NjQpOgorICAgICAg
ICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50MzIpOgorICAgICAgICAoV2ViS2l0
OjpEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVy
QWRhcHRlcjo6ZGVjb2RlRmxvYXQpOgorICAgICAgICAoV2ViS2l0OjpEZWNvZGVyQWRhcHRlcjo6
ZGVjb2RlRG91YmxlKToKKyAgICAgICAgKFdlYktpdDo6RGVjb2RlckFkYXB0ZXI6OmRlY29kZVN0
cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6Cisg
ICAgICAgIChEZWNvZGVyQWRhcHRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Vu
Y29kZXJBZGFwdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RW5jb2RlckFkYXB0ZXI6OkVuY29k
ZXJBZGFwdGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTItMTAtMTMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gQWRkIFNoYXJlZFdvcmtlclByb2Nl
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFl
YTg1YjM2YzcxMC4uYmI3NDZjNjk5MWI5NDgzZDdlZDlhNWYxMDI3YmE5NjFmOTY4ZWVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMyw2ICsxMjMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmNwcAogICAgIFBsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5j
ZS5jcHAKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorICAgIFBsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCiAKICAgICBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM3MWY0ZjU1ODYzMDk4
NjlmZmUxNDM5ZTdlMmQ1YjIxYjIzYzQwNmMuLmYxZTgwZDU3YTQwZmVhYzE0OTFjMzA5N2UzZWI0
ZWU4NjBlZDBjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjU3LDYgKzI1
NywxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hh
bmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIFwKQEAgLTEy
MTksNiArMTIyMywxMCBAQCB3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvRGF0YVJlZmVyZW5jZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaCBcCisJU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuaCBcCisJU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlSUQuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlUmVjZWl2ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
UmVjZWl2ZXJNYXAuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBmNDkwNzZhNmRjMzA2OTZhM2M0ODc4ODI1Njc4
NzU5NDA1YzE3YTVlLi45ZDdmZjNiY2JkOWU2YmI1ZmRlNjlkY2Q5Mjk5OGIwZDZkMmM2NWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCkBAIC0zMSw5ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUFyZ3Vt
ZW50RGVjb2Rlcjo6QXJndW1lbnREZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUpCitQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQXJndW1lbnREZWNvZGVy
OjpjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAg
ICBpbml0aWFsaXplKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgRGVxdWU8QXR0YWNobWVudD4g
YXR0YWNobWVudHM7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudERlY29kZXIoYnVm
ZmVyLCBidWZmZXJTaXplLCBhdHRhY2htZW50cykpOwogfQogCiBBcmd1bWVudERlY29kZXI6OkFy
Z3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBE
ZXF1ZTxBdHRhY2htZW50PiYgYXR0YWNobWVudHMpCkBAIC03Niw5ICs3Nyw2IEBAIHZvaWQgQXJn
dW1lbnREZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUpCiAgICAgbV9idWZmZXJQb3MgPSBtX2J1ZmZlcjsKICAgICBtX2J1ZmZlckVuZCA9
IG1fYnVmZmVyICsgYnVmZmVyU2l6ZTsKICAgICBtZW1jcHkobV9idWZmZXIsIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7Ci0KLSAgICAvLyBEZWNvZGUgdGhlIGRlc3RpbmF0aW9uIElELgotICAgIGRlY29k
ZVVJbnQ2NChtX2Rlc3RpbmF0aW9uSUQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYWxpZ25l
ZEJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oY29uc3QgdWludDhfdCogYWxpZ25lZFBvc2l0
aW9uLCBjb25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggNTNmOWY4
YzZjMGM1ZTIzNTkwM2E1NTMyNDU1OWI0ZDdiZTkxOTMwMi4uM2M4MWViMzc3ZjViMmUxNWRkYTIz
OTljMjc0MTUyOWMxYzI3OTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCw5ICszOSw4IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewogcHVibGljOgot
ICAgIEFyZ3VtZW50RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplKTsKLSAgICBBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgRGVxdWU8QXR0YWNobWVudD4mKTsKLSAgICB+QXJndW1lbnREZWNvZGVyKCk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB+QXJndW1lbnRE
ZWNvZGVyKCk7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbklEOyB9CiAKQEAgLTEwMywxNyArMTAzLDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRlYnVnKCk7CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBBcmd1bWVudERlY29kZXIoY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Ci0gICAgQXJndW1lbnREZWNvZGVyKiBvcGVyYXRvcj0oY29u
c3QgQXJndW1lbnREZWNvZGVyKik7Citwcm90ZWN0ZWQ6CisgICAgQXJndW1lbnREZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIERlcXVlPEF0dGFjaG1lbnQ+
Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSk7CiAKICAgICBib29sIGFsaWduQnVmZmVyUG9zaXRpb24odW5zaWduZWQgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250
YWluKHVuc2lnbmVkIGFsaWdubWVudCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCisvLyBGSVhNRTog
TW92ZSBtX2Rlc3RpbmF0aW9uSUQgdG8gTWVzc2FnZURlY29kZXIuCitwcm90ZWN0ZWQ6CiAgICAg
dWludDY0X3QgbV9kZXN0aW5hdGlvbklEOwogCitwcml2YXRlOgogICAgIHVpbnQ4X3QqIG1fYWxs
b2NhdGVkQmFzZTsKICAgICB1aW50OF90KiBtX2J1ZmZlcjsKICAgICB1aW50OF90KiBtX2J1ZmZl
clBvczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCA5NjY4OGExNzJiYzM3MTY4YjM0MjU1ZWMzYTYzMTMzNjIyYzczNzg2
Li45ZGY1MWVjMTkxYmYwY2ViNTg1MDQ5MGRlYmY3YWJkNmU0Y2FlZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0z
MiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1QYXNzT3duUHRyPEFyZ3Vt
ZW50RW5jb2Rlcj4gQXJndW1lbnRFbmNvZGVyOjpjcmVhdGUodWludDY0X3QgZGVzdGluYXRpb25J
RCkKK1Bhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25J
RCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXJndW1lbnRFbmNvZGVyKTsKIH0KIAotQXJn
dW1lbnRFbmNvZGVyOjpBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCkKK0Fy
Z3VtZW50RW5jb2Rlcjo6QXJndW1lbnRFbmNvZGVyKCkKICAgICA6IG1fYnVmZmVyKDApCiAgICAg
LCBtX2J1ZmZlclBvaW50ZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICwgbV9idWZm
ZXJDYXBhY2l0eSgwKQogewotICAgIC8vIEVuY29kZSB0aGUgZGVzdGluYXRpb24gSUQuCi0gICAg
ZW5jb2RlVUludDY0KGRlc3RpbmF0aW9uSUQpOwogfQogCiBBcmd1bWVudEVuY29kZXI6On5Bcmd1
bWVudEVuY29kZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmgKaW5kZXggYjczNGQ3NTMxOWE5NDI1YTM5M2ZkOTdjYjY4MWI5MzRiYTA3
MTUyZi4uOWJmZWEwMzA0MjkxYzI1MmY2MzZmYTg2Y2I4ZDVhOTMzYjA2YWE4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0z
OSw4ICszOSw4IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBjcmVh
dGUodWludDY0X3QgZGVzdGluYXRpb25JRCk7Ci0gICAgfkFyZ3VtZW50RW5jb2RlcigpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlKCk7CisgICAgdmlydHVh
bCB+QXJndW1lbnRFbmNvZGVyKCk7CiAKICAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCB1bnNpZ25lZCBhbGlnbm1lbnQpOwogICAgIHZvaWQgZW5j
b2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoY29uc3QgRGF0YVJlZmVyZW5jZSYpOwpAQCAtNzcs
OCArNzcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWcoKTsKICNlbmRpZgogCitwcm90ZWN0
ZWQ6CisgICAgQXJndW1lbnRFbmNvZGVyKCk7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXJn
dW1lbnRFbmNvZGVyKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ4X3QqIGdyb3co
dW5zaWduZWQgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7CiAgICAgCiAgICAgdWludDhfdCogbV9i
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cAppbmRleCAwMjYzNDg3NGNlNmMyZmI2NWY3YWVhNjU5ODE3OGE5MDZkMjIyYTBmLi45OGYzNTU5
MzRhM2YwODI1MzI4YzI3ODE0ODlhMjQzMTI3YTgyMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI4MywxOCArMjgzLDE4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
ICAgICBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLVBhc3NPd25QdHI8
QXJndW1lbnRFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50RW5j
b2Rlcih1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKK1Bh
c3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcihjb25zdCBDU3RyaW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0
SUQpCiB7Ci0gICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJn
dW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7CisgICAgT3duUHRyPE1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNSZXF1ZXN0SUQ7Ci0g
ICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoc3luY1JlcXVlc3RJRCk7CisgICAgZW5jb2Rlci0+
ZW5jb2RlKHN5bmNSZXF1ZXN0SUQpOwogCi0gICAgcmV0dXJuIGFyZ3VtZW50RW5jb2Rlci5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGVuY29kZXIucmVsZWFzZSgpOwogfQogCi1ib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCiB7CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNSwxOSArMzA1LDE5IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuY29kZXI+IGFyCiAgICAgICAgIG1lc3NhZ2VJRCA9IG1lc3NhZ2VJRC5t
ZXNzYWdlSURXaXRoQWRkZWRGbGFncyhNZXNzYWdlSUQ6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX291dGdvaW5nTWVz
c2FnZXNMb2NrKTsKLSAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5kKE91dGdvaW5nTWVzc2Fn
ZShtZXNzYWdlSUQsIGFyZ3VtZW50cykpOworICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
T3V0Z29pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZW5jb2RlcikpOwogICAgIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVu
IHdvcmsgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuCiAgICAgbV9jb25uZWN0aW9uUXVldWUu
ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcywgdGhp
cykpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK2Jvb2wgQ29ubmVjdGlv
bjo6c2VuZFN5bmNSZXBseShQYXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogewot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNz
YWdlUmVwbHkpLCBhcmd1bWVudHMpOworICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQo
Q29yZUlQQ01lc3NhZ2U6OlN5bmNNZXNzYWdlUmVwbHkpLCBlbmNvZGVyKTsKIH0KIAotUGFzc093
blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKE1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0KQorUGFz
c093blB0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgZG91YmxlIHRpbWVvdXQpCiB7
CiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBp
bmNvbWluZyBtZXNzYWdlcyBxdWV1ZS4KICAgICB7CkBAIC0zMjcsMTAgKzMyNywxMCBAQCBQYXNz
T3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgdWludAogICAgICAgICAgICAgSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdl
ID0gKml0OwogCiAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlSUQoKSA9PSBtZXNzYWdl
SUQgJiYgbWVzc2FnZS5hcmd1bWVudHMoKS0+ZGVzdGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9u
SUQpIHsKLSAgICAgICAgICAgICAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMg
PSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBPd25QdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXIgPSBtZXNzYWdlLnJlbGVhc2VBcmd1bWVudHMoKTsKIAogICAg
ICAgICAgICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhcmd1bWVudHMucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVyLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM1
MywxNCArMzUzLDE0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3
YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50CiAgICAgd2hpbGUgKHRydWUp
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAK
LSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnRE
ZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VB
bmREZXN0aW5hdGlvbik7CisgICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50
NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1h
cC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7CiAgICAgICAgIGlmIChpdC0+dmFsdWUpIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtX3dhaXRGb3JNZXNzYWdlTWFwIHNob3VsZCByZWFsbHkg
aG9sZCBPd25QdHJzIHRvCiAgICAgICAgICAgICAvLyBBcmd1bWVudERlY29kZXJzLCBidXQgSGFz
aE1hcCBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IE93blB0cnMuCi0gICAgICAgICAgICBPd25Q
dHI8QXJndW1lbnREZWNvZGVyPiBhcmd1bWVudHMgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAg
ICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKICAgICAgICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAucmVtb3ZlKGl0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50cy5yZWxlYXNlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZGVjb2Rlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIE5vdyB3ZSB3YWl0LgpAQCAtMzc1LDcgKzM3NSw3IEBAIFBhc3NPd25QdHI8QXJndW1l
bnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCB1aW50CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgdWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+IGVuY29kZXIs
IGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQogewogICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2VuZGluZyBzeW5jIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudCBydW4g
bG9vcC4KICAgICBBU1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpID09IG1fY2xpZW50UnVuTG9vcCk7
CkBAIC00MDIsNyArNDAyLDcgQEAgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW4KICAgICAvLyBUaGVu
IHdhaXQgZm9yIGEgcmVwbHkuIFdhaXRpbmcgZm9yIGEgcmVwbHkgY291bGQgaW52b2x2ZSBkaXNw
YXRjaGluZyBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLCBzbwogICAgIC8vIGtlZXAgYW4gZXh0cmEg
cmVmZXJlbmNlIHRvIHRoZSBjb25uZWN0aW9uIGhlcmUgaW4gY2FzZSBpdCdzIGludmFsaWRhdGVk
LgogICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0KHRoaXMpOwotICAgIE93blB0cjxBcmd1
bWVudERlY29kZXI+IHJlcGx5ID0gd2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1l
b3V0LCBzeW5jU2VuZEZsYWdzKTsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IHJlcGx5ID0g
d2FpdEZvclN5bmNSZXBseShzeW5jUmVxdWVzdElELCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
IAogICAgIC8vIEZpbmFsbHksIHBvcCB0aGUgcGVuZGluZyBzeW5jIHJlcGx5IGluZm9ybWF0aW9u
LgogICAgIHsKQEAgLTQxNyw3ICs0MTcsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIHVpbgogICAg
IHJldHVybiByZXBseS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVy
PiBDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIGRv
dWJsZSB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzKQorUGFzc093blB0cjxNZXNzYWdl
RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncykKIHsKICAgICAvLyBV
c2UgYSByZWFsbHkgbG9uZyB0aW1lb3V0LgogICAgIGlmICh0aW1lb3V0ID09IE5vVGltZW91dCkK
QEAgLTQ3NCw3ICs0NzQsNyBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzKQordm9pZCBDb25uZWN0aW9uOjpw
cm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cikKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jUmVwbHlTdGF0ZU11dGV4KTsKIApA
QCAtNDgzLDEyICs0ODMsMTIgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5j
UmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICBmb3IgKHNp
emVfdCBpID0gbV9wZW5kaW5nU3luY1JlcGxpZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAg
ICAgIFBlbmRpbmdTeW5jUmVwbHkmIHBlbmRpbmdTeW5jUmVwbHkgPSBtX3BlbmRpbmdTeW5jUmVw
bGllc1tpIC0gMV07CiAKLSAgICAgICAgaWYgKHBlbmRpbmdTeW5jUmVwbHkuc3luY1JlcXVlc3RJ
RCAhPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkKKyAgICAgICAgaWYgKHBlbmRpbmdTeW5j
UmVwbHkuc3luY1JlcXVlc3RJRCAhPSBkZWNvZGVyLT5kZXN0aW5hdGlvbklEKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBBU1NFUlQoIXBlbmRpbmdTeW5jUmVwbHkucmVwbHlE
ZWNvZGVyKTsKIAotICAgICAgICBwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IGFyZ3Vt
ZW50cy5sZWFrUHRyKCk7CisgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0g
ZGVjb2Rlci5sZWFrUHRyKCk7CiAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJl
cGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3QgYSByZXBseSB0byB0aGUgbGFzdCBzZW5k
IG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4gbG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vz
c2VkLgpAQCAtNTAyLDE1ICs1MDIsMTUgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21p
bmdTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykKICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHNlbmQgdGltZWQgb3V0LCBzbyBpdCdzIGZpbmUgdG8g
aWdub3JlLgogfQogCi12b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVz
c2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cykK
K3ZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgaXMgYSBzeW5jIHJlcGx5LgogICAgIGlmIChtZXNzYWdlSUQgPT0gTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpTeW5jTWVzc2FnZVJlcGx5KSkgewotICAgICAgICBwcm9jZXNzSW5j
b21pbmdTeW5jUmVwbHkoYXJndW1lbnRzKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nU3luY1Jl
cGx5KGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5jb21pbmdNZXNz
YWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgSW5jb21pbmdN
ZXNzYWdlIGluY29taW5nTWVzc2FnZShtZXNzYWdlSUQsIGRlY29kZXIpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBpcyBhIHN5bmMgbWVzc2FnZSBvciBpZiBpdCdzIGEgbWVzc2FnZSB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiB3YWl0aW5nIGZvcgogICAgIC8vIGEgc3luYyBy
ZXBseS4gSWYgaXQgaXMsIGFuZCB3ZSdyZSB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkgdGhpcyBt
ZXNzYWdlIG5lZWRzIHRvIGJlIGRpc3BhdGNoZWQuCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBh
c3NPd25QdHI8QXJndW1lbnQKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dh
aXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAKLSAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8
dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1lbnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93
YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBp
bmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CisgICAgICAgIEhhc2hNYXA8c3RkOjpw
YWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIE1lc3NhZ2VEZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgp
LCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBt
X3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNv
bWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpLmxlYWtQdHIoKTsKICAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwpAQCAtNjE0LDI3ICs2MTQsMjggQEAgdm9pZCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgfQogfQogCi12b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoTWVzc2FnZUlEIG1l
c3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VJ
RC5pc1N5bmMoKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlVUludDY0KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElE
KSB7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKICAgICAgICAgLy8gV2UgcmVjZWl2ZWQgYW4gaW52YWxpZCBzeW5jIG1l
c3NhZ2UuCi0gICAgICAgIGFyZ3VtZW50cy0+bWFya0ludmFsaWQoKTsKKyAgICAgICAgZGVjb2Rl
ci0+bWFya0ludmFsaWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE93blB0cjxB
cmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKHN5
bmNSZXF1ZXN0SUQpOworICAgIC8vIEZJWE1FOiBBcmd1bWVudEVuY29kZXIgc2hvdWxkIGJlIE1l
c3NhZ2VFbmNvZGVyIGhlcmUuCisgICAgT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNv
ZGVyID0gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZSgiIiwgIiIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50
LgotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5RW5jb2Rlcik7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSh0aGlzLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBG
SVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBT
eW5jTWVzc2FnZUVycm9yLgotICAgIEFTU0VSVCghYXJndW1lbnRzLT5pc0ludmFsaWQoKSk7Cisg
ICAgQVNTRVJUKCFkZWNvZGVyLT5pc0ludmFsaWQoKSk7CiAKICAgICBpZiAocmVwbHlFbmNvZGVy
KQotICAgICAgICBzZW5kU3luY1JlcGx5KHJlcGx5RW5jb2Rlci5yZWxlYXNlKCkpOworICAgICAg
ICBzZW5kU3luY1JlcGx5KGFkb3B0UHRyKHN0YXRpY19jYXN0PE1lc3NhZ2VFbmNvZGVyKj4ocmVw
bHlFbmNvZGVyLmxlYWtQdHIoKSkpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9T
ZW5kU3luY01lc3NhZ2UoKQpAQCAtNjUzLDE4ICs2NTQsMTggQEAgdm9pZCBDb25uZWN0aW9uOjpl
bnF1ZXVlSW5jb21pbmdNZXNzYWdlKEluY29taW5nTWVzc2FnZSYgaW5jb21pbmdNZXNzYWdlKQog
ICAgIG1fY2xpZW50UnVuTG9vcC0+ZGlzcGF0Y2goV1RGOjpiaW5kKCZDb25uZWN0aW9uOjpkaXNw
YXRjaE9uZU1lc3NhZ2UsIHRoaXMpKTsKIH0KIAotdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29k
ZXIpCit2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlE
LCBNZXNzYWdlRGVjb2RlciogZGVjb2RlcikKIHsKICAgICAvLyBUcnkgdGhlIG1lc3NhZ2UgcmVj
ZWl2ZXIgbWFwIGZpcnN0LgotICAgIGlmIChtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBhcmd1bWVudERlY29kZXIpKQorICAgIGlmIChtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKHRoaXMs
IG1lc3NhZ2VJRCwgYXJndW1lbnREZWNvZGVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UodGhpcywgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJiBtZXNzYWdlKQogewotICAgIE93blB0cjxB
cmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IG1lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygpOwor
ICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gYXJndW1lbnRzID0gbWVzc2FnZS5yZWxlYXNlQXJn
dW1lbnRzKCk7CiAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGNsaWVudCwgcmV0dXJuLiBXZSBkbyB0
aGlzIGFmdGVyIGNhbGxpbmcgcmVsZWFzZUFyZ3VtZW50cyBzbyB0aGF0CiAgICAgLy8gdGhlIEFy
Z3VtZW50RGVjb2RlciBtZXNzYWdlIHdpbGwgYmUgZnJlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY1MmJjZmUzMGQ1OGYxN2QzZjA0NDlk
N2I3YWQxODk1Y2QyYTU3MGYuLjczMTNiN2ZiYjJmODBkMzkwNDcxZWJkNGZhNTQzYmFmNmFhY2Fl
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBA
IC0yOCwxNSArMjgsMTYgQEAKICNpZm5kZWYgQ29ubmVjdGlvbl9oCiAjZGVmaW5lIENvbm5lY3Rp
b25faAogCi0jaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCi0jaW5jbHVkZSAiQXJndW1lbnRF
bmNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29k
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgogI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KQEAg
LTE5MCw5ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBz
ZW5kU3luYyhjb25zdCBUJiBtZXNzYWdlLCBjb25zdCB0eXBlbmFtZSBUOjpSZXBseSYgcmVwbHks
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGRvdWJsZSB0aW1lb3V0ID0gTm9UaW1lb3V0LCB1bnNp
Z25lZCBzeW5jU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3Vi
bGUgdGltZW91dCk7CiAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gY3JlYXRlU3lu
Y01lc3NhZ2VBcmd1bWVudEVuY29kZXIodWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpOwotICAgIGJvb2wgc2VuZE1lc3NhZ2UoTWVzc2FnZUlELCBQYXNzT3du
UHRyPEFyZ3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKLSAg
ICBib29sIHNlbmRTeW5jUmVwbHkoUGFzc093blB0cjxBcmd1bWVudEVuY29kZXI+KTsKKyAgICBQ
YXNzT3duUHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoY29uc3Qg
Q1N0cmluZyYgbWVzc2FnZVJlY2VpdmVyTmFtZSwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKKyAgICBi
b29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIHVu
c2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKKyAgICBib29sIHNlbmRTeW5jUmVwbHkoUGFz
c093blB0cjxNZXNzYWdlRW5jb2Rlcj4pOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIHZhcmlhbnRz
IG9mIHNlbmQsIHNlbmRTeW5jIGFuZCB3YWl0Rm9yIGFyZSBhbGwgZGVwcmVjYXRlZC4KICAgICAv
LyBBbGwgY2xpZW50cyBzaG91bGQgbW92ZSB0byB0aGUgb3ZlcmxvYWRzIHRoYXQgdGFrZSBhIG1l
c3NhZ2UgdHlwZS4KQEAgLTI0Miw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIH07CiAKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIE1lc3NhZ2U8QXJndW1lbnRFbmNvZGVyPiBPdXRnb2luZ01lc3NhZ2U7
CisgICAgdHlwZWRlZiBNZXNzYWdlPE1lc3NhZ2VFbmNvZGVyPiBPdXRnb2luZ01lc3NhZ2U7CiAK
IHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGll
bnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKQEAgLTI1MSwxNCArMjUyLDE0
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KICAgICAKLSAgICBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gd2FpdEZvck1l
c3NhZ2UoTWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7
CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlE
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCk7CiAgICAgCi0gICAgUGFz
c093blB0cjxBcmd1bWVudERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQsIHVpbnQ2
NF90IHN5bmNSZXF1ZXN0SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiwgZG91YmxlIHRp
bWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAgICBQYXNzT3duUHRyPEFyZ3Vt
ZW50RGVjb2Rlcj4gd2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3Vi
bGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRGbGFncyk7CisgICAgUGFzc093blB0cjxNZXNz
YWdlRGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRCwgdWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4sIGRvdWJsZSB0aW1lb3V0LCB1bnNpZ25l
ZCBzeW5jU2VuZEZsYWdzID0gMCk7CisgICAgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gd2Fp
dEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBkb3VibGUgdGltZW91dCwgdW5z
aWduZWQgc3luY1NlbmRGbGFncyk7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24g
d29yayBxdWV1ZS4KLSAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoTWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4pOwotICAgIHZvaWQgcHJvY2Vzc0luY29taW5nU3lu
Y1JlcGx5KFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPik7CisgICAgdm9pZCBwcm9jZXNzSW5j
b21pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4pOworICAg
IHZvaWQgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFBhc3NPd25QdHI8TWVzc2FnZURlY29kZXI+
KTsKIAogICAgIHZvaWQgYWRkUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVudCopOwog
ICAgIHZvaWQgcmVtb3ZlUXVldWVDbGllbnRPbldvcmtRdWV1ZShRdWV1ZUNsaWVudCopOwpAQCAt
MjY2LDE3ICsyNjcsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNlbmRPdXRnb2luZ01lc3Nh
Z2VzKCkgY29uc3Q7CiAgICAgYm9vbCBwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZW5kT3V0Z29pbmdNZXNzYWdlcygpOwotICAgIGJvb2wgc2VuZE91
dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPik7Cisg
ICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdl
RW5jb2Rlcj4pOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAgICAgCi0gICAgdHlw
ZWRlZiBNZXNzYWdlPEFyZ3VtZW50RGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOworICAgIHR5cGVk
ZWYgTWVzc2FnZTxNZXNzYWdlRGVjb2Rlcj4gSW5jb21pbmdNZXNzYWdlOwogCiAgICAgLy8gQ2Fs
bGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNwYXRjaENvbm5lY3Rpb25E
aWRDbG9zZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPbmVNZXNzYWdlKCk7CiAgICAgdm9pZCBkaXNw
YXRjaE1lc3NhZ2UoSW5jb21pbmdNZXNzYWdlJik7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uo
TWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpc3BhdGNoU3luY01lc3Nh
Z2UoTWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZShNZXNzYWdlSUQsIE1lc3NhZ2VEZWNvZGVyKik7CisgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNz
YWdlKE1lc3NhZ2VJRCwgTWVzc2FnZURlY29kZXIqKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRT
eW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAt
MzEyLDcgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fd2Fp
dEZvck1lc3NhZ2VDb25kaXRpb247CiAgICAgTXV0ZXggbV93YWl0Rm9yTWVzc2FnZU11dGV4Owot
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3VtZW50RGVjb2Rl
cio+IG1fd2FpdEZvck1lc3NhZ2VNYXA7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQs
IHVpbnQ2NF90PiwgTWVzc2FnZURlY29kZXIqPiBtX3dhaXRGb3JNZXNzYWdlTWFwOwogCiAgICAg
Ly8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2FpdGluZyBvbiBh
IHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTMyMSw3ICszMjIsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSByZXBseSBkZWNvZGVyLCB3aWxsIGJlIG51bGwg
aWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN5bmMKICAgICAgICAgLy8gbWVz
c2FnZSBvbiB0aGUgb3RoZXIgc2lkZS4KLSAgICAgICAgQXJndW1lbnREZWNvZGVyKiByZXBseURl
Y29kZXI7CisgICAgICAgIE1lc3NhZ2VEZWNvZGVyKiByZXBseURlY29kZXI7CiAKICAgICAgICAg
Ly8gV2lsbCBiZSBzZXQgdG8gdHJ1ZSBvbmNlIGEgcmVwbHkgaGFzIGJlZW4gcmVjZWl2ZWQgb3Ig
YW4gZXJyb3Igb2NjdXJyZWQuCiAgICAgICAgIGJvb2wgZGlkUmVjZWl2ZVJlcGx5OwpAQCAtMzQw
LDkgKzM0MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFBh
c3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiByZWxlYXNlUmVwbHlEZWNvZGVyKCkKKyAgICAgICAg
UGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVsZWFzZVJlcGx5RGVjb2RlcigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IHJlcGx5ID0gYWRvcHRQdHIo
cmVwbHlEZWNvZGVyKTsKKyAgICAgICAgICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHkg
PSBhZG9wdFB0cihyZXBseURlY29kZXIpOwogICAgICAgICAgICAgcmVwbHlEZWNvZGVyID0gMDsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlbGVhc2UoKTsKQEAgLTM4
OCw3ICszODksNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVhZEJ1ZmZl
cjsKICAgICBPVkVSTEFQUEVEIG1fcmVhZFN0YXRlOwotICAgIE93blB0cjxBcmd1bWVudEVuY29k
ZXI+IG1fcGVuZGluZ1dyaXRlQXJndW1lbnRzOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4g
bV9wZW5kaW5nV3JpdGVFbmNvZGVyOwogICAgIE9WRVJMQVBQRUQgbV93cml0ZVN0YXRlOwogICAg
IEhBTkRMRSBtX2Nvbm5lY3Rpb25QaXBlOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CkBAIC00MDksMjIgKzQxMCwyMiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIENvbm5lY3Rpb246OnNlbmQoY29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5h
dGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAgICBPd25Q
dHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rlcjo6Y3JlYXRlKCIiLCAi
IiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UpOwogICAgIAot
ICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdlSUQoVDo6bWVzc2FnZUlEKSwgYXJndW1lbnRF
bmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSwgbWVzc2FnZVNl
bmRGbGFncyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZFN5bmMoY29uc3QgVCYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVDo6UmVwbHkmIHJlcGx5LCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBkb3VibGUgdGltZW91dCwgdW5zaWduZWQgc3luY1NlbmRG
bGFncykKIHsKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKLSAgICBPd25QdHI8QXJn
dW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUFyZ3VtZW50
RW5jb2RlcihkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIiIsICIiLCBkZXN0
aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKICAgICAKICAgICAvLyBFbmNvZGUgdGhlIHJlc3Qg
b2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNz
YWdlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZSk7CiAKICAgICAvLyBOb3cgc2VuZCB0
aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJ
RCksIHN5bmNSZXF1ZXN0SUQsIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIHRpbWVvdXQsIHN5
bmNTZW5kRmxhZ3MpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0g
c2VuZFN5bmNNZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBzeW5jUmVxdWVzdElELCBl
bmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAgaWYgKCFyZXBs
eURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM0LDcgKzQzNSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6c2VuZFN5bmMoY29uc3QgVCYgbWVz
c2FnZSwgY29uc3QgdHlwZW5hbWUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0
aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBkb3VibGUgdGltZW91dCkKIHsKLSAgICBPd25QdHI8QXJndW1lbnREZWNvZGVyPiBkZWNvZGVy
ID0gd2FpdEZvck1lc3NhZ2UoTWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCksIGRlc3RpbmF0aW9uSUQs
IHRpbWVvdXQpOworICAgIE93blB0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JN
ZXNzYWdlKE1lc3NhZ2VJRChUOjptZXNzYWdlSUQpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsK
ICAgICBpZiAoIWRlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDQ5LDEzICs0
NTAsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGlu
bGluZSBib29sIENvbm5lY3Rpb246OmRlcHJlY2F0ZWRTZW5kU3luYyhFIG1lc3NhZ2VJRCwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgY29uc3QgVCYgYXJndW1lbnRzLCBjb25zdCBVJiByZXBseSwg
ZG91YmxlIHRpbWVvdXQpCiB7CiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAg
T3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gY3JlYXRlU3luY01lc3Nh
Z2VBcmd1bWVudEVuY29kZXIoZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CisgICAgT3du
UHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKCIi
LCAiIiwgZGVzdGluYXRpb25JRCwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IGlucHV0IGFyZ3VtZW50cy4KLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShhcmd1bWVudHMp
OworICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudHMpOwogICAgIAogICAgIC8vIE5vdyBzZW5k
IHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5LgotICAgIE93blB0cjxBcmd1bWVudERl
Y29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShNZXNzYWdlSUQobWVzc2FnZUlE
KSwgc3luY1JlcXVlc3RJRCwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSwgdGltZW91dCk7Cisg
ICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3NhZ2Uo
TWVzc2FnZUlEKG1lc3NhZ2VJRCksIHN5bmNSZXF1ZXN0SUQsIGVuY29kZXIucmVsZWFzZSgpLCB0
aW1lb3V0KTsKICAgICBpZiAoIXJlcGx5RGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIApAQCAtNDY2LDEwICs0NjcsMTAgQEAgaW5saW5lIGJvb2wgQ29ubmVjdGlvbjo6ZGVwcmVj
YXRlZFNlbmRTeW5jKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELAogdGVtcGxh
dGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgVD4KIGJvb2wgQ29ubmVjdGlvbjo6ZGVwcmVjYXRlZFNl
bmQoRSBtZXNzYWdlSUQsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIGNvbnN0IFQmIGFyZ3VtZW50
cykKIHsKLSAgICBPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudEVuY29kZXIgPSBBcmd1
bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlvbklEKTsKLSAgICBhcmd1bWVudEVuY29kZXIt
PmVuY29kZShhcmd1bWVudHMpOworICAgIE93blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9
IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIsICIiLCBkZXN0aW5hdGlvbklEKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKIAotICAgIHJldHVybiBzZW5kTWVzc2FnZShNZXNzYWdl
SUQobWVzc2FnZUlEKSwgYXJndW1lbnRFbmNvZGVyLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHNl
bmRNZXNzYWdlKE1lc3NhZ2VJRChtZXNzYWdlSUQpLCBlbmNvZGVyLnJlbGVhc2UoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBhZWYzNTI1YTY1YWViMDIy
ZDA5ZTk3MGI0MTRmY2NlYjEyZmM0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIu
aCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMg
eworCitQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKGNv
bnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlcikKK3sKKyAgICBEZXF1ZTxBdHRhY2htZW50PiBhdHRh
Y2htZW50czsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VEZWNvZGVyKGJ1ZmZlciwg
YXR0YWNobWVudHMpKTsKK30KKworUGFzc093blB0cjxNZXNzYWdlRGVjb2Rlcj4gTWVzc2FnZURl
Y29kZXI6OmNyZWF0ZShjb25zdCBEYXRhUmVmZXJlbmNlJiBidWZmZXIsIERlcXVlPEF0dGFjaG1l
bnQ+JiBhdHRhY2htZW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VEZWNv
ZGVyKGJ1ZmZlciwgYXR0YWNobWVudHMpKTsKK30KKworTWVzc2FnZURlY29kZXI6On5NZXNzYWdl
RGVjb2RlcigpCit7Cit9CisKK01lc3NhZ2VEZWNvZGVyOjpNZXNzYWdlRGVjb2Rlcihjb25zdCBE
YXRhUmVmZXJlbmNlJiBidWZmZXIsIERlcXVlPEF0dGFjaG1lbnQ+JiBhdHRhY2htZW50cykKKyAg
ICA6IEFyZ3VtZW50RGVjb2RlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBhdHRhY2ht
ZW50cykKK3sKKyAgICBDU3RyaW5nIG1lc3NhZ2VSZWNlaXZlck5hbWU7CisgICAgaWYgKCFkZWNv
ZGUobWVzc2FnZVJlY2VpdmVyTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIENTdHJpbmcg
bWVzc2FnZU5hbWU7CisgICAgaWYgKCFkZWNvZGUobWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1
cm47CisKKyAgICBkZWNvZGVVSW50NjQobV9kZXN0aW5hdGlvbklEKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0OGM5YjRiOWMyZWY1ZjFmZDlmYzdiNzJjOTQxY2Yz
NjI2ZmFlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWVzc2FnZURlY29kZXJfaAorI2RlZmluZSBNZXNzYWdlRGVjb2Rlcl9oCisKKyNpbmNsdWRl
ICJBcmd1bWVudERlY29kZXIuaCIKKworbmFtZXNwYWNlIENvcmVJUEMgeworCitjbGFzcyBEYXRh
UmVmZXJlbmNlOworCitjbGFzcyBNZXNzYWdlRGVjb2RlciA6IHB1YmxpYyBBcmd1bWVudERlY29k
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVh
dGUoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVmZmVyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxN
ZXNzYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8
QXR0YWNobWVudD4mKTsKKyAgICB2aXJ0dWFsIH5NZXNzYWdlRGVjb2RlcigpOworCitwcml2YXRl
OgorICAgIE1lc3NhZ2VEZWNvZGVyKGNvbnN0IERhdGFSZWZlcmVuY2UmIGJ1ZmZlciwgRGVxdWU8
QXR0YWNobWVudD4mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKworI2VuZGlmIC8v
IE1lc3NhZ2VEZWNvZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4NThiNmViODA2NjY0OWVkMTRhYzgw
MGMxM2Y0MWFiNzM4MjhiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKKwor
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKworUGFz
c093blB0cjxNZXNzYWdlRW5jb2Rlcj4gTWVzc2FnZUVuY29kZXI6OmNyZWF0ZShjb25zdCBDU3Ry
aW5nJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lc3NhZ2VF
bmNvZGVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKSk7
Cit9CisKK01lc3NhZ2VFbmNvZGVyOjpNZXNzYWdlRW5jb2Rlcihjb25zdCBDU3RyaW5nJiBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBjb25zdCBDU3RyaW5nJiBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBlbmNvZGUobWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgZW5j
b2RlKG1lc3NhZ2VOYW1lKTsKKyAgICBlbmNvZGUoZGVzdGluYXRpb25JRCk7Cit9CisKK01lc3Nh
Z2VFbmNvZGVyOjp+TWVzc2FnZUVuY29kZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBDb3Jl
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VF
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmE4Nzg1MGI5OWJjM2FjNTY1NDAwM2ViNzVkMGFmZTc3ZTYzNTlhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUVuY29kZXIuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZXNzYWdl
RW5jb2Rlcl9oCisjZGVmaW5lIE1lc3NhZ2VFbmNvZGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50
RW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBDb3JlSVBD
IHsKKworY2xhc3MgTWVzc2FnZUVuY29kZXIgOiBwdWJsaWMgQXJndW1lbnRFbmNvZGVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlKGNvbnN0
IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWUsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2aXJ0dWFsIH5NZXNzYWdlRW5jb2Rlcigp
OworCitwcml2YXRlOgorICAgIE1lc3NhZ2VFbmNvZGVyKGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworCisjZW5kaWYgLy8gTWVz
c2FnZUVuY29kZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VTZW5kZXIuaAppbmRleCBlMmJhMGI1NmY1YTUxM2QxMDFkZGI5MTdlYmQ2ODUwZDM5M2YyNDhm
Li43NDM4MTA1MGM3ZGQ3ZDU2YWYxYTRlMTJjMjA0ZWM5ZjYzYjM0ODZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDAsMTggKzQw
LDE4IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25z
dCBVJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogICAgIHsKLSAgICAgICAgT3du
UHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyID0gQXJndW1lbnRFbmNvZGVyOjpj
cmVhdGUoZGVzdGluYXRpb25JRCk7Ci0gICAgICAgIGFyZ3VtZW50RW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UpOworICAgICAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdl
RW5jb2Rlcjo6Y3JlYXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGVuY29kZXIt
PmVuY29kZShtZXNzYWdlKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
Kj4odGhpcyktPnNlbmRNZXNzYWdlKE1lc3NhZ2VJRChVOjptZXNzYWdlSUQpLCBhcmd1bWVudEVu
Y29kZXIucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPih0aGlzKS0+
c2VuZE1lc3NhZ2UoTWVzc2FnZUlEKFU6Om1lc3NhZ2VJRCksIGVuY29kZXIucmVsZWFzZSgpKTsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBzZW5kTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRFbmNvZGVyKQorICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlcikKICAgICB7CiAgICAgICAgIENvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBzdGF0aWNf
Y2FzdDxUKj4odGhpcyktPmNvbm5lY3Rpb24oKTsKICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24p
OwogCi0gICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZShtZXNzYWdlSUQsIGFy
Z3VtZW50RW5jb2Rlcik7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZSht
ZXNzYWdlSUQsIGVuY29kZXIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFN5bmMoY29uc3QgVSYgbWVzc2FnZSwgY29uc3QgdHlwZW5hbWUgVTo6UmVwbHkmIHJl
cGx5LCBkb3VibGUgdGltZW91dCA9IENvbm5lY3Rpb246Ok5vVGltZW91dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5k
ZXggNzI5ODlkZGEwMWFhMzFlMTlhNDQ2NjZjZWM4OGVhYzFmZTVlNzRhNS4uYzEzYjIzYmE1Yjkx
NTE0OTAzYmY3ZTdmNDIyMjA2YzZjNzRkYzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJDb3JlSVBDTWVzc2FnZUtp
bmRzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1hY2hQb3J0Lmgi
CiAjaW5jbHVkZSAiTWFjaFV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5o
PgpAQCAtMTExLDEwICsxMTIsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAg
bV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0
aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZl
ciB0byB1c2UuCi0gICAgICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2Rl
ciA9IEFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApOwotICAgICAgICBhcmd1bWVudEVuY29kZXIt
PmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OworICAgICAgICBPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBNZXNzYWdlRW5jb2Rl
cjo6Y3JlYXRlKCIiLCAiIiwgMCk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydCht
X3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCi0gICAgICAgIHNlbmRN
ZXNzYWdlKE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24pLCBh
cmd1bWVudEVuY29kZXIucmVsZWFzZSgpKTsKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlE
KENvcmVJUENNZXNzYWdlOjpJbml0aWFsaXplQ29ubmVjdGlvbiksIGVuY29kZXIucmVsZWFzZSgp
KTsKIAogICAgICAgICAvLyBTZXQgdGhlIGRlYWQgbmFtZSBoYW5kbGVyIGZvciBvdXIgc2VuZCBw
b3J0LgogICAgICAgICBpbml0aWFsaXplRGVhZE5hbWVTb3VyY2UoKTsKQEAgLTEzMCwxMCArMTMx
LDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgaWYgKG1fZXhjZXB0aW9uUG9ydCkg
ewogICAgICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3Rlck1hY2hQb3J0RXZlbnRIYW5kbGVy
KG1fZXhjZXB0aW9uUG9ydCwgV29ya1F1ZXVlOjpNYWNoUG9ydERhdGFBdmFpbGFibGUsIGJpbmQo
JkNvbm5lY3Rpb246OmV4Y2VwdGlvblNvdXJjZUV2ZW50SGFuZGxlciwgdGhpcykpOwogCi0gICAg
ICAgIE93blB0cjxBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50RW5jb2RlciA9IEFyZ3VtZW50RW5j
b2Rlcjo6Y3JlYXRlKDApOwotICAgICAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShNYWNoUG9y
dChtX2V4Y2VwdGlvblBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CisgICAgICAgIE93
blB0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciA9IE1lc3NhZ2VFbmNvZGVyOjpjcmVhdGUoIiIs
ICIiLCAwKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fZXhjZXB0aW9uUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAotICAgICAgICBzZW5kTWVzc2FnZShNZXNz
YWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQpLCBhcmd1bWVudEVuY29kZXIu
cmVsZWFzZSgpKTsKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZUlEKENvcmVJUENNZXNzYWdl
OjpTZXRFeGNlcHRpb25Qb3J0KSwgZW5jb2Rlci5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTU3LDkgKzE1OCw5IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1D
YW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQ
YXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRzKQorYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIpCiB7Ci0gICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRz
ID0gYXJndW1lbnRzLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKKyAgICBWZWN0b3I8QXR0YWNobWVu
dD4gYXR0YWNobWVudHMgPSBlbmNvZGVyLT5yZWxlYXNlQXR0YWNobWVudHMoKTsKICAgICAKICAg
ICBzaXplX3QgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMgPSAwOwogICAgIHNpemVfdCBudW1iZXJP
Zk9PTE1lbW9yeURlc2NyaXB0b3JzID0gMDsKQEAgLTE3MSwxNCArMTcyLDE0IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3du
UHRyPEFyZ3VtZW50RW5jCiAgICAgICAgICAgICBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3Jz
Kys7CiAgICAgfQogICAgIAotICAgIHNpemVfdCBtZXNzYWdlU2l6ZSA9IG1hY2hNZXNzYWdlU2l6
ZShhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgbnVtYmVyT2ZQb3J0RGVzY3JpcHRvcnMsIG51bWJl
ck9mT09MTWVtb3J5RGVzY3JpcHRvcnMpOworICAgIHNpemVfdCBtZXNzYWdlU2l6ZSA9IG1hY2hN
ZXNzYWdlU2l6ZShlbmNvZGVyLT5idWZmZXJTaXplKCksIG51bWJlck9mUG9ydERlc2NyaXB0b3Jz
LCBudW1iZXJPZk9PTE1lbW9yeURlc2NyaXB0b3JzKTsKICAgICBjaGFyIGJ1ZmZlcltpbmxpbmVN
ZXNzYWdlTWF4U2l6ZV07CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBmYWxzZTsKICAg
ICBpZiAobWVzc2FnZVNpemUgPiBzaXplb2YoYnVmZmVyKSkgewogICAgICAgICBtZXNzYWdlQm9k
eUlzT09MID0gdHJ1ZTsKIAotICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChh
cmd1bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgTUFDSF9NU0dfVklS
VFVBTF9DT1BZLCBmYWxzZSkpOworICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVu
dChlbmNvZGVyLT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCBNQUNIX01TR19WSVJU
VUFMX0NPUFksIGZhbHNlKSk7CiAgICAgICAgIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMr
KzsKICAgICAgICAgbWVzc2FnZVNpemUgPSBtYWNoTWVzc2FnZVNpemUoMCwgbnVtYmVyT2ZQb3J0
RGVzY3JpcHRvcnMsIG51bWJlck9mT09MTWVtb3J5RGVzY3JpcHRvcnMpOwogICAgIH0KQEAgLTIz
Myw3ICsyMzQsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogCiAgICAgLy8gQ29weSB0aGUg
ZGF0YSBpZiBpdCBpcyBub3QgYmVpbmcgc2VudCBvdXQtb2YtbGluZS4KICAgICBpZiAoIW1lc3Nh
Z2VCb2R5SXNPT0wpCi0gICAgICAgIG1lbWNweShtZXNzYWdlRGF0YSwgYXJndW1lbnRzLT5idWZm
ZXIoKSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOworICAgICAgICBtZW1jcHkobWVzc2FnZURh
dGEsIGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVyLT5idWZmZXJTaXplKCkpOwogCiAgICAgQVNT
RVJUKG1fc2VuZFBvcnQpOwogICAgIApAQCAtMjUxLDE0ICsyNTIsMTQgQEAgdm9pZCBDb25uZWN0
aW9uOjppbml0aWFsaXplRGVhZE5hbWVTb3VyY2UoKQogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJl
Z2lzdGVyTWFjaFBvcnRFdmVudEhhbmRsZXIobV9zZW5kUG9ydCwgV29ya1F1ZXVlOjpNYWNoUG9y
dERlYWROYW1lTm90aWZpY2F0aW9uLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xv
c2UsIHRoaXMpKTsKIH0KIAotc3RhdGljIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBjcmVh
dGVBcmd1bWVudERlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKK3N0YXRpYyBQYXNz
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogewogICAgIGlmICghKGhlYWRlci0+bXNnaF9iaXRzICYgTUFDSF9NU0dI
X0JJVFNfQ09NUExFWCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHNpbXBsZSBtZXNzYWdlLgot
ICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNo
X21zZ19oZWFkZXJfdCk7CiAgICAgICAgIHVpbnQ4X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihoZWFkZXIgKyAxKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQXJndW1lbnREZWNvZGVyKGJvZHksIGJvZHlTaXplKSk7CisgICAgICAgIHNpemVfdCBi
b2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsK
KworICAgICAgICByZXR1cm4gTWVzc2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKGJv
ZHksIGJvZHlTaXplKSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVh
ZGVyLT5tc2doX2lkICYgTWVzc2FnZUJvZHlJc09PTDsKQEAgLTMwMywyMiArMzA0LDIyIEBAIHN0
YXRpYyBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gY3JlYXRlQXJndW1lbnREZWNvZGVyKG1h
Y2hfbXNnX2hlYWRlcl90KiBoZWFkCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1lc3NhZ2VCb2R5QXR0YWNobWVudC5hZGRyZXNzKCkpOwogICAg
ICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gbWVzc2FnZUJvZHlBdHRhY2htZW50LnNpemUo
KTsKIAotICAgICAgICBBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50RGVjb2RlcjsKKyAgICAgICAg
T3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyOwogCiAgICAgICAgIGlmIChhdHRhY2htZW50
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1lbnRE
ZWNvZGVyKG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUpOworICAgICAgICAgICAgZGVjb2Rl
ciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVz
c2FnZUJvZHlTaXplKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50RGVjb2Rl
ciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgYXR0
YWNobWVudHMpOworICAgICAgICAgICAgZGVjb2RlciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUo
RGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplKSwgYXR0YWNobWVudHMp
OwogCiAgICAgICAgIHZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRf
Y2FzdDx2bV9hZGRyZXNzX3Q+KG1lc3NhZ2VCb2R5QXR0YWNobWVudC5hZGRyZXNzKCkpLCBtZXNz
YWdlQm9keUF0dGFjaG1lbnQuc2l6ZSgpKTsKIAotICAgICAgICByZXR1cm4gYWRvcHRQdHIoYXJn
dW1lbnREZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZXIucmVsZWFzZSgpOwogICAgIH0K
IAogICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gZGVzY3JpcHRvckRhdGE7CiAgICAgc2l6ZV90
IG1lc3NhZ2VCb2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gKGRlc2NyaXB0b3JEYXRhIC0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyKSk7CiAKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFSZWZlcmVu
Y2UobWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSksIGF0dGFjaG1lbnRzKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTM2MCw4ICszNjEsOCBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBNZXNzYWdlSUQg
bWVzc2FnZUlEID0gTWVzc2FnZUlEOjpmcm9tSW50KGhlYWRlci0+bXNnaF9pZCk7Ci0gICAgT3du
UHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzID0gY3JlYXRlQXJndW1lbnREZWNvZGVyKGhl
YWRlcik7Ci0gICAgQVNTRVJUKGFyZ3VtZW50cyk7CisgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVy
PiBkZWNvZGVyID0gY3JlYXRlTWVzc2FnZURlY29kZXIoaGVhZGVyKTsKKyAgICBBU1NFUlQoZGVj
b2Rlcik7CiAKICAgICBpZiAobWVzc2FnZUlEID09IE1lc3NhZ2VJRChDb3JlSVBDTWVzc2FnZTo6
SW5pdGlhbGl6ZUNvbm5lY3Rpb24pKSB7CiAgICAgICAgIEFTU0VSVChtX2lzU2VydmVyKTsKQEAg
LTM2OSw3ICszNzAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRs
ZXIoKQogICAgICAgICBBU1NFUlQoIW1fc2VuZFBvcnQpOwogCiAgICAgICAgIE1hY2hQb3J0IHBv
cnQ7Ci0gICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUocG9ydCkpIHsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocG9ydCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEaXNjb25u
ZWN0LgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zOTAsMTQgKzM5MSwxNCBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogCiAgICAgaWYg
KG1lc3NhZ2VJRCA9PSBNZXNzYWdlSUQoQ29yZUlQQ01lc3NhZ2U6OlNldEV4Y2VwdGlvblBvcnQp
KSB7CiAgICAgICAgIE1hY2hQb3J0IGV4Y2VwdGlvblBvcnQ7Ci0gICAgICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUoZXhjZXB0aW9uUG9ydCkpCisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGV4Y2VwdGlvblBvcnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHNldE1hY2hF
eGNlcHRpb25Qb3J0KGV4Y2VwdGlvblBvcnQucG9ydCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMucmVs
ZWFzZSgpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJRCwgZGVjb2Rlci5y
ZWxlYXNlKCkpOwogfSAgICAKIAogdm9pZCBDb25uZWN0aW9uOjpleGNlcHRpb25Tb3VyY2VFdmVu
dEhhbmRsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjM3NGYwMzIzYmFmYTFiZjkxY2FhZjZmY2Nk
ZjkxYjIyYzMxODI0OS4uMmRmNjE2NDFmNzcwOWZhNjdiMjQ3ZWY0NDE3MzcwNDc5YTVmMmNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2lu
Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTI4MiwxMyArMjgy
LDEzIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdl
SW5mby5pc01lc3NhZ2VCb2R5T09MKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBBcmd1bWVu
dERlY29kZXIqIGFyZ3VtZW50RGVjb2RlcjsKKyAgICBPd25QdHI8TWVzc2FnZURlY29kZXI+IGRl
Y29kZXI7CiAgICAgaWYgKGF0dGFjaG1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgYXJndW1lbnRE
ZWNvZGVyID0gbmV3IEFyZ3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSk7CisgICAgICAgIGRlY29kZXIgPSBNZXNzYWdlRGVjb2Rlcjo6Y3JlYXRlKERhdGFS
ZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpKTsKICAgICBlbHNl
Ci0gICAgICAgIGFyZ3VtZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJv
ZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgZGVjb2Rl
ciA9IE1lc3NhZ2VEZWNvZGVyOjpjcmVhdGUoRGF0YVJlZmVyZW5jZShtZXNzYWdlQm9keSwgbWVz
c2FnZUluZm8uYm9keVNpemUoKSksIGF0dGFjaG1lbnRzKTsKIAotICAgIHByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2UobWVzc2FnZUluZm8ubWVzc2FnZUlEKCksIGFkb3B0UHRyKGFyZ3VtZW50RGVjb2Rl
cikpOworICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UobWVzc2FnZUluZm8ubWVzc2FnZUlEKCks
IGRlY29kZXIucmVsZWFzZSgpKTsKIAogICAgIGlmIChtX3JlYWRCdWZmZXJTaXplID4gbWVzc2Fn
ZUxlbmd0aCkgewogICAgICAgICBtZW1tb3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1
ZmZlci5kYXRhKCkgKyBtZXNzYWdlTGVuZ3RoLCBtX3JlYWRCdWZmZXJTaXplIC0gbWVzc2FnZUxl
bmd0aCk7CkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNl
bmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gbV9pc0Nvbm5lY3RlZDsKIH0K
IAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudHMpCitib29sIENvbm5lY3Rp
b246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxN
ZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKICNpZiBQTEFURk9STShRVCkKICAgICBBU1NFUlQo
bV9zb2NrZXROb3RpZmllcik7CkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1l
bnRFbmMKIAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRhY2ht
ZW50TWF4QW1vdW50ICogc2l6ZW9mKHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFjaG1l
bnRzRml0VG9NZXNzYWdlSW5saW5lKTsKIAotICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2ht
ZW50cyA9IGFyZ3VtZW50cy0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CisgICAgVmVjdG9yPEF0dGFj
aG1lbnQ+IGF0dGFjaG1lbnRzID0gZW5jb2Rlci0+cmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAg
QXR0YWNobWVudFJlc291cmNlR3VhcmQ8VmVjdG9yPEF0dGFjaG1lbnQ+LCBWZWN0b3I8QXR0YWNo
bWVudD46Oml0ZXJhdG9yPiBhdHRhY2hlbWVudERpc3Bvc2VyKGF0dGFjaG1lbnRzKTsKIAogICAg
IGlmIChhdHRhY2htZW50cy5zaXplKCkgPiAoYXR0YWNobWVudE1heEFtb3VudCAtIDEpKSB7CkBA
IC00NTcsMTAgKzQ1NywxMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uo
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTWVzc2FnZUluZm8gbWVzc2FnZUluZm8obWVzc2FnZUlE
LCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgpKTsKLSAgICBzaXpl
X3QgbWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdlSW5mbykgKyAoYXR0
YWNobWVudHMuc2l6ZSgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBhcmd1bWVudHMtPmJ1
ZmZlclNpemUoKTsKLSAgICBpZiAobWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA+IG1lc3NhZ2VN
YXhTaXplICYmIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4gb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpKTsKKyAgICBNZXNzYWdlSW5mbyBtZXNzYWdl
SW5mbyhtZXNzYWdlSUQsIGVuY29kZXItPmJ1ZmZlclNpemUoKSwgYXR0YWNobWVudHMuc2l6ZSgp
KTsKKyAgICBzaXplX3QgbWVzc2FnZVNpemVXaXRoQm9keUlubGluZSA9IHNpemVvZihtZXNzYWdl
SW5mbykgKyAoYXR0YWNobWVudHMuc2l6ZSgpICogc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSkgKyBl
bmNvZGVyLT5idWZmZXJTaXplKCk7CisgICAgaWYgKG1lc3NhZ2VTaXplV2l0aEJvZHlJbmxpbmUg
PiBtZXNzYWdlTWF4U2l6ZSAmJiBlbmNvZGVyLT5idWZmZXJTaXplKCkpIHsKKyAgICAgICAgUmVm
UHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpjcmVhdGUoZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKICAgICAgICAgaWYgKCFvb2xN
ZXNzYWdlQm9keSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDcwLDcgKzQ3MCw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAKICAgICAgICAgbWVzc2FnZUluZm8uc2V0TWVz
c2FnZUJvZHlPT0woKTsKIAotICAgICAgICBtZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwg
YXJndW1lbnRzLT5idWZmZXIoKSwgYXJndW1lbnRzLT5idWZmZXJTaXplKCkpOworICAgICAgICBt
ZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwgZW5jb2Rlci0+YnVmZmVyKCksIGVuY29kZXIt
PmJ1ZmZlclNpemUoKSk7CiAKICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKGhhbmRsZS5yZWxl
YXNlVG9BdHRhY2htZW50KCkpOwogICAgIH0KQEAgLTU0MCw5ICs1NDAsOSBAQCBib29sIENvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0
cjxBcmd1bWVudEVuYwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAKLSAgICBpZiAoIW1l
c3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSAmJiBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSkg
ewotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGFyZ3VtZW50cy0+YnVmZmVyKCkpOwotICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVu
ID0gYXJndW1lbnRzLT5idWZmZXJTaXplKCk7CisgICAgaWYgKCFtZXNzYWdlSW5mby5pc01lc3Nh
Z2VCb2R5T09MKCkgJiYgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKSB7CisgICAgICAgIGlvdltpb3ZM
ZW5ndGhdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5jb2Rlci0+YnVmZmVy
KCkpOworICAgICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gZW5jb2Rlci0+YnVmZmVyU2l6
ZSgpOwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggZjUxYWQw
NzlhYjcwN2Y3YmJhMGUwYTU4OWE0MGFhM2VmZDc0MjE5NS4uYzkxZTdjMzMxNTQzZTM1YTYzNjA4
YmNlN2U0NTE2Y2NmYmM1YWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJBcmd1
bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJCaW5hcnlTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0x
NzIsNyArMTcyLDggQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKIAogICAg
ICAgICAgICAgdW5zaWduZWQgbWVzc2FnZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihtX3JlYWRCdWZmZXIuZGF0YSgpICsgcmVhbEJ1ZmZlclNpemUpOwogCi0gICAgICAgICAgICBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3NhZ2VJRDo6ZnJvbUludChtZXNzYWdlSUQpLCBhZG9w
dFB0cihuZXcgQXJndW1lbnREZWNvZGVyKG1fcmVhZEJ1ZmZlci5kYXRhKCksIHJlYWxCdWZmZXJT
aXplKSkpOworICAgICAgICAgICAgT3duUHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gTWVz
c2FnZURlY29kZXI6OmNyZWF0ZShEYXRhUmVmZXJlbmNlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIHJl
YWxCdWZmZXJTaXplKSk7CisgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKE1lc3Nh
Z2VJRDo6ZnJvbUludChtZXNzYWdlSUQpLCBkZWNvZGVyLnJlbGVhc2UoKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGaW5kIG91dCB0aGUgc2l6ZSBvZiB0aGUgbmV4dCBtZXNzYWdlIGluIHRo
ZSBwaXBlIChpZiB0aGVyZSBpcyBvbmUpIHNvIHRoYXQgd2UgY2FuIHJlYWQKQEAgLTI0Nyw5ICsy
NDgsOSBAQCB2b2lkIENvbm5lY3Rpb246OndyaXRlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgLy8gVGhlIHBlbmRpbmcgd3JpdGUgaGFz
IGZpbmlzaGVkLCBzbyB3ZSBhcmUgbm93IGRvbmUgd2l0aCBpdHMgYXJndW1lbnRzLiBDbGVhcmlu
ZyB0aGlzIG1lbWJlcgorICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hlZCwgc28g
d2UgYXJlIG5vdyBkb25lIHdpdGggaXRzIGVuY29kZXIuIENsZWFyaW5nIHRoaXMgbWVtYmVyCiAg
ICAgLy8gd2lsbCBhbGxvdyB1cyB0byBzZW5kIG1lc3NhZ2VzIGFnYWluLgotICAgIG1fcGVuZGlu
Z1dyaXRlQXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICBtX3BlbmRpbmdXcml0ZUVuY29kZXIgPSBu
dWxscHRyOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIHBlbmRpbmcgd3JpdGUgaGFzIGZpbmlzaGVk
LCB3ZSBjYW4gdHJ5IHRvIHNlbmQgYSBuZXcgbWVzc2FnZS4KICAgICBzZW5kT3V0Z29pbmdNZXNz
YWdlcygpOwpAQCAtMjc0LDI0ICsyNzUsMjQgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNh
blNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKIHsKICAgICAvLyBXZSBvbmx5IGFsbG93IHNl
bmRpbmcgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGltZS4gSWYgd2Ugd2FudGVkIHRv
IHNlbmQgbW9yZSB0aGFuIG9uZQogICAgIC8vIGF0IG9uY2UsIHdlJ2QgaGF2ZSB0byB1c2UgbXVs
dGlwbGUgT1ZFUkxBUFBFRCBzdHJ1Y3R1cmVzIGFuZCBob2xkIG9udG8gbXVsdGlwbGUgcGVuZGlu
ZwotICAgIC8vIEFyZ3VtZW50RW5jb2RlcnMgKG9uZSBvZiBlYWNoIGZvciBlYWNoIHNpbXVsdGFu
ZW91cyBhc3luY2hyb25vdXMgbWVzc2FnZSkuCi0gICAgcmV0dXJuICFtX3BlbmRpbmdXcml0ZUFy
Z3VtZW50czsKKyAgICAvLyBNZXNzYWdlRW5jb2RlcnMgKG9uZSBvZiBlYWNoIGZvciBlYWNoIHNp
bXVsdGFuZW91cyBhc3luY2hyb25vdXMgbWVzc2FnZSkuCisgICAgcmV0dXJuICFtX3BlbmRpbmdX
cml0ZUVuY29kZXI7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShN
ZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRz
KQorYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdl
SUQsIFBhc3NPd25QdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiB7Ci0gICAgQVNTRVJUKCFt
X3BlbmRpbmdXcml0ZUFyZ3VtZW50cyk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdXcml0ZUVuY29k
ZXIpOwogCiAgICAgLy8gSnVzdCBiYWlsIGlmIHRoZSBoYW5kbGUgaGFzIGJlZW4gY2xvc2VkLgog
ICAgIGlmIChtX2Nvbm5lY3Rpb25QaXBlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSBwdXQgdGhlIG1lc3NhZ2UgSUQgbGFzdC4KLSAg
ICBhcmd1bWVudHMtPmVuY29kZVVJbnQzMihtZXNzYWdlSUQudG9JbnQoKSk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlVUludDMyKG1lc3NhZ2VJRC50b0ludCgpKTsKIAogICAgIC8vIFdyaXRlIHRoZSBv
dXRnb2luZyBtZXNzYWdlLgogCi0gICAgaWYgKDo6V3JpdGVGaWxlKG1fY29ubmVjdGlvblBpcGUs
IGFyZ3VtZW50cy0+YnVmZmVyKCksIGFyZ3VtZW50cy0+YnVmZmVyU2l6ZSgpLCAwLCAmbV93cml0
ZVN0YXRlKSkgeworICAgIGlmICg6OldyaXRlRmlsZShtX2Nvbm5lY3Rpb25QaXBlLCBlbmNvZGVy
LT5idWZmZXIoKSwgZW5jb2Rlci0+YnVmZmVyU2l6ZSgpLCAwLCAmbV93cml0ZVN0YXRlKSkgewog
ICAgICAgICAvLyBXZSBzdWNjZXNzZnVsbHkgc2VudCB0aGlzIG1lc3NhZ2UuCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMwOSw5ICszMTAsOSBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVu
dEVuYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gVGhlIG1lc3NhZ2Ug
d2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgYXJndW1lbnRzIHNvIHRoYXQgdGhleSB3
b24ndCBiZSBkZXN0cm95ZWQKKyAgICAvLyBUaGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgc29vbi4g
SG9sZCBvbnRvIHRoZSBlbmNvZGVyIHNvIHRoYXQgaXQgd29uJ3QgYmUgZGVzdHJveWVkCiAgICAg
Ly8gYmVmb3JlIHRoZSB3cml0ZSBjb21wbGV0ZXMuCi0gICAgbV9wZW5kaW5nV3JpdGVBcmd1bWVu
dHMgPSBhcmd1bWVudHM7CisgICAgbV9wZW5kaW5nV3JpdGVFbmNvZGVyID0gZW5jb2RlcjsKIAog
ICAgIC8vIFdlIGNhbiBvbmx5IHNlbmQgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGlt
ZSAoc2VlIGNvbW1lbnQgaW4gcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcykuCiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwNjcxYTIzYzBi
MmRjOTI3MTA0NmJjOGZmN2YxZjc0OWE5OWZiZDc5Li5hZDY2OTg4MjhkMzFmOTkxODgxZmE2Y2E4
YjZlY2IxYzEwM2QxNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTEyLDcg
KzExMiw3IEBAIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRyb2xsZXJQcm94eSB7CiAgICAgU2V0TGF5
ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCBsYXllckhvc3RpbmdNb2RlKQogI2VuZGlmCiAKLSAgICAj
IFJldHVybiBhIHNuYXBzaG90IG9mIHRoZSBwbHVnaW4KKyAgICAjIFJldHVybiBhIHNuYXBzaG90
IG9mIHRoZSBwbHVnaW4uCiAgICAgU25hcHNob3QoKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBiYWNraW5nU3RvcmVIYW5kbGUpCiAgICAgCiAgICAgIyBTZW50IHdoZW4gc3Rv
cmFnZSBibG9ja2luZyBwb2xpY3kgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzLnB5CmluZGV4IGM4YTBhYjkyYWI5MGJkN2Y3ZWQ3MjM1ZTY5MGQzYjQ4ODAy
OWE4NTIuLjk3NDgyM2Q5MzZiYzIyYTFkNjYwMDk4YzI1MTBiNjMxMjYyNDE3OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKQEAgLTIzMCw3ICsyMzAsNyBA
QCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgIGZv
ciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgogICAgICAgICBpZiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZRURfQVRU
UklCVVRFKToKICAgICAgICAgICAgIGhlYWRlcnMuYWRkKCc8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+JykKLSAgICAgICAgICAgIHR5cGVzX2J5X25hbWVzcGFjZVsnQ29yZUlQQyddLnVwZGF0
ZShbJ0FyZ3VtZW50RW5jb2RlcicsICdDb25uZWN0aW9uJ10pCisgICAgICAgICAgICB0eXBlc19i
eV9uYW1lc3BhY2VbJ0NvcmVJUEMnXS51cGRhdGUoWydNZXNzYWdlRW5jb2RlcicsICdDb25uZWN0
aW9uJ10pCiAKICAgICBmb3IgcGFyYW1ldGVyIGluIHJlY2VpdmVyLml0ZXJwYXJhbWV0ZXJzKCk6
CiAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXIudHlwZQpAQCAtNTAyLDcgKzUwMiw3IEBAIGRlZiBn
ZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCd7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVChtX2FyZ3VtZW50
cyk7XG4nKQogICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAgIG1fYXJndW1lbnRzLT5lbmNvZGUo
JXMpO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHkobV9hcmd1bWVudHMucmVsZWFzZSgpKTtcbicpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHko
c3RhdGljX3BvaW50ZXJfY2FzdDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1bWVudHMu
cmVsZWFzZSgpKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIG1fY29ubmVj
dGlvbiA9IG51bGxwdHI7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVy
biByZXN1bHQ7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVzdC5weSBi
L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVzdC5weQppbmRl
eCBkZDlmYmVjYzNmMTkxYjM4ZmJhYmEzOGU2MzFkODMyMTNkZTA4ZWY5Li4yYzI3YzVlZWUwMmU5
OGMxNjVhNDEzMGE5ZDM3N2IyZDI2MDQ3ZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdDIv
U2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zMjMsOCArMzIzLDggQEAg
X2V4cGVjdGVkX2hlYWRlciA9ICIiIi8qCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgQ29yZUlQQyB7Ci0gICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogICAgIGNsYXNzIENv
bm5lY3Rpb247CisgICAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiAgICAgY2xhc3MgRHVtbXlUeXBl
OwogICAgIGNsYXNzIE1hY2hQb3J0OwogfQpAQCAtNDY3LDE0ICs0NjcsMTQgQEAgc3RydWN0IEdl
dFBsdWdpbnMgOiBDb3JlSVBDOjpBcmd1bWVudHMxPGJvb2w+IHsKIHN0cnVjdCBHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA6IENvcmVJUEM6OkFyZ3VtZW50czE8Y29uc3QgV1RGOjpTdHJpbmcm
PiB7CiAgICAgc3RhdGljIGNvbnN0IEtpbmQgbWVzc2FnZUlEID0gR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25JRDsKICAgICBzdHJ1Y3QgRGVsYXllZFJlcGx5IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlbGF5ZWRSZXBseT4gewotICAgICAgICBEZWxheWVkUmVwbHkoUGFzc1JlZlB0
cjxDb3JlSVBDOjpDb25uZWN0aW9uPiwgUGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+KTsKKyAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlv
bj4sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+KTsKICAgICAgICAgfkRlbGF5
ZWRSZXBseSgpOwogCiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9u
OjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICAgICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbV9hcmd1bWVudHM7CisgICAgICAgIE93blB0cjxDb3Jl
SVBDOjpNZXNzYWdlRW5jb2Rlcj4gbV9lbmNvZGVyOwogICAgIH07CiAKICAgICB0eXBlZGVmIENv
cmVJUEM6OkFyZ3VtZW50czE8Q29yZUlQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj4gUmVwbHk7CkBA
IC00ODgsMTQgKzQ4OCwxNCBAQCBzdHJ1Y3QgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBD
b3JlSVBDOjpBcmd1bWVudHMxPGNvbnN0IFdURjo6U3RyaW5nJj4gewogc3RydWN0IFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXMgOiBDb3JlSVBDOjpBcmd1bWVudHMwIHsKICAgICBzdGF0aWMgY29uc3Qg
S2luZCBtZXNzYWdlSUQgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzSUQ7CiAgICAgc3RydWN0IERl
bGF5ZWRSZXBseSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWxheWVkUmVwbHk+IHsK
LSAgICAgICAgRGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4sIFBh
c3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPik7CisgICAgICAgIERlbGF5ZWRSZXBs
eShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+LCBQYXNzT3duUHRyPENvcmVJUEM6Ok1l
c3NhZ2VFbmNvZGVyPik7CiAgICAgICAgIH5EZWxheWVkUmVwbHkoKTsKIAogICAgICAgICBib29s
IHNlbmQoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+IG1fYXJndW1lbnRzOworICAgICAgICBPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+
IG1fZW5jb2RlcjsKICAgICB9OwogCiAgICAgdHlwZWRlZiBDb3JlSVBDOjpBcmd1bWVudHMwIFJl
cGx5OwpAQCAtNjQwLDkgKzY0MCw5IEBAIG5hbWVzcGFjZSBNZXNzYWdlcyB7CiAKIG5hbWVzcGFj
ZSBXZWJQYWdlIHsKIAotR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6
RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwg
UGFzc093blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IGFyZ3VtZW50cykKK0dldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRy
PENvcmVJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVz
c2FnZUVuY29kZXI+IGFyZ3VtZW50cykKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQot
ICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQorICAgICwgbV9lbmNvZGVyKGFyZ3VtZW50cykK
IHsKIH0KIApAQCAtNjUzLDE2ICs2NTMsMTYgQEAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseTo6fkRlbGF5ZWRSZXBseSgpCiAKIGJvb2wgR2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6c2VuZChjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9uOjpI
YW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCiB7Ci0gICAgQVNTRVJUKG1fYXJndW1lbnRzKTsKLSAg
ICBtX2FyZ3VtZW50cy0+ZW5jb2RlKGNvbm5lY3Rpb25IYW5kbGUpOwotICAgIGJvb2wgcmVzdWx0
ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KG1fYXJndW1lbnRzLnJlbGVhc2UoKSk7Cisg
ICAgQVNTRVJUKG1fZW5jb2Rlcik7CisgICAgbV9lbmNvZGVyLT5lbmNvZGUoY29ubmVjdGlvbkhh
bmRsZSk7CisgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3Rh
dGljX3BvaW50ZXJfY2FzdDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1bWVudHMucmVs
ZWFzZSgpKSk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1UZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBs
eShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIFBhc3NPd25QdHI8
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVudHMpCitUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRyPENvcmVJUEM6OkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24sIFBhc3NPd25QdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGFy
Z3VtZW50cykKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9hcmd1bWVu
dHMoYXJndW1lbnRzKQorICAgICwgbV9lbmNvZGVyKGFyZ3VtZW50cykKIHsKIH0KIApAQCAtNjcz
LDggKzY3Myw4IEBAIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6fkRlbGF5
ZWRSZXBseSgpCiAKIGJvb2wgVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5Ojpz
ZW5kKCkKIHsKLSAgICBBU1NFUlQobV9hcmd1bWVudHMpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9j
b25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KG1fYXJndW1lbnRzLnJlbGVhc2UoKSk7CisgICAgQVNT
RVJUKG1fZW5jb2Rlcik7CisgICAgYm9vbCByZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5j
UmVwbHkoc3RhdGljX3BvaW50ZXJfY2FzdDxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4obV9hcmd1
bWVudHMucmVsZWFzZSgpKSk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZVdlYlBhZ2VNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZl
U3luY1dlYlBhZ2VNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpCit2b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBhcmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mIHJlcGx5
KQogewogICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxNZXNzYWdlczo6V2ViUGFnZTo6S2luZD4o
KSkgewogICAgIGNhc2UgTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbklEOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvbm5lY3Rpb24uY3BwCmluZGV4IGQ5NDEzMThkYjI0Y2NhMzY4Y2Mx
MTdhZTJiZjFjY2E0Njc2YzE0NGEuLjk3NDNhNzhjNzcwODQ0NDkzN2I2ZjlhZTFmMTY4ZTdlMjZm
YmUxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29ubmVjdGlvbi5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBXZWJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2VOYW1lLCBBUElPYmplY3QqIG1lc3NhZ2VCb2QKICAgICBpZiAoIW1fY29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4g
bWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZSgwKTsKKyAgICBP
d25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAgICAgbWVzc2FnZURhdGEtPmVuY29kZShtZXNzYWdl
TmFtZSk7CiAgICAgZW5jb2RlTWVzc2FnZUJvZHkobWVzc2FnZURhdGEuZ2V0KCksIG1lc3NhZ2VC
b2R5KTsKIApAQCAtNjIsMTQgKzYyLDE0IEBAIHZvaWQgV2ViQ29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9kCiAKIHZv
aWQgV2ViQ29ubmVjdGlvbjo6aGFuZGxlTWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlRGF0YSkKIHsKLSAgICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbWVzc2Fn
ZURlY29kZXIobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5zaXplKCkpOworICAgIE93
blB0cjxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+IGRlY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXI6OmNyZWF0ZShtZXNzYWdlRGF0YS5kYXRhKCksIG1lc3NhZ2VEYXRhLnNpemUoKSk7
CiAKICAgICBTdHJpbmcgbWVzc2FnZU5hbWU7Ci0gICAgaWYgKCFtZXNzYWdlRGVjb2Rlci5kZWNv
ZGUobWVzc2FnZU5hbWUpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc3NhZ2VOYW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gbWVzc2FnZUJvZHk7Ci0g
ICAgaWYgKCFkZWNvZGVNZXNzYWdlQm9keSgmbWVzc2FnZURlY29kZXIsIG1lc3NhZ2VCb2R5KSkK
KyAgICBpZiAoIWRlY29kZU1lc3NhZ2VCb2R5KGRlY29kZXIuZ2V0KCksIG1lc3NhZ2VCb2R5KSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UodGhpcywg
bWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29u
bmVjdGlvbi5oCmluZGV4IDNhYmQxNGQ0NmFiOWY1ZGEzMTY0NWM5MjVlNWU3NTVlMzJlZTJkOTEu
LmIxNGQxZjM0N2M1MDBlOTg4Mjk0OTk5ZTk1YjhlN2QzNWQwZDc4MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvbm5lY3Rpb24uaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgQ29yZUlQ
QyB7CiAgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogICAgIGNsYXNzIENvbm5lY3Rpb247CiAg
ICAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKKyAgICBjbGFzcyBNZXNzYWdlRGVjb2RlcjsKKyAgICBj
bGFzcyBNZXNzYWdlRW5jb2RlcjsKICAgICBjbGFzcyBNZXNzYWdlSUQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
CmluZGV4IDRmMzkzMDc1M2NhZmMxOGMwMDA3YWQ3Y2ExYmY0ODhlZTYxNGI5MzYuLmJmYTdkM2Jj
Njg1NjgyNjVjNmUwMGM0NjM4NjgzOTJiZTgwZTFjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMjUsNiAr
MjUsOCBAQCBIRUFERVJTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0NvcmVJUENNZXNzYWdl
S2luZHMuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9EYXRhUmVmZXJlbmNlLmggXAogICAgIFBs
YXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oIFwKKyAgICBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VEZWNvZGVyLmggXAorICAgIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuaCBc
CiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlUmVjZWl2ZXIuaCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlUmVjZWl2
ZXJNYXAuaCBcCkBAIC0zODQsNiArMzg2LDggQEAgU09VUkNFUyArPSBcCiAgICAgUGxhdGZvcm0v
Q29yZUlQQy9BdHRhY2htZW50LmNwcCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9u
LmNwcCBcCiAgICAgUGxhdGZvcm0vQ29yZUlQQy9EYXRhUmVmZXJlbmNlLmNwcCBcCisgICAgUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgXAorICAgIFBsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZUVuY29kZXIuY3BwIFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VSZWNlaXZl
ck1hcC5jcHAgXAogICAgIFBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBQbGF0Zm9ybS9Nb2R1
bGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCBkM2Rh
YjZjNzQwNTg1ZTUzYjkwZWYyYjg0M2RjODFmZDcwMTkzYzdmLi5lMjE1ZTgyY2E3YTQ1YTgxOGUw
YzIyMDJhODJjZGQ3NWJiMWJkMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdl
YkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBtX21lc3NhZ2VzVG9JbmplY3RlZEJ1bmRsZVBvc3RlZFRvRW1wdHlDb250ZXh0LnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4g
PiYgbWVzc2FnZSA9IG1fbWVzc2FnZXNUb0luamVjdGVkQnVuZGxlUG9zdGVkVG9FbXB0eUNvbnRl
eHRbaV07CiAKLSAgICAgICAgICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1l
c3NhZ2VEYXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7CisgICAgICAg
ICAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBtZXNzYWdlRGF0YSA9IENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKCk7CiAKICAgICAgICAgICAgIG1lc3NhZ2VEYXRh
LT5lbmNvZGUobWVzc2FnZS5maXJzdCk7CiAgICAgICAgICAgICBtZXNzYWdlRGF0YS0+ZW5jb2Rl
KFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIobWVzc2FnZS5zZWNvbmQuZ2V0KCkpKTsKQEAg
LTYyMiw3ICs2MjIsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1
bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplYwogCiAgICAgLy8gRklYTUU6
IFJldHVybiBlYXJseSBpZiB0aGUgbWVzc2FnZSBib2R5IGNvbnRhaW5zIGFueSByZWZlcmVuY2Vz
IHRvIFdLUGFnZVJlZnMvV0tGcmFtZVJlZnMgZXRjLiBzaW5jZSB0aGV5J3JlIGxvY2FsIHRvIGEg
cHJvY2Vzcy4KIAotICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1lc3NhZ2VE
YXRhID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCk7CisgICAgT3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gbWVzc2FnZURhdGEgPSBDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI6OmNyZWF0ZSgpOwogICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUobWVzc2FnZU5hbWUpOwog
ICAgIG1lc3NhZ2VEYXRhLT5lbmNvZGUoV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtZXNz
YWdlQm9keSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGU2YmUyOGYwOTU1MDAyZjY1MDZiOWNmNTJiOTQ4OTYyN2E3NDhkOTQuLjNkYWVk
YjEzNzQyZTRkNDM0MmI0MDI3MjgyOTNmZGVlZTZhMTNiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlzY29ubmVjdCgpCiAgICAgbV9jb250ZXh0LT5kaXNjb25uZWN0
UHJvY2Vzcyh0aGlzKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyPiBhcmd1bWVudHMsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpCitib29sIFdlYlBy
b2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFz
c093blB0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlciwgdW5zaWduZWQgbWVzc2Fn
ZVNlbmRGbGFncykKIHsKICAgICAvLyBJZiB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgd2ViIHByb2Nl
c3MgdG8gbGF1bmNoLCB3ZSBuZWVkIHRvIHN0YXNoIGF3YXkgdGhlIG1lc3NhZ2VzIHNvIHdlIGNh
biBzZW5kIHRoZW0gb25jZSB3ZSBoYXZlCiAgICAgLy8gYSBDb3JlSVBDIGNvbm5lY3Rpb24uCiAg
ICAgaWYgKGlzTGF1bmNoaW5nKCkpIHsKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5k
KG1ha2VfcGFpcihDb3JlSVBDOjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlE
LCBhcmd1bWVudHMpLCBtZXNzYWdlU2VuZEZsYWdzKSk7CisgICAgICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChtYWtlX3BhaXIoQ29yZUlQQzo6Q29ubmVjdGlvbjo6T3V0Z29pbmdNZXNzYWdl
KG1lc3NhZ2VJRCwgZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6
OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8Q29y
ZUkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMsIG1l
c3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRNZXNzYWdlKG1l
c3NhZ2VJRCwgZW5jb2RlciwgbWVzc2FnZVNlbmRGbGFncyk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5Ojppc0xhdW5jaGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggNTc0ODZjN2RhYTZiNGQxZGE0N2Y2OTQ5NmZjYmM1MmFmZTM4
ZDEyNy4uNzUyNGRmMmZmNDYwMGY4ZWI1ZjY4NmMwZDFlODQ5N2QyNTEwZTBmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTMyLDcgKzEzMiw3IEBA
IHByaXZhdGU6CiAgICAgLy8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vzc1By
b3h5IG9iamVjdCB0byBiZSBmcmVlZC4KICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAotICAgIGJv
b2wgc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6OkFy
Z3VtZW50RW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlELCBQYXNzT3duUHRyPENvcmVJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyk7CiAKICAgICAvLyBDb3JlSVBDIG1l
c3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBhZGRCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRl
bUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYg
YmFja0ZvcndhcmREYXRhKTsKQEAgLTIxNiwxOSArMjE2LDE5IEBAIHByaXZhdGU6CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBUPgogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmRlcHJlY2F0
ZWRTZW5kKEUgbWVzc2FnZUlELCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBjb25zdCBUJiBhcmd1
bWVudHMpCiB7Ci0gICAgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4gYXJndW1lbnRF
bmNvZGVyID0gQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoZGVzdGluYXRpb25JRCk7
Ci0gICAgYXJndW1lbnRFbmNvZGVyLT5lbmNvZGUoYXJndW1lbnRzKTsKKyAgICBPd25QdHI8Q29y
ZUlQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcjo6
Y3JlYXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGFyZ3Vt
ZW50cyk7CiAKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKG1lc3Nh
Z2VJRCksIGFyZ3VtZW50RW5jb2Rlci5yZWxlYXNlKCksIDApOworICAgIHJldHVybiBzZW5kTWVz
c2FnZShDb3JlSVBDOjpNZXNzYWdlSUQobWVzc2FnZUlEKSwgZW5jb2Rlci5yZWxlYXNlKCksIDAp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmQo
Y29uc3QgVCYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdW5zaWduZWQgbWVzc2Fn
ZVNlbmRGbGFncykKIHsKLSAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1
bWVudEVuY29kZXIgPSBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI6OmNyZWF0ZShkZXN0aW5hdGlv
bklEKTsKLSAgICBhcmd1bWVudEVuY29kZXItPmVuY29kZShtZXNzYWdlKTsKKyAgICBPd25QdHI8
Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIgPSBDb3JlSVBDOjpNZXNzYWdlRW5jb2Rl
cjo6Y3JlYXRlKCIiLCAiIiwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UpOwogCi0gICAgcmV0dXJuIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRChUOjpt
ZXNzYWdlSUQpLCBhcmd1bWVudEVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsK
KyAgICByZXR1cm4gc2VuZE1lc3NhZ2UoQ29yZUlQQzo6TWVzc2FnZUlEKFQ6Om1lc3NhZ2VJRCks
IGVuY29kZXIucmVsZWFzZSgpLCBtZXNzYWdlU2VuZEZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjJkYWUzNTU2ZTI2ZTEwNDViNDRjNmYxM2U2OGJjZWYwYjFkMTg4MC4u
ZjJkM2I0ZDc3ODM0NDgzZTBhYTBmYTlkMTQ5MTU2NGQ5MGQ1MjJiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODEsNiArODEs
MTAgQEAKIAkJMUEyMTYxQjExMUYzNzY2NDAwOEFEMEY1IC8qIE5QUnVudGltZU9iamVjdE1hcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIxNjFB
RjExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmNwcCAqLzsgfTsKIAkJMUEy
MTYyQjAxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIxNjJBRTExRjM4OTcxMDA4
QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMUEyMTYyQjExMUYzODk3
MTAwOEFEMEY1IC8qIE5QUnVudGltZVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMTYyQUYxMUYzODk3MTAwOEFEMEY1IC8qIE5QUnVu
dGltZVV0aWxpdGllcy5oICovOyB9OworCQkxQTIzMjhGRTE2MkM4NjZBMDBEODJGN0EgLyogTWVz
c2FnZUVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEyMzI4RkMxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmNwcCAqLzsg
fTsKKwkJMUEyMzI4RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIzMjhGRDE2MkM4NjZB
MDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLzsgfTsKKwkJMUEyMzI5MDIxNjJDODY3MzAw
RDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjMyOTAwMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVj
b2Rlci5jcHAgKi87IH07CisJCTFBMjMyOTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVj
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEy
MzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmggKi87IH07CiAJCTFBMjRC
NUYyMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAv
KiBNYWNoVXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8q
IE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggKi87IH07
CiAJCTFBMjRCRUQ1MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjRCRUQzMTIwODk0RDEwMEZC
QjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLzsgfTsKQEAgLTEyMDcsNiArMTIxMSwxMCBAQAogCQkx
QTIxNjJBRjExRjM4OTcxMDA4QUQwRjUgLyogTlBSdW50aW1lVXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5QUnVudGltZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTIyRjBGRjEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQ
YWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBh
Z2VPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjJGMTAwMTI4OUZD
RDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQTIzMjhGQzE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29k
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZUVuY29k
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTIzMjhGRDE2MkM4NjZBMDBE
ODJGN0EgLyogTWVzc2FnZUVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVzc2FnZUVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUEyMzI5
MDAxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUEyMzI5MDExNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VEZWNvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjRCNUYwMTFGNTMxRTgwMEMzODI2OSAvKiBN
YWNoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
Y2hVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI0QjVGMTEx
RjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYWNoVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkTWVtb3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNzE4LDggKzI3MjYsNiBAQAogCQkJCUMwMzM3REQwMTI3QTI5ODAwMDhGRjRG
NCAvKiBXZWJXaGVlbEV2ZW50LmNwcCAqLywKIAkJCQlFMUVERkRBRDE2Mjg4OTNCMDAzOUVDREEg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCUUxRURG
REFGMTYyODg5ODEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCAqLywKLQkJCQkyOTEyMTcwNTE2MUNFNzM2MDA1N0Q0NTEgLyogVXNlckNvbnRlbnRD
b250YWluZXIuY3BwICovLAotCQkJCTI5MTIxNzA2MTYxQ0U3MzYwMDU3RDQ1MSAvKiBVc2VyQ29u
dGVudENvbnRhaW5lci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBTaGFyZWQ7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjc4Miw2ICsyNzg4LDEwIEBACiAJCQkJMUE4RUZERkQxMjUz
Q0I2RTAwRjcwNjdGIC8qIERhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBOEVGREY5MTI1M0NB
QTIwMEY3MDY3RiAvKiBEYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQzBDRTcyQUMxMjQ3RTc4RDAw
QkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCAqLywKKwkJCQkxQTIzMjkwMDE2MkM4NjczMDBEODJG
N0EgLyogTWVzc2FnZURlY29kZXIuY3BwICovLAorCQkJCTFBMjMyOTAxMTYyQzg2NzMwMEQ4MkY3
QSAvKiBNZXNzYWdlRGVjb2Rlci5oICovLAorCQkJCTFBMjMyOEZDMTYyQzg2NkEwMEQ4MkY3QSAv
KiBNZXNzYWdlRW5jb2Rlci5jcHAgKi8sCisJCQkJMUEyMzI4RkQxNjJDODY2QTAwRDgyRjdBIC8q
IE1lc3NhZ2VFbmNvZGVyLmggKi8sCiAJCQkJQkMwMzJEQTQxMEY0MzdEMTAwNThDMTVBIC8qIE1l
c3NhZ2VJRC5oICovLAogCQkJCTFBM0VFRDExMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVj
ZWl2ZXIuaCAqLywKIAkJCQkxQTNFRUQwQzE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2Vp
dmVyTWFwLmNwcCAqLywKQEAgLTQ2NzksNiArNDY4OSw4IEBACiAJCQkJNTE2MzE5OTUxNjI4OUE2
MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxRURGRTEzMTYyOENGQkQwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFBMjMyOEZGMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUEyMzI5MDMxNjJDODY3MzAwRDgyRjdBIC8qIE1lc3NhZ2VEZWNvZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU2MjIsNiArNTYzNCw4IEBACiAJCQkJNTE2MzE5OTQxNjI4
OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRURGRTEyMTYyOENGQjIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVERkUxNTE2MjhERDdBMDAzOUVD
REEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFB
MjMyOEZFMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxQTIzMjkwMjE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRGVjb2RlckFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RlY29kZXJBZGFwdGVyLmNwcAppbmRleCA3NjMzMDVjYmViOTM5NDg3MjUzZjg2ZWZiZWE5M2Rl
NTYwZWMyODhiLi42MzQxNzcyMGNjMTQxNWIxZmNiZmY0ZTc5ZTFhZDUxM2IyODE4YjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRl
ci5jcHAKQEAgLTMzLDE0ICszMywxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIERlY29kZXJB
ZGFwdGVyOjpEZWNvZGVyQWRhcHRlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplKQotICAgIDogbV9kZWNvZGVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSkKKyAgICA6IG1fZGVj
b2RlcihDb3JlSVBDOjpBcmd1bWVudERlY29kZXI6OmNyZWF0ZShidWZmZXIsIGJ1ZmZlclNpemUp
KQogeworICAgIC8vIEtlZXAgZm9ybWF0IGNvbXBhdGliaWxpdHkgYnkgZGVjb2RpbmcgYW4gdW51
c2VkIHVpbnQ2NF90IHZhbHVlCisgICAgLy8gdGhhdCB1c2VkIHRvIGJlIGVuY29kZWQgYnkgdGhl
IGFyZ3VtZW50IGVuY29kZXIuCisgICAgdWludDY0X3QgdmFsdWU7CisgICAgbV9kZWNvZGVyLT5k
ZWNvZGUodmFsdWUpOworICAgIEFTU0VSVCghdmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFw
dGVyOjpkZWNvZGVCeXRlcyhWZWN0b3I8dWludDhfdD4mIGJ5dGVzKQogewogICAgIENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoIW1fZGVjb2Rlci5kZWNvZGVW
YXJpYWJsZUxlbmd0aEJ5dGVBcnJheShkYXRhUmVmZXJlbmNlKSkKKyAgICBpZiAoIW1fZGVjb2Rl
ci0+ZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJ5dGVzID0gZGF0YVJlZmVyZW5jZS52ZWN0b3IoKTsKQEAg
LTQ5LDQyICs1NCw0MiBAQCBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVCeXRlcyhWZWN0b3I8
dWludDhfdD4mIGJ5dGVzKQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVCb29sKGJvb2wm
IHZhbHVlKQogewotICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlQm9vbCh2YWx1ZSk7CisgICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQm9vbCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZVVJbnQxNih1aW50MTZfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVj
b2Rlci5kZWNvZGVVSW50MTYodmFsdWUpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZVVJ
bnQxNih2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQzMih1aW50
MzJfdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVVSW50MzIodmFsdWUp
OworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZVVJbnQzMih2YWx1ZSk7CiB9CiAKIGJvb2wg
RGVjb2RlckFkYXB0ZXI6OmRlY29kZVVJbnQ2NCh1aW50NjRfdCYgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIG1fZGVjb2Rlci5kZWNvZGVVSW50NjQodmFsdWUpOworICAgIHJldHVybiBtX2RlY29kZXIt
PmRlY29kZVVJbnQ2NCh2YWx1ZSk7CiB9CiAKIGJvb2wgRGVjb2RlckFkYXB0ZXI6OmRlY29kZUlu
dDMyKGludDMyX3QmIHZhbHVlKQogewotICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlSW50MzIo
dmFsdWUpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUludDMyKHZhbHVlKTsKIH0KIAog
Ym9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlSW50NjQoaW50NjRfdCYgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVJbnQ2NCh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlSW50NjQodmFsdWUpOwogfQogCiBib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVG
bG9hdChmbG9hdCYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci5kZWNvZGVGbG9hdCh2
YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlRmxvYXQodmFsdWUpOwogfQogCiBi
b29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVEb3VibGUoZG91YmxlJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZURvdWJsZSh2YWx1ZSk7CisgICAgcmV0dXJuIG1fZGVjb2Rl
ci0+ZGVjb2RlRG91YmxlKHZhbHVlKTsKIH0KIAogYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2Rl
U3RyaW5nKFN0cmluZyYgdmFsdWUpCkBAIC05Niw3ICsxMDEsNyBAQCBib29sIERlY29kZXJBZGFw
dGVyOjpkZWNvZGVTdHJpbmcoU3RyaW5nJiB2YWx1ZSkKICAgICAvLyB3aXRob3V0IGJyZWFraW5n
IGVuY29kaW5nL2RlY29kaW5nIG9mIHRoZSBoaXN0b3J5IHRyZWUuCiAKICAgICB1aW50MzJfdCBs
ZW5ndGg7Ci0gICAgaWYgKCFtX2RlY29kZXIuZGVjb2RlKGxlbmd0aCkpCisgICAgaWYgKCFtX2Rl
Y29kZXItPmRlY29kZShsZW5ndGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
bGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewpAQCAtMTA2
LDIyICsxMTEsMjIgQEAgYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlU3RyaW5nKFN0cmluZyYg
dmFsdWUpCiAgICAgfQogCiAgICAgdWludDY0X3QgbGVuZ3RoSW5CeXRlczsKLSAgICBpZiAoIW1f
ZGVjb2Rlci5kZWNvZGUobGVuZ3RoSW5CeXRlcykpCisgICAgaWYgKCFtX2RlY29kZXItPmRlY29k
ZShsZW5ndGhJbkJ5dGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGxlbmd0
aEluQnl0ZXMgJSBzaXplb2YoVUNoYXIpIHx8IGxlbmd0aEluQnl0ZXMgLyBzaXplb2YoVUNoYXIp
ICE9IGxlbmd0aCkgewotICAgICAgICBtX2RlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAg
bV9kZWNvZGVyLT5tYXJrSW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKCFtX2RlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxVQ2hhcj4o
bGVuZ3RoKSkgewotICAgICAgICBtX2RlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICBpZiAoIW1f
ZGVjb2Rlci0+YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxVQ2hhcj4obGVuZ3RoKSkgewor
ICAgICAgICBtX2RlY29kZXItPm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBVQ2hhciogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghbV9kZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIp
LCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBfX2FsaWdub2YoVUNoYXIpKSkKKyAgICBpZiAoIW1f
ZGVjb2Rlci0+ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIF9fYWxpZ25vZihVQ2hhcikpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IHN0cmluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmgKaW5kZXggZDZiNGVi
NzY2YWYxNmExODI5Y2Y5NTZmZDk3NDY1ZThjOWRjNGE1ZC4uNjcxZTE4OTZmNTA5NTJlOGZjNjk2
NWQyZDA0OGI2YjNmNjkzYTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgZGVjb2RlRG91YmxlKGRvdWJsZSYpOwogICAgIHZpcnR1YWwgYm9vbCBk
ZWNvZGVTdHJpbmcoU3RyaW5nJik7CiAKLSAgICBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIgbV9k
ZWNvZGVyOworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+IG1fZGVjb2RlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAKaW5kZXggYmRhN2Q5YjcyZjJmZDAx
MjM5YTdlMzJlZDZmNDg0YTkxODUzNTJiOS4uNTRmOTM3MmQxOTk2MGU1MmJjZTk4MWE5YTBjZGU1
NjRhYzIzODVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0VuY29kZXJBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRW5jb2RlckFkYXB0ZXIuY3BwCkBAIC0zMyw4ICszMywxMSBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIEVuY29kZXJBZGFwdGVyOjpFbmNvZGVyQWRhcHRlcigpCi0gICAgOiBtX2VuY29kZXIo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoMCkpCisgICAgOiBtX2VuY29kZXIoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyOjpjcmVhdGUoKSkKIHsKKyAgICAvLyBLZWVwIGZvcm1hdCBj
b21wYXRpYmlsaXR5IGJ5IGRlY29kaW5nIGFuIHVudXNlZCB1aW50NjRfdCB2YWx1ZQorICAgIC8v
IHRoYXQgdXNlZCB0byBiZSBlbmNvZGVkIGJ5IHRoZSBhcmd1bWVudCBlbmNvZGVyLgorICAgIG1f
ZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PigwKSk7CiB9CiAKIENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UgRW5jb2RlckFkYXB0ZXI6OmRhdGFSZWZlcmVuY2UoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmY2N2VkMDIyOTEyNWU3
Mzg0OThhMGYyNjcyYzg4NGJjMzY4ODM2NS4uNDNlZDE2YjFhMzljOThkNzVlYmZlNTQxOTYwYmVh
NGViZWY5OWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0xMDExLDE0ICsxMDExLDE0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cG9zdEluamVjdGVkQnVuZGxl
TWVzc2FnZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlCiAgICAgaWYgKCFp
bmplY3RlZEJ1bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VEYXRhLmRhdGEoKSwgbWVzc2FnZURhdGEuc2l6
ZSgpKTsKKyAgICBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyPiBkZWNvZGVyID0gQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyOjpjcmVhdGUobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdl
RGF0YS5zaXplKCkpOwogCiAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lOwotICAgIGlmICghbWVzc2Fn
ZURlY29kZXIuZGVjb2RlKG1lc3NhZ2VOYW1lKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZSht
ZXNzYWdlTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxBUElPYmplY3Q+IG1l
c3NhZ2VCb2R5OwotICAgIGlmICghbWVzc2FnZURlY29kZXIuZGVjb2RlKEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VCb2R5KSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUoSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIobWVzc2FnZUJvZHkpKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3Nh
Z2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2ogYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKaW5k
ZXggZWJjZDZjYzM1ZjcwZmZmZjZlZDA4YmUzMTlhMTMxNGM3ZDYyYjA1ZC4uMDZhM2ZkZDBiYzgz
MzBhY2M2ZTM3M2Q2MTVlYmMwM2ExMzIyMjIxZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agpAQCAtNDA5NCw2ICs0MDk0LDIyIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxDb3JlSVBDXE1lc3NhZ2VEZWNvZGVyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFBsYXRmb3JtXENvcmVJUENcTWVzc2FnZURlY29kZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBsYXRmb3JtXENvcmVJUENcTWVzc2Fn
ZUVuY29kZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29yZUlQQ1xNZXNzYWdlRW5jb2Rlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1cQ29y
ZUlQQ1xNZXNzYWdlSUQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
</data>
<flag name="review"
          id="182494"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>