<?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>84130</bug_id>
          
          <creation_ts>2012-04-17 01:19:15 -0700</creation_ts>
          <short_desc>[SOUP] Add a way to register custom uri schemes in WebKit2</short_desc>
          <delta_ts>2012-04-27 00:13:04 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84133</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603854</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 01:19:15 -0700</bug_when>
    <thetext>In WebKit2 the soup session and all its features are in the WebProcess, so we can let apps add their own features to the session to implement things like we do in WebKit1. In order to allow applications to register their own uri schemes, we need to implement SoupRequest feature ni the web process and provide IPC mesassages to register schemes and handle uri scheme requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603862</commentid>
    <comment_count>1</comment_count>
      <attachid>137488</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 01:49:23 -0700</bug_when>
    <thetext>Created attachment 137488
Patch

This patch introduces new C API for ports using soup. It will be tested by GTK+ unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603864</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 01:53:21 -0700</bug_when>
    <thetext>Attachment 137488 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/WT...&quot; exit_code: 1
Source/WTF/wtf/gobject/GRefPtr.h:211:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/gobject/GRefPtr.h:212:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 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>603866</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 01:54:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 137488 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/WT...&quot; exit_code: 1
&gt; Source/WTF/wtf/gobject/GRefPtr.h:211:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Source/WTF/wtf/gobject/GRefPtr.h:212:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 2 in 32 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

All other methods in that file use the same pattern, so we should either fix the style in that file or add an exception to the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603868</commentid>
    <comment_count>4</comment_count>
      <attachid>137488</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-17 01:56:14 -0700</bug_when>
    <thetext>Comment on attachment 137488
Patch

Attachment 137488 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12418519</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603888</commentid>
    <comment_count>5</comment_count>
      <attachid>137501</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 02:27:03 -0700</bug_when>
    <thetext>Created attachment 137501
Updated patch to fix the build

I forgot to git add the .messages.in files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603894</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 02:31:23 -0700</bug_when>
    <thetext>Attachment 137501 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/WT...&quot; exit_code: 1
Source/WTF/wtf/gobject/GRefPtr.h:211:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/gobject/GRefPtr.h:212:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 34 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>603897</commentid>
    <comment_count>7</comment_count>
      <attachid>137501</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-17 02:35:33 -0700</bug_when>
    <thetext>Comment on attachment 137501
Updated patch to fix the build

Attachment 137501 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12423174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603899</commentid>
    <comment_count>8</comment_count>
      <attachid>137504</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-17 02:40:31 -0700</bug_when>
    <thetext>Created attachment 137504
Another build fix

There was another file missing in the patch, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603901</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 02:44:10 -0700</bug_when>
    <thetext>Attachment 137504 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/WT...&quot; exit_code: 1
Source/WTF/wtf/gobject/GRefPtr.h:211:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/gobject/GRefPtr.h:212:  The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 35 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>603959</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-17 05:59:02 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; All other methods in that file use the same pattern, so we should either fix the style in that file or add an exception to the style checker.

It&apos;s probably best to write the code in a way that makes the style bot happy now and worry about fixing the old code later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606002</commentid>
    <comment_count>11</comment_count>
      <attachid>137504</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-19 15:30:17 -0700</bug_when>
    <thetext>Comment on attachment 137504
Another build fix

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

This looks pretty good, but I think renaming the IPC message and avoiding __BUILDING_SOUP warrant a new version of the patch.

&gt;&gt; Source/WTF/wtf/gobject/GRefPtr.h:211
&gt;&gt; +template &lt;&gt; GPtrArray* refGPtr(GPtrArray* ptr);
&gt; 
&gt; The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

As I said above, we write new code so that it doesn&apos;t cause style errors. Likely the style bot was updated to catch these errors, so now we must avoid them.

&gt; Source/WebKit2/UIProcess/API/C/WKAPICast.h:366
&gt;  #if defined(BUILDING_GTK__)
&gt;  #include &quot;WKAPICastGtk.h&quot;
&gt;  #endif
&gt; +
&gt; +#if defined(BUILDING_SOUP__)
&gt; +#include &quot;WKAPICastSoup.h&quot;
&gt; +#endif
&gt; +

In these cases we should be probably be using PLATFORM(SOUP/GTK) or WTF_PLATFORM_SOUP/GTK instead of duplicating the meaning of that macro with BUILDING_SOUP__.

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:74
&gt; +    genericRequestClass-&gt;schemes = const_cast&lt;const char**&gt;(reinterpret_cast&lt;char**&gt;(m_schemes-&gt;pdata));

The interior cast can be a static_cast here instead of a reinterpret_cast, I believe.

&gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:78
&gt; +void WebSoupRequestManager::sendURIRequest(const CoreIPC::DataReference&amp; requestData, const String&amp; mimeType, uint64_t requestID)

You might consider renaming this message. I was confused a while, because I wondered why the UIProcess would be sending a URI request. Then I realized it was just the result of naming the message &quot;sendURIRequest.&quot; Perhaps something like handleCustomURIRequest would make sense on both sides of the IPC channel.

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:3112
&gt; +                and not modified_identifier.startswith(&apos;webkit_soup&apos;)

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606385</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-19 23:20:22 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 137504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137504&amp;action=review
&gt; 
&gt; This looks pretty good, but I think renaming the IPC message and avoiding __BUILDING_SOUP warrant a new version of the patch.

Thanks for reviewing!

&gt; &gt;&gt; Source/WTF/wtf/gobject/GRefPtr.h:211
&gt; &gt;&gt; +template &lt;&gt; GPtrArray* refGPtr(GPtrArray* ptr);
&gt; &gt; 
&gt; &gt; The parameter name &quot;ptr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; As I said above, we write new code so that it doesn&apos;t cause style errors. Likely the style bot was updated to catch these errors, so now we must avoid them.

Fair enough

&gt; &gt; Source/WebKit2/UIProcess/API/C/WKAPICast.h:366
&gt; &gt;  #if defined(BUILDING_GTK__)
&gt; &gt;  #include &quot;WKAPICastGtk.h&quot;
&gt; &gt;  #endif
&gt; &gt; +
&gt; &gt; +#if defined(BUILDING_SOUP__)
&gt; &gt; +#include &quot;WKAPICastSoup.h&quot;
&gt; &gt; +#endif
&gt; &gt; +
&gt; 
&gt; In these cases we should be probably be using PLATFORM(SOUP/GTK) or WTF_PLATFORM_SOUP/GTK instead of duplicating the meaning of that macro with BUILDING_SOUP__.

This is a public header, that&apos;s why it uses BUILDING_GTK__ also instead of PLATFORM(GTK)

&gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:74
&gt; &gt; +    genericRequestClass-&gt;schemes = const_cast&lt;const char**&gt;(reinterpret_cast&lt;char**&gt;(m_schemes-&gt;pdata));
&gt; 
&gt; The interior cast can be a static_cast here instead of a reinterpret_cast, I believe.

I think I tried that, but I&apos;ll try again to be sure.

&gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:78
&gt; &gt; +void WebSoupRequestManager::sendURIRequest(const CoreIPC::DataReference&amp; requestData, const String&amp; mimeType, uint64_t requestID)
&gt; 
&gt; You might consider renaming this message. I was confused a while, because I wondered why the UIProcess would be sending a URI request. Then I realized it was just the result of naming the message &quot;sendURIRequest.&quot; Perhaps something like handleCustomURIRequest would make sense on both sides of the IPC channel.

Ok, it was motivated by the SoupRequest interface, but I agree it can be confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606389</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-19 23:25:51 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; &gt; In these cases we should be probably be using PLATFORM(SOUP/GTK) or WTF_PLATFORM_SOUP/GTK instead of duplicating the meaning of that macro with BUILDING_SOUP__.
&gt; 
&gt; This is a public header, that&apos;s why it uses BUILDING_GTK__ also instead of PLATFORM(GTK)

Is this truly the case? I notice that the header is C++ (it uses the class keyword) and also that it uses other WTF macros such as ENABLE(INSPECTOR).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606393</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-19 23:32:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; 
&gt; &gt; &gt; In these cases we should be probably be using PLATFORM(SOUP/GTK) or WTF_PLATFORM_SOUP/GTK instead of duplicating the meaning of that macro with BUILDING_SOUP__.
&gt; &gt; 
&gt; &gt; This is a public header, that&apos;s why it uses BUILDING_GTK__ also instead of PLATFORM(GTK)
&gt; 
&gt; Is this truly the case? I notice that the header is C++ (it uses the class keyword) and also that it uses other WTF macros such as ENABLE(INSPECTOR).

Oh, I&apos;ll check, in that case it&apos;s much better to simply use USE(SOUP) and avoid adding new macros</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606433</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-20 01:02:37 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/WKAPICast.h:366
&gt; &gt; &gt;  #if defined(BUILDING_GTK__)
&gt; &gt; &gt;  #include &quot;WKAPICastGtk.h&quot;
&gt; &gt; &gt;  #endif
&gt; &gt; &gt; +
&gt; &gt; &gt; +#if defined(BUILDING_SOUP__)
&gt; &gt; &gt; +#include &quot;WKAPICastSoup.h&quot;
&gt; &gt; &gt; +#endif
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; In these cases we should be probably be using PLATFORM(SOUP/GTK) or WTF_PLATFORM_SOUP/GTK instead of duplicating the meaning of that macro with BUILDING_SOUP__.
&gt; 
&gt; This is a public header, that&apos;s why it uses BUILDING_GTK__ also instead of PLATFORM(GTK)

Ok, switched to use USE(SOUP) in WkAPICast.h, but BUILDING_SOUP is still needed for WKBase.h

&gt; &gt; &gt; Source/WebKit2/WebProcess/soup/WebSoupRequestManager.cpp:74
&gt; &gt; &gt; +    genericRequestClass-&gt;schemes = const_cast&lt;const char**&gt;(reinterpret_cast&lt;char**&gt;(m_schemes-&gt;pdata));
&gt; &gt; 
&gt; &gt; The interior cast can be a static_cast here instead of a reinterpret_cast, I believe.
&gt; 
&gt; I think I tried that, but I&apos;ll try again to be sure.

error: invalid static_cast from type &apos;void**&apos; to type &apos;char**&apos;

Only Chuck Norris knows which C++ style cast to use without trying them all until one works :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606440</commentid>
    <comment_count>16</comment_count>
      <attachid>138059</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-20 01:17:41 -0700</bug_when>
    <thetext>Created attachment 138059
Updated patch according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611289</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-27 00:13:04 -0700</bug_when>
    <thetext>Committed r115411: &lt;http://trac.webkit.org/changeset/115411&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137488</attachid>
            <date>2012-04-17 01:49:23 -0700</date>
            <delta_ts>2012-04-17 02:27:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-soup-uri-schemes.diff</filename>
            <type>text/plain</type>
            <size>61109</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjODFlNzg4Li4zMTAyZDZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVz
IGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEJVSUxESU5HX1NPVVBfXyBtYWNybyB0byBjb21waWxh
dGlvbi4KKwogMjAxMi0wNC0xNiAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmUtYWRkIEdQVSBERVBTIGJ1aWxkZXJzIHRvIGZsYWtpbmVzcyBkYXNoYm9hcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDZmZTMxOTAuLjdhYWU0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBB
ZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEdQdHJBcnJheSB0
ZW1wbGF0ZSB0byBiZSBhYmxlIHRvIHVzZSBHUmVmUHRyIHdpdGggR1B0ckFycmF5cy4KKworICAg
ICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToK
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmRlcmVmR1B0cik6CisgICAgICAgICogd3Rm
L2dvYmplY3QvR1JlZlB0ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvZ29iamVj
dC9HVHlwZWRlZnMuaDoKKwogMjAxMi0wNC0xNiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTWFrZSBOdWxsUHRyLmggY29tcGlsZSB3aXRoIGNsYW5nIC1zdGQ9
YysrMTEgYW5kIGxpYnN0ZGMrKzQuMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg2ZjAzYjQuLmExN2Y1MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMTkgQEAKKzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8g
cmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIG5ldyBm
aWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOiBBZGQKKyAgICAgICAgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyIGFuZAor
ICAgICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSBtZXNzYWdlIHR5
cGVzIHRvIGlkZW50aWZ5CisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlciBtZXNzYWdlcy4K
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IEluY2x1ZGUgV0tCYXNlU291cC5oIHdo
ZW4gYnVpbGRpbmcgd2l0aAorICAgICAgICBzb3VwIG5ldHdvcmsgYmFja2VuZC4KKyAgICAgICAg
KiBTaGFyZWQvQVBJT2JqZWN0Lmg6IEFkZCBTb3VwUmVxdWVzdE1hbmFnZXIgdHlwZSB3aGVuIHVz
aW5nIHNvdXAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBJbmNsdWRl
IFdLQVBJQ2FzdFNvdXAuaCB3aGVuCisgICAgICAgIGJ1aWxkaW5nIHdpdGggc291cCBuZXR3b3Jr
IGJhY2tlbmQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6IE1hcCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiB0
bworICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRl
eHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIpOiBSZXR1cm4gV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYK
KyAgICAgICAgYXNzb2NpYXRlZCB0byB0aGUgY29udGV4dC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Nv
dXBSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCk6IFJldHVybiB0aGUKKyAgICAgICAgV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkgQVBJIHR5cGUuCisgICAgICAgIChXS1NvdXBSZXF1ZXN0TWFuYWdl
clNldENsaWVudCk6IFNldCB0aGUgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuCisgICAgICAg
IChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKTogQ2FsbAorICAgICAgICBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVnaXN0ZXJVUklTY2hlbWUoKS4KKyAgICAgICAg
KFdLU291cFJlcXVlc3RNYW5hZ2VyU2VuZFVSSVJlcXVlc3QpOiBDYWxsCisgICAgICAgIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5OjpzZW5kVVJJUmVxdWVzdCgpLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
V2ViQ29udGV4dCk6IEluaXRpYWxpemUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94
eSB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250
ZXh0KTogSW52YWxpZGF0ZSBhbmQgY2xlYXIgdGhlCisgICAgICAgIG1fc291cFJlcXVlc3RNYW5h
Z2VyUHJveHkgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpk
aXNjb25uZWN0UHJvY2Vzcyk6IEludmFsaWRhdGUgdGhlCisgICAgICAgIG1fc291cFJlcXVlc3RN
YW5hZ2VyUHJveHkgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpkaWRSZWNlaXZlTWVzc2FnZSk6IEZvcndhcmQgdGhlIG1lc3NhZ2UgdG8KKyAgICAgICAgbV9z
b3VwUmVxdWVzdE1hbmFnZXJQcm94eSBpZiBpdCdzIGEKKyAgICAgICAgTWVzc2FnZUNsYXNzV2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHkgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpzb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eSk6IFJldHVybgorICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9yd2FyZCBtZXNzYWdlIHRvCisg
ICAgICAgIHRoZSB3ZWIgY29udGV4dCBpZiBpdCdzIGEgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkKKyAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRSZWNlaXZlVVJJUmVxdWVzdCk6IENh
bGwKKyAgICAgICAgZGlkUmVjZWl2ZVVSSVJlcXVlc3QgY2FsbGJhY2sgaWYgaXQgaGFzIGFuIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKTogQ3JlYXRlIGEgbmV3CisgICAgICAgIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eTo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6fldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW5pdGlhbGl6
ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojpk
aWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5OjpyZWdpc3RlclVSSVNjaGVtZSk6IFNlbmQKKyAgICAgICAgUmVnaXN0ZXJVUklTY2hl
bWUgbWVzc2FnZSB0byB0aGUgV2ViUHJvY2VzcyB0byByZWdpc3RlciB0aGUgZ2l2ZW4KKyAgICAg
ICAgVVJJIHNjaGVtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnNlbmRVUklSZXF1ZXN0KTogU2VuZAorICAgICAgICBTZW5kVVJJUmVxdWVzdCBtZXNzYWdl
IHRvIHRoZSBXZWJQcm9jZXNzIHdpdGggdGhlIGdpdmVuIGRhdGEgYW5kCisgICAgICAgIGRhdGEg
dHlwZS4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KTogQ2FsbAorICAgICAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdCBjYWxs
YmFjayB0byBhbGxvdyB0aGUgdXNlciB0byBoYW5kbGUgdGhlCisgICAgICAgIHJlcXVlc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgbV9zb3VwUmVxdWVzdE1hbmFn
ZXIKKyAgICAgICAgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpkaWRSZWNlaXZlTWVzc2FnZSk6IEZvcndhcmQgdGhlIG1lc3NhZ2UgdG8KKyAgICAgICAgbV9z
b3VwUmVxdWVzdE1hbmFnZXIgaWYgaXQncyBhIE1lc3NhZ2VDbGFzc1dlYlNvdXBSZXF1ZXN0TWFu
YWdlcgorICAgICAgICBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzb3VwUmVxdWVzdE1hbmFnZXIpOiBSZXR1
cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0U291cFJlcXVl
c3RHZW5lcmljRmluYWxpemUpOgorICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmlj
X2luaXQpOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jKTogQ3Jl
YXRlIGEgR1NpbXBsZUFzeW5jUmVzdWx0CisgICAgICAgIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCBh
bmQgcGFzcyBpdCB0byB0aGUgV2ViU291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAod2Via2l0
U291cFJlcXVlc3RHZW5lcmljU2VuZEZpbmlzaCk6IEZpbmlzaCB0aGUgYXN5bmMgb3BlcmF0aW9u
CisgICAgICAgIHN0YXJ0ZWQgYnkgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jKCkg
YW5kIHJldHVybiB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIHJlcXVlc3QgYXMgcmV0dXJu
ZWQgYnkgV2ViU291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RH
ZW5lcmljR2V0Q29udGVudExlbmd0aCk6IEdldCB0aGUgcmVxdWVzdAorICAgICAgICBjb250ZW50
cyBsZW5ndGguCisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRDb250ZW50VHlw
ZSk6IEdldCB0aGUgcmVxdWVzdCBtaW1lCisgICAgICAgIHR5cGUuCisgICAgICAgICh3ZWJraXRf
c291cF9yZXF1ZXN0X2dlbmVyaWNfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRTb3VwUmVx
dWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKTogU2V0IHRoZSByZXF1ZXN0CisgICAgICAgIGNv
bnRlbnRzIGxlbmd0aC4KKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRl
bnRUeXBlKTogU2V0IHRoZSByZXF1ZXN0IG1pbWUKKyAgICAgICAgdHlwZS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmg6IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6Z2VuZXJhdGVTb3VwUmVxdWVzdElEKTogSGVscGVyIGZ1bmN0aW9uIHRv
IGdlbmVyYXRlIGEKKyAgICAgICAgdW5pcXVlIHJlcXVlc3QgaWRlbnRpZmllci4KKyAgICAgICAg
KFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6On5XZWJTb3VwUmVxdWVzdE1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdp
c3RlclVSSVNjaGVtZSk6IEFkZCB0aGUgc2NoZW1lCisgICAgICAgIHRvIHRoZSBzY2hlbWVzIGFy
cmF5IGFuZCBhZGQgYSBuZXcgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljCisgICAgICAgIGZlYXR1
cmUgd2l0aCB0aGUgbmV3IHNjaGVtZSBsaXN0IHRvIHRoZSBTb3VwUmVxdWVzdGVyIGZlYXR1cmUu
CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZFVSSVJlcXVlc3Qp
OiBDb21wbGV0ZSB0aGUKKyAgICAgICAgYXN5bmMgb3BlcmF0aW9uIGJ5IGNyZWF0aW5nIGEgR0lu
cHV0U3RyZWFtIHdpdGggdGhlIHJlcXVlc3QgZGF0YSwKKyAgICAgICAgb3Igc2V0dGluZyBhbiBl
cnJvciBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0
TWFuYWdlcjo6c2VuZCk6IFNlbmQgRGlkUmVjZWl2ZVVSSVJlcXVlc3QKKyAgICAgICAgbWVzc2Fn
ZSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5h
Z2VyOjpmaW5pc2gpOiBSZXR1cm4gdGhlIEdJbnB1dFN0cmVhbQorICAgICAgICBjb250YWluaW5n
IHRoZSByZXF1ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1
ZXN0TWFuYWdlci5oOiBBZGRlZC4KKwogMjAxMi0wNC0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgbWlzc2luZyBmaWxlcyB0
byBidWlsZCB3ZWJraXQyL0VmbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAyMjI3NmJlLi5iNWEyY2RlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMTcg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtT
T1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2lkZW50aWZp
ZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6IEFkZCB3ZWJraXRfc291cCBwcmVmaXggdG8KKyAgICAg
ICAgdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucyB0byB0aGUgdW5kZXJzY29yZXMgaW4gaWRlbnRpZmll
cnMgcnVsZS4KKwogMjAxMi0wNC0xNiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21l
Lm9yZz4KIAogICAgICAgICBbR1RLXSBVc2UgY29uZmlndXJlIGluc3RlYWQgb2YgYXV0b2dlbi5z
aCBmb3IgZ3RrKwpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQpp
bmRleCA2NWU3Yzg1Li5hZjVlNmNhIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9H
TlVtYWtlZmlsZS5hbQpAQCAtMTQ2LDYgKzE0Niw3IEBAIGVuZGlmCiBnbG9iYWxfY3BwZmxhZ3Mg
Kz0gXAogCS1EQlVJTERJTkdfQ0FJUk9fXz0xIFwKIAktREJVSUxESU5HX0dUS19fPTEgXAorCS1E
QlVJTERJTkdfU09VUF9fPTEgXAogCS1EV1RGX0NIQU5HRVMKIAogIyBGb3IgdGhlIEd0ayBwb3J0
IHdlIHdhbnQgdG8gdXNlIFhQX1VOSVggYm90aCBpbiBYMTEgYW5kIE1hYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dvYmpl
Y3QvR1JlZlB0ci5jcHAKaW5kZXggMzBkZjJjOS4uM2EwMTRkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0
L0dSZWZQdHIuY3BwCkBAIC0xMDcsNiArMTA3LDE5IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZH
UHRyKEdTb3VyY2UqIHB0cikKICAgICAgICAgZ19zb3VyY2VfdW5yZWYocHRyKTsKIH0KIAordGVt
cGxhdGUgPD4gR1B0ckFycmF5KiByZWZHUHRyKEdQdHJBcnJheSogcHRyKQoreworICAgIGlmIChw
dHIpCisgICAgICAgIGdfcHRyX2FycmF5X3JlZihwdHIpOworICAgIHJldHVybiBwdHI7Cit9CisK
K3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdQdHJBcnJheSogcHRyKQoreworICAgIGlmIChw
dHIpCisgICAgICAgIGdfcHRyX2FycmF5X3VucmVmKHB0cik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdURgogCiAjZW5kaWYgLy8gRU5BQkxFKEdMSUJfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVm
UHRyLmgKaW5kZXggOTJhY2ZmYy4uNGJmNWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Z29iamVjdC9HUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmgK
QEAgLTIwOCw2ICsyMDgsOCBAQCB0ZW1wbGF0ZSA8PiBHVmFyaWFudCogcmVmR1B0cihHVmFyaWFu
dCogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdWYXJpYW50KiBwdHIpOwogdGVt
cGxhdGUgPD4gR1NvdXJjZSogcmVmR1B0cihHU291cmNlKiBwdHIpOwogdGVtcGxhdGUgPD4gdm9p
ZCBkZXJlZkdQdHIoR1NvdXJjZSogcHRyKTsKK3RlbXBsYXRlIDw+IEdQdHJBcnJheSogcmVmR1B0
cihHUHRyQXJyYXkqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHUHRyQXJyYXkq
IHB0cik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0cihUKiBwdHIp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIGIvU291
cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAppbmRleCBlMjkyNTBiLi43OWMzM2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKQEAgLTYzLDYgKzYzLDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0dWYXJpYW50IEdWYXJpYW50OwogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZl
bnQ7CiB0eXBlZGVmIHN0cnVjdCBfR1RpbWVyIEdUaW1lcjsKIHR5cGVkZWYgc3RydWN0IF9HS2V5
RmlsZSBHS2V5RmlsZTsKK3R5cGVkZWYgc3RydWN0IF9HUHRyQXJyYXkgR1B0ckFycmF5OwogCiAj
aWYgVVNFKENBSVJPKQogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFj
ZV90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAxZGYxMzEwMi4uYzc0ZjNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0KQEAgLTEsNiArMSw3IEBACiBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0hFQURFUlMg
PSBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvZ3RrL1dLQmFzZUd0ay5oIFwKIAkkKFdlYktp
dDIpL1NoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsuaCBcCisJJChXZWJLaXQy
KS9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQ
SS9jL1dLQXJyYXkuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tCYXNlLmggXAogCSQo
V2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJbmZvLmggXApAQCAtMzUsNiArMzYs
OSBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0hFQQogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9D
L2d0ay9XS0FQSUNhc3RHdGsuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dL
RnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9ndGsv
V0tWaWV3LmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291
cC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaCBc
CisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmggXAogCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Qy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXApAQCAtMTkwLDcgKzE5NCwxMSBAQCB3ZWJr
aXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUHJvY2Vz
c01lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVl
c3RNYW5hZ2VyTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlcy5oCiAKIHdlYmtpdDJfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL3dlYmtp
dDIvV2ViS2l0RW51bVR5cGVzLmNwcCBcCkBAIC0yNjMsNiArMjcxLDcgQEAgd2Via2l0Ml9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLQmFzZUd0ay5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRleHRHdGsu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oIFwKQEAgLTQ2Nyw2ICs0NzYsMTEgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmggXAorCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXApAQCAtNjkyLDYgKzcwNiwx
MCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Qcm9j
ZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVGV4dENoZWNrZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
UHJvdmlkZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92
aWRlci5oIFwKQEAgLTkxOCw2ICs5MzYsMTAgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBcCkBAIC0xMDE3LDYgKzEwMzksNyBAQCBsaWJ3ZWJraXQy
Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZF
UlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2d0ayBcCisJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db3JlSVBDU3VwcG9ydCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXApAQCAt
MTAyNiw2ICsxMDQ5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcCBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCkBAIC0xMDM2
LDYgKzEwNjAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05A
X0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvZ3RrIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2VzcyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0aW9uIFwK
QEAgLTEwNTUsNiArMTA4MCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1Jf
VkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCisJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ayBcCkBAIC0xMTc4LDYgKzEyMDQsNyBAQCB2cGF0
aCAlLm1lc3NhZ2VzLmluID0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMg
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL1BsdWdpbnMgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNz
L1Jlc291cmNlQ2FjaGUgXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL3NvdXAgXAogCSQoV2ViS2l0
MikvV2ViUHJvY2VzcyBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUg
XAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCkBAIC0xMTkxLDcgKzEy
MTgsOCBAQCB2cGF0aCAlLm1lc3NhZ2VzLmluID0gXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9Q
bHVnaW5zIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAJJChXZWJL
aXQyKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKLQkkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
V2ViUGFnZQorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlIFwKKwkkKFdlYktpdDIpL1dl
YlByb2Nlc3Mvc291cAogCiBtZXNzYWdlX2dlbl9zY3JpcHRzID0gXAogCSQoV2ViS2l0MikvU2Ny
aXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCmluZGV4IDZlZTgwOWEuLjVmMzk4YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaApAQCAtNTMsNyArNTMsMTAg
QEAgZW51bSBNZXNzYWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3MsCiAgICAg
TWVzc2FnZUNsYXNzV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzRXZl
bnREaXNwYXRjaGVyLAotICAgIAorI2lmIFVTRShTT1VQKQorICAgIE1lc3NhZ2VDbGFzc1dlYlNv
dXBSZXF1ZXN0TWFuYWdlciwKKyNlbmRpZgorCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUg
d2ViIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MuCiAgICAgTWVzc2FnZUNsYXNzRG93bmxvYWRQ
cm94eSwKICAgICBNZXNzYWdlQ2xhc3NEcmF3aW5nQXJlYVByb3h5LApAQCAtNzMsNiArNzYsOSBA
QCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViUGFnZVByb3h5LAogICAg
IE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3NQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlclByb3h5LAorI2lmIFVTRShTT1VQKQorICAgIE1lc3NhZ2VDbGFzc1dlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LAorI2VuZGlmCiAKICAgICAvLyBNZXNzYWdlcyBzZW50IHRv
IGEgV2ViQ29ubmVjdGlvbgogICAgIE1lc3NhZ2VDbGFzc1dlYkNvbm5lY3Rpb25MZWdhY3ksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggYzg2NTZlNC4uYmU2MTc2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZUd0ay5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5H
X1NPVVBfXykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZVNvdXAuaD4KKyNlbmRpZgorCiAvKiBX
ZWJLaXQyIHNoYXJlZCB0eXBlcyAqLwogCiB0eXBlZGVmIHVpbnQzMl90IFdLVHlwZUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IGQ2Y2MwMzAuLmQ3MjgyMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExOSw3ICsxMTksMTAgQEAgcHVibGljOgogCiAgICAgICAg
IC8vIFBsYXRmb3JtIHNwZWNpZmljCiAgICAgICAgIFR5cGVFZGl0Q29tbWFuZFByb3h5LAotICAg
ICAgICBUeXBlVmlldworICAgICAgICBUeXBlVmlldywKKyNpZiBVU0UoU09VUCkKKyAgICAgICAg
VHlwZVNvdXBSZXF1ZXN0TWFuYWdlciwKKyNlbmRpZgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5B
UElPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmlu
ZGV4IGJkM2ZhMmQuLjE0OGYwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgKQEAgLTM1OSw0ICszNTksOSBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8V2Vi
R3JhbW1hckRldGFpbD4gdG9BUEkoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhbQog
I2lmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAj
ZW5kaWYKKworI2lmIGRlZmluZWQoQlVJTERJTkdfU09VUF9fKQorI2luY2x1ZGUgIldLQVBJQ2Fz
dFNvdXAuaCIKKyNlbmRpZgorCiAjZW5kaWYgLy8gV0tBUElDYXN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGE5NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0FQSUNhc3RTb3VwX2gKKyNkZWZpbmUgV0tBUElDYXN0U291
cF9oCisKKyNpZm5kZWYgV0tBUElDYXN0X2gKKyNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwiV0tB
UElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OworCitX
S19BRERfQVBJX01BUFBJTkcoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5KQorCit9CisKKyNlbmRpZiAvLyBXS0FQSUNhc3RTb3VwX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlODhkMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
Y3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRT
b3VwLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLU291cFJlcXVlc3RNYW5hZ2VyUmVmIFdL
Q29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5zb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eSgpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tDb250ZXh0U291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2
OTU0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0NvbnRleHRTb3VwLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29udGV4dFNvdXBfaAor
I2RlZmluZSBXS0NvbnRleHRTb3VwX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZiBXS0NvbnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tDb250
ZXh0U291cF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
c291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTA0MmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgor
CisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tTb3VwUmVx
dWVzdE1hbmFnZXJHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eTo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJT
ZXRDbGllbnQoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCogd2tDbGllbnQpCit7CisgICAgdG9JbXBs
KHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworfQor
Cit2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVnaXN0ZXJVUklTY2hlbWUoV0tTb3VwUmVxdWVz
dE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYp
Cit7CisgICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPnJlZ2lzdGVyVVJJU2NoZW1l
KHRvSW1wbChzY2hlbWVSZWYpLT5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJTZW5kVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1h
bmFnZXJSZWYsIFdLRGF0YVJlZiBkYXRhLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZiwgdWludDY0
X3QgcmVxdWVzdElEKQoreworICAgIHRvSW1wbChzb3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5zZW5k
VVJJUmVxdWVzdCh0b0ltcGwoZGF0YSksIHRvSW1wbChtaW1lVHlwZVJlZiktPnN0cmluZygpLCBy
ZXF1ZXN0SUQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDhkY2RkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKKyNkZWZpbmUgV0tTb3VwUmVxdWVzdE1hbmFnZXJf
aAorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4K
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZv
aWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2VpdmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdL
U291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJs
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1
Y3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLU291
cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjayBkaWRSZWNlaXZlVVJJ
UmVxdWVzdDsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCBX
S1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudDsKKworZW51bSB7IGtXS1NvdXBSZXF1ZXN0TWFuYWdl
ckNsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVz
dE1hbmFnZXJTZXRDbGllbnQoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cFJl
cXVlc3RNYW5hZ2VyQ2xpZW50KiBjbGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVz
dE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tTdHJp
bmdSZWYgc2NoZW1lUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyU2Vu
ZFVSSVJlcXVlc3QoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLRGF0YVJlZiwgV0tTdHJpbmdS
ZWYgbWltZVR5cGVSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMmVjZmY5ZC4uZjFhMGYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNjYsNiArNjYsMTAg
QEAKICNpbmNsdWRlICJCdWlsdEluUERGVmlldy5oIgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkK
KyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorI2VuZGlmCisKICNpZm5k
ZWYgTkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlm
CkBAIC0xMzUsNiArMTM5LDkgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChQcm9jZXNzTW9kZWwg
cHJvY2Vzc01vZGVsLCBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGEKICAgICAsIG1fbm90
aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KHRoaXMpKQogICAgICwgbV9wbHVnaW5TaXRlRGF0YU1hbmFnZXIoV2ViUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHko
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpKQorI2lmIFVTRShTT1VQ
KQorICAgICwgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eShXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eTo6Y3JlYXRlKHRoaXMpKQorI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQogICAgICwgbV9z
aG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKHRydWUpCiAgICAgLCBtX2luaXRpYWxIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMpCkBAIC0xOTIsNyArMTk5
LDEyIEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKIAogICAgIG1fcmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eS0+aW52YWxpZGF0ZSgpOwogICAgIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eS0+Y2xlYXJDb250ZXh0KCk7Ci0gICAgCisKKyNpZiBVU0UoU09VUCkKKyAgICBtX3NvdXBSZXF1
ZXN0TWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7CisgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS0+Y2xlYXJDb250ZXh0KCk7CisjZW5kaWYKKwogICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX2RpY3Rpb25hcnlDYWxsYmFja3MpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4
dCgpOwpAQCAtMzgwLDYgKzM5Miw5IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29ubmVjdFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIG1fbWVkaWFDYWNoZU1hbmFnZXJQcm94
eS0+aW52YWxpZGF0ZSgpOwogICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlclByb3h5LT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7Cisj
aWYgVVNFKFNPVVApCisgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+aW52YWxpZGF0ZSgp
OworI2VuZGlmCiAKICAgICAvLyBXaGVuIG91dCBvZiBwcm9jZXNzIHBsdWctaW5zIGFyZSBlbmFi
bGVkLCB3ZSBkb24ndCB3YW50IHRvIGludmFsaWRhdGUgdGhlIHBsdWctaW4gc2l0ZSBkYXRhCiAg
ICAgLy8gbWFuYWdlciBqdXN0IGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgc2luY2Ug
aXQncyBub3QgaW52b2x2ZWQuCkBAIC03MTYsNiArNzMxLDEzIEBAIHZvaWQgV2ViQ29udGV4dDo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBVU0UoU09VUCkKKyAgICBpZiAo
bWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5PigpKSB7CisgICAgICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCiAgICAgc3dpdGNoIChtZXNzYWdlSUQuZ2V0PFdlYkNvbnRleHRM
ZWdhY3lNZXNzYWdlOjpLaW5kPigpKSB7CiAgICAgICAgIGNhc2UgV2ViQ29udGV4dExlZ2FjeU1l
c3NhZ2U6OlBvc3RNZXNzYWdlOiB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBmZmNmOWIzLi5kZGYzZDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTU4LDYgKzU4LDkgQEAgY2xh
c3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKKyNp
ZiBVU0UoU09VUCkKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OworI2VuZGlmCiBz
dHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czsKICAgICAKQEAgLTE2MSw2ICsxNjQsOSBAQCBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KiBub3RpZmljYXRpb25NYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBt
X25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5nZXQoKTsgfQogICAgIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlciogcGx1Z2luU2l0ZURhdGFNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5T
aXRlRGF0YU1hbmFnZXIuZ2V0KCk7IH0KICAgICBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
KiByZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUNh
Y2hlTWFuYWdlclByb3h5LmdldCgpOyB9CisjaWYgVVNFKFNPVVApCisgICAgV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4g
bV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5nZXQoKTsgfQorI2VuZGlmCiAKICAgICBzdHJ1Y3Qg
U3RhdGlzdGljcyB7CiAgICAgICAgIHVuc2lnbmVkIHdrVmlld0NvdW50OwpAQCAtMjk2LDYgKzMw
Miw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4g
bV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CiAgICAgUmVmUHRyPFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlcj4gbV9wbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHk+IG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKKyNpZiBVU0Uo
U09VUCkKKyAgICBSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fc291cFJlcXVl
c3RNYW5hZ2VyUHJveHk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1f
c2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggN2VlNTMyOC4uMjJkYWNiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTMxNCw2ICszMTQsOSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQwogICAgICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6
TWVzc2FnZUNsYXNzV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5PigpCiAgICAgICAgIHx8
IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5PigpCiAgICAgICAgIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCkKKyNpZiBVU0UoU09VUCkKKyAgICAgICAgfHwgbWVz
c2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
PigpCisjZW5kaWYKICAgICAgICAgfHwgbWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk+KCkpIHsKICAgICAgICAgbV9jb250ZXh0LT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRlYmVmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgorCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlckNsaWVudDo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlciwgV2ViVVJMKiB1cmwsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlVVJJUmVxdWVz
dCh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCB0b0FQSSh1cmwpLCByZXF1ZXN0SUQsIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWZiYmE3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnRfaAorI2RlZmluZSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRfaAor
CisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tTb3VwUmVxdWVzdE1hbmFnZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5OworY2xhc3MgV2ViVVJMOworCitjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQg
OiBwdWJsaWMgQVBJQ2xpZW50PFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LCBrV0tTb3VwUmVx
dWVzdE1hbmFnZXJDbGllbnRDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIGJvb2wgZGlk
UmVjZWl2ZVVSSVJlcXVlc3QoV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqLCBXZWJVUkwqLCB1
aW50NjRfdCByZXF1ZXN0SUQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOGQyOTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+
IFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KGNv
bnRleHQpKTsKK30KKworV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX3dlYkNvbnRleHQoY29u
dGV4dCkKK3sKK30KKworV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6On5XZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUoKQoreworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojpp
bml0aWFsaXplQ2xpZW50KGNvbnN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCit2b2lkIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAgICBkaWRSZWNlaXZlV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30K
Kwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVnaXN0ZXJVUklTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgQVNTRVJUKG1fd2ViQ29udGV4dCk7CisgICAgbV93
ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShN
ZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpSZWdpc3RlclVSSVNjaGVtZShzY2hlbWUp
KTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6c2VuZFVSSVJlcXVlc3Qo
Y29uc3QgV2ViRGF0YSogcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2
NF90IHJlcXVlc3RJRCkKK3sKKyAgICBBU1NFUlQobV93ZWJDb250ZXh0KTsKKyAgICBtX3dlYkNv
bnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2Vy
OjpTZW5kVVJJUmVxdWVzdChyZXF1ZXN0RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCBtaW1lVHlwZSwg
cmVxdWVzdElEKSk7Cit9CisKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0
SUQpCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlVVJJUmVxdWVzdCh0aGlzLCBXZWJV
Ukw6OmNyZWF0ZSh1cmlTdHJpbmcpLmdldCgpLCByZXF1ZXN0SUQpKQorICAgICAgICBzZW5kVVJJ
UmVxdWVzdChXZWJEYXRhOjpjcmVhdGUoMCwgMCkuZ2V0KCksIFN0cmluZygpLCByZXF1ZXN0SUQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYmU0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5o
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmbmRlZiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgQ29yZUlQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBD
b25uZWN0aW9uOworY2xhc3MgTWVzc2FnZUlEOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdlYkRhdGE7CisKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVTb3VwUmVxdWVzdE1hbmFnZXI7CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQq
KTsKKyAgICB2aXJ0dWFsIH5XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSgpOworCisgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7CisgICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fd2ViQ29udGV4dCA9
IDA7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1NvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudCopOworCisgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSk7CisgICAgdm9pZCBzZW5kVVJJUmVxdWVzdChjb25zdCBXZWJEYXRhKiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKKworICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKK3ByaXZhdGU6CisgICAgV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCisgICAgdm9pZCBk
aWRSZWNlaXZlV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwor
CisgICAgV2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdl
ckNsaWVudCBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggYTIyZjRjNi4uYWRlNDMyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDgsNiArMTQ4LDkgQEAgV2ViUHJvY2Vzczo6
V2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgICwgbV9kaXNhYmxl
UGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0KGZhbHNlKQogI2VuZGlmCisjaWYgVVNFKFNPVVAp
CisgICAgLCBtX3NvdXBSZXF1ZXN0TWFuYWdlcih0aGlzKQorI2VuZGlmCiB7CiAjaWYgVVNFKFBM
QVRGT1JNX1NUUkFURUdJRVMpCiAgICAgLy8gSW5pdGlhbGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRl
Z2llcy4KQEAgLTY1MCw2ICs2NTMsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShTT1VQKQorICAgIGlmIChtZXNzYWdlSUQuaXM8
Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyPigpKSB7CisgICAgICAg
IG1fc291cFJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAg
aWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NJbmplY3RlZEJ1bmRsZT4oKSkg
ewogICAgICAgICBpZiAoIW1faW5qZWN0ZWRCdW5kbGUpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDFhNDk4OWYuLmE5ODFmMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NCw2ICs0NCwxMCBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAor
I2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2VuZGlm
CisKICNpZiBQTEFURk9STShRVCkKIGNsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKICNlbmRp
ZgpAQCAtMTQ4LDYgKzE1MiwxMCBAQCBwdWJsaWM6CiAKICAgICBFdmVudERpc3BhdGNoZXImIGV2
ZW50RGlzcGF0Y2hlcigpIHsgcmV0dXJuIG1fZXZlbnREaXNwYXRjaGVyOyB9CiAKKyNpZiBVU0Uo
U09VUCkKKyAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXImIHNvdXBSZXF1ZXN0TWFuYWdlcigpIHsg
cmV0dXJuIG1fc291cFJlcXVlc3RNYW5hZ2VyOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
ZWJQcm9jZXNzKCk7CiAKQEAgLTI4Miw2ICsyOTAsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
ZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91dDsKICNlbmRpZgogCisjaWYgVVNFKFNP
VVApCisgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyIG1fc291cFJlcXVlc3RNYW5hZ2VyOworI2Vu
ZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDg5MDk2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYy5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitHX0RFRklORV9UWVBFKFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpYywgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljLCBTT1VQ
X1RZUEVfUkVRVUVTVCkKKworc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRl
IHsKKyAgICBDU3RyaW5nIG1pbWVUeXBlOworICAgIGdvZmZzZXQgY29udGVudExlbmd0aDsKK307
CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0ZpbmFsaXplKEdPYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMob2JqZWN0KS0+cHJp
di0+fldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2Jq
ZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2luaXQo
V2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0KQoreworICAgIFdlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpY1ByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVx
dWVzdCwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpY1ByaXZhdGUpOworICAgIHJlcXVlc3QtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJp
dikgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljUHJpdmF0ZSgpOworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMoU291cFJlcXVlc3QqIHJlcXVlc3QsIEdD
YW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdw
b2ludGVyIHVzZXJEYXRhKQoreworICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0ID0gZ19z
aW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVChyZXF1ZXN0KSwgY2FsbGJhY2ssIHVzZXJE
YXRhLCByZWludGVycHJldF9jYXN0PHZvaWQqPih3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5k
QXN5bmMpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zb3VwUmVxdWVzdE1hbmFnZXIoKS5z
ZW5kKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0
R2VuZXJpY1NlbmRGaW5pc2goU291cFJlcXVlc3QqIHJlcXVlc3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZVJl
c3VsdCA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWls
KGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNlX3RhZyhzaW1wbGVSZXN1bHQpID09IHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5
bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGVSZXN1bHQsIGVycm9yKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc291cFJlcXVlc3RN
YW5hZ2VyKCkuZmluaXNoKHNpbXBsZVJlc3VsdCk7Cit9CisKK3N0YXRpYyBnb2Zmc2V0IHdlYmtp
dFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRMZW5ndGgoU291cFJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgcmV0dXJuIFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhyZXF1ZXN0KS0+cHJp
di0+Y29udGVudExlbmd0aDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIHdlYmtpdFNvdXBSZXF1
ZXN0R2VuZXJpY0dldENvbnRlbnRUeXBlKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
dHVybiBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMocmVxdWVzdCktPnByaXYtPm1pbWVUeXBl
LmRhdGEoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2Ns
YXNzX2luaXQoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MqIHJlcXVlc3RHZW5lcmljQ2xh
c3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhy
ZXF1ZXN0R2VuZXJpY0NsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0
U291cFJlcXVlc3RHZW5lcmljRmluYWxpemU7CisKKyAgICBTb3VwUmVxdWVzdENsYXNzKiByZXF1
ZXN0Q2xhc3MgPSBTT1VQX1JFUVVFU1RfQ0xBU1MocmVxdWVzdEdlbmVyaWNDbGFzcyk7CisgICAg
cmVxdWVzdENsYXNzLT5zZW5kX2FzeW5jID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFz
eW5jOworICAgIHJlcXVlc3RDbGFzcy0+c2VuZF9maW5pc2ggPSB3ZWJraXRTb3VwUmVxdWVzdEdl
bmVyaWNTZW5kRmluaXNoOworICAgIHJlcXVlc3RDbGFzcy0+Z2V0X2NvbnRlbnRfbGVuZ3RoID0g
d2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0Q29udGVudExlbmd0aDsKKyAgICByZXF1ZXN0Q2xh
c3MtPmdldF9jb250ZW50X3R5cGUgPSB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRDb250ZW50
VHlwZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0R2VuZXJpY0NsYXNz
LCBzaXplb2YoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljUHJpdmF0ZSkpOworfQorCit2b2lkIHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRMZW5ndGgoV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljKiByZXF1ZXN0LCBnb2Zmc2V0IGNvbnRlbnRMZW5ndGgpCit7CisgICAgcmVxdWVzdC0+
cHJpdi0+Y29udGVudExlbmd0aCA9IGNvbnRlbnRMZW5ndGg7Cit9CisKK3ZvaWQgd2Via2l0U291
cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudFR5cGUoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiBy
ZXF1ZXN0LCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKK3sKKyAgICByZXF1ZXN0LT5wcml2LT5taW1l
VHlwZSA9IG1pbWVUeXBlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNlZTI4NmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWNfaAorI2RlZmluZSBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNf
aAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNkZWZpbmUgTElCU09VUF9VU0VfVU5TVEFC
TEVfUkVRVUVTVF9BUEkKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtcmVxdWVzdC5oPgorCitHX0JF
R0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMgICAg
ICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2dldF90eXBlKCkpCisjZGVmaW5l
IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJ
QywgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVR
VUVTVF9HRU5FUklDKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
amVjdCksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKSkKKyNkZWZpbmUgV0VCS0lU
X1NPVVBfUkVRVUVTVF9HRU5FUklDX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNv
dXBSZXF1ZXN0R2VuZXJpY0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9H
RU5FUklDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VC
S0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKQorI2RlZmluZSBXRUJLSVRfU09VUF9SRVFV
RVNUX0dFTkVSSUNfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQywgV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYzsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWNDbGFzcyBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzczsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlIFdlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpY1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljIHsKKyAg
ICBTb3VwUmVxdWVzdCBwYXJlbnQ7CisKKyAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyB7
CisgICAgU291cFJlcXVlc3RDbGFzcyBwYXJlbnQ7Cit9OworCitHVHlwZSB3ZWJraXRfc291cF9y
ZXF1ZXN0X2dlbmVyaWNfZ2V0X3R5cGUoKTsKKwordm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZXRDb250ZW50TGVuZ3RoKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyosIGdvZmZzZXQgY29u
dGVudExlbmd0aCk7Cit2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBl
KFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyosIGNvbnN0IGNoYXIqIG1pbWVUeXBlKTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmIC8vIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDAzOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVl
c3RNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTWVz
c2FnZUlELmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1ZXN0ZXIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU291cFJlcXVlc3RJRCgpCit7
CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNvdXBSZXF1ZXN0SUQgPSAxOworICAgIHJldHVy
biB1bmlxdWVTb3VwUmVxdWVzdElEKys7Cit9CisKK1dlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6V2Vi
U291cFJlcXVlc3RNYW5hZ2VyKFdlYlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3Mo
cHJvY2VzcykKKyAgICAsIG1fc2NoZW1lcyhhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dpdGhf
ZnJlZV9mdW5jKGdfZnJlZSkpKQoreworfQorCitXZWJTb3VwUmVxdWVzdE1hbmFnZXI6On5XZWJT
b3VwUmVxdWVzdE1hbmFnZXIoKQoreworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVu
dHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFu
YWdlcjo6cmVnaXN0ZXJVUklTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYg
KG1fc2NoZW1lcy0+bGVuKQorICAgICAgICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXhfZmFzdCht
X3NjaGVtZXMuZ2V0KCksIG1fc2NoZW1lcy0+bGVuIC0gMSk7CisgICAgZ19wdHJfYXJyYXlfYWRk
KG1fc2NoZW1lcy5nZXQoKSwgZ19zdHJkdXAoc2NoZW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBn
X3B0cl9hcnJheV9hZGQobV9zY2hlbWVzLmdldCgpLCAwKTsKKworICAgIFNvdXBTZXNzaW9uKiBz
ZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAg
R1JlZlB0cjxTb3VwUmVxdWVzdGVyPiByZXF1ZXN0ZXIgPSBTT1VQX1JFUVVFU1RFUihzb3VwX3Nl
c3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9UWVBFX1JFUVVFU1RFUikpOworICAgIGlm
IChyZXF1ZXN0ZXIpCisgICAgICAgIHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJl
KFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlcXVlc3Rlci5nZXQoKSksIFdFQktJVF9UWVBFX1NPVVBf
UkVRVUVTVF9HRU5FUklDKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVxdWVzdGVyID0gYWRvcHRH
UmVmKHNvdXBfcmVxdWVzdGVyX25ldygpKTsKKyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0
dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlcXVlc3Rlci5nZXQoKSkpOworICAg
IH0KKyAgICBTb3VwUmVxdWVzdENsYXNzKiBnZW5lcmljUmVxdWVzdENsYXNzID0gc3RhdGljX2Nh
c3Q8U291cFJlcXVlc3RDbGFzcyo+KGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfU09VUF9S
RVFVRVNUX0dFTkVSSUMpKTsKKyAgICBnZW5lcmljUmVxdWVzdENsYXNzLT5zY2hlbWVzID0gY29u
c3RfY2FzdDxjb25zdCBjaGFyKio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcioqPihtX3NjaGVtZXMt
PnBkYXRhKSk7CisgICAgc291cF9zZXNzaW9uX2ZlYXR1cmVfYWRkX2ZlYXR1cmUoU09VUF9TRVNT
SU9OX0ZFQVRVUkUocmVxdWVzdGVyLmdldCgpKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dF
TkVSSUMpOworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZFVSSVJlcXVlc3Qo
Y29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3lu
Y1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKG1fcmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCkp
OworICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5F
UklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3Vs
dC5nZXQoKSkpKSk7CisgICAgaWYgKHJlcXVlc3REYXRhLnNpemUoKSkgeworICAgICAgICB3ZWJr
aXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QuZ2V0KCksIHJlcXVl
c3REYXRhLnNpemUoKSk7CisgICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRl
bnRUeXBlKHJlcXVlc3QuZ2V0KCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBH
SW5wdXRTdHJlYW0qIGRhdGFTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21f
ZGF0YShyZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSwgMCk7CisgICAgICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSwg
ZGF0YVN0cmVhbSwgZ19vYmplY3RfdW5yZWYpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdPd25Q
dHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3Vy
aShTT1VQX1JFUVVFU1QocmVxdWVzdC5nZXQoKSkpLCBGQUxTRSkpOworICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KFN0cmluZzo6ZnJvbVVURjgodXJpU3Ry
aW5nLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJv
cihXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgICAg
IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfZXJyb3IocmVzdWx0LmdldCgpLCBnX3F1YXJrX2Zy
b21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUo
KSwgIiVzIiwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRh
KCkpOworICAgIH0KKyAgICBnX3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0Lmdl
dCgpKTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5j
UmVzdWx0KiByZXN1bHQpCit7CisgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+
IHJlcXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNf
cmVzdWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdCkpKSk7CisgICAg
U291cFVSSSogdXJpID0gc291cF9yZXF1ZXN0X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3Qu
Z2V0KCkpKTsKKyAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmco
dXJpLCBGQUxTRSkpOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVx
dWVzdElEKCk7CisgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0SUQsIHJlc3VsdCk7CisgICAg
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5OjpEaWRSZWNlaXZlVVJJUmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaVN0cmlu
Zy5nZXQoKSksIHJlcXVlc3RJRCksIDApOworfQorCitHSW5wdXRTdHJlYW0qIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlcjo6ZmluaXNoKEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0KQoreworICAgIHJl
dHVybiBHX0lOUFVUX1NUUkVBTShnX29iamVjdF9yZWYoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dl
dF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTkwZjBlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HSW5w
dXRTdHJlYW0gR0lucHV0U3RyZWFtOwordHlwZWRlZiBzdHJ1Y3QgX0dTaW1wbGVBc3luY1Jlc3Vs
dCBHU2ltcGxlQXN5bmNSZXN1bHQ7CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3Vt
ZW50RGVjb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xh
c3MgTWVzc2FnZUlEOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vz
czsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJTb3VwUmVxdWVzdE1hbmFnZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAgfldlYlNvdXBSZXF1ZXN0TWFuYWdl
cigpOworCisgICAgdm9pZCBzZW5kKEdTaW1wbGVBc3luY1Jlc3VsdCopOworICAgIEdJbnB1dFN0
cmVhbSogZmluaXNoKEdTaW1wbGVBc3luY1Jlc3VsdCopOworCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJT
b3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCByZWdpc3Rl
clVSSVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgdm9pZCBzZW5kVVJJUmVxdWVz
dChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
dWludDY0X3QgcmVxdWVzdElEKTsKKworICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBH
UmVmUHRyPEdQdHJBcnJheT4gbV9zY2hlbWVzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdTaW1w
bGVBc3luY1Jlc3VsdCo+IG1fcmVxdWVzdE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAu
cHkKaW5kZXggMmMzMWE1ZC4uMWVlYTQ5NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMxMDksNiArMzEwOSw3IEBAIGRlZiBjaGVja19pZGVu
dGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBm
aWxlX3N0YXRlCiAgICAgICAgICAgICAgICAgYW5kIG5vdCAoZmlsZW5hbWUuZmluZCgnZ3RrJykg
Pj0gMCBhbmQgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJraXRfJykgPj0gMCkK
ICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgn
dHN0XycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0
c3dpdGgoJ3dlYmtpdF9kb21fb2JqZWN0XycpCisgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2Rp
ZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9zb3VwJykKICAgICAgICAgICAgICAg
ICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnTlBOXycpCiAgICAgICAg
ICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ05QUF8nKQog
ICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCdO
UF8nKQo=
</data>
<flag name="commit-queue"
          id="142559"
          type_id="3"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137501</attachid>
            <date>2012-04-17 02:27:03 -0700</date>
            <delta_ts>2012-04-17 02:40:31 -0700</delta_ts>
            <desc>Updated patch to fix the build</desc>
            <filename>wk2-soup-uri-schemes2.diff</filename>
            <type>text/plain</type>
            <size>65564</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjODFlNzg4Li4zMTAyZDZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVz
IGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEJVSUxESU5HX1NPVVBfXyBtYWNybyB0byBjb21waWxh
dGlvbi4KKwogMjAxMi0wNC0xNiAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmUtYWRkIEdQVSBERVBTIGJ1aWxkZXJzIHRvIGZsYWtpbmVzcyBkYXNoYm9hcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDZmZTMxOTAuLjdhYWU0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBB
ZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEdQdHJBcnJheSB0
ZW1wbGF0ZSB0byBiZSBhYmxlIHRvIHVzZSBHUmVmUHRyIHdpdGggR1B0ckFycmF5cy4KKworICAg
ICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToK
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmRlcmVmR1B0cik6CisgICAgICAgICogd3Rm
L2dvYmplY3QvR1JlZlB0ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvZ29iamVj
dC9HVHlwZWRlZnMuaDoKKwogMjAxMi0wNC0xNiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTWFrZSBOdWxsUHRyLmggY29tcGlsZSB3aXRoIGNsYW5nIC1zdGQ9
YysrMTEgYW5kIGxpYnN0ZGMrKzQuMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg2ZjAzYjQuLmVhM2Y4MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjEgQEAKKzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8g
cmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIG5ldyBm
aWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOiBBZGQKKyAgICAgICAgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyIGFuZAor
ICAgICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSBtZXNzYWdlIHR5
cGVzIHRvIGlkZW50aWZ5CisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlciBtZXNzYWdlcy4K
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IEluY2x1ZGUgV0tCYXNlU291cC5oIHdo
ZW4gYnVpbGRpbmcgd2l0aAorICAgICAgICBzb3VwIG5ldHdvcmsgYmFja2VuZC4KKyAgICAgICAg
KiBTaGFyZWQvQVBJT2JqZWN0Lmg6IEFkZCBTb3VwUmVxdWVzdE1hbmFnZXIgdHlwZSB3aGVuIHVz
aW5nIHNvdXAuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOiBJbmNsdWRl
IFdLQVBJQ2FzdFNvdXAuaCB3aGVuCisgICAgICAgIGJ1aWxkaW5nIHdpdGggc291cCBuZXR3b3Jr
IGJhY2tlbmQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6IE1hcCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiB0
bworICAgICAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRl
eHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIpOiBSZXR1cm4gV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYK
KyAgICAgICAgYXNzb2NpYXRlZCB0byB0aGUgY29udGV4dC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Nv
dXBSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCk6IFJldHVybiB0aGUKKyAgICAgICAgV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkgQVBJIHR5cGUuCisgICAgICAgIChXS1NvdXBSZXF1ZXN0TWFuYWdl
clNldENsaWVudCk6IFNldCB0aGUgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuCisgICAgICAg
IChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKTogQ2FsbAorICAgICAgICBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVnaXN0ZXJVUklTY2hlbWUoKS4KKyAgICAgICAg
KFdLU291cFJlcXVlc3RNYW5hZ2VyU2VuZFVSSVJlcXVlc3QpOiBDYWxsCisgICAgICAgIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5OjpzZW5kVVJJUmVxdWVzdCgpLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
V2ViQ29udGV4dCk6IEluaXRpYWxpemUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94
eSB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250
ZXh0KTogSW52YWxpZGF0ZSBhbmQgY2xlYXIgdGhlCisgICAgICAgIG1fc291cFJlcXVlc3RNYW5h
Z2VyUHJveHkgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpk
aXNjb25uZWN0UHJvY2Vzcyk6IEludmFsaWRhdGUgdGhlCisgICAgICAgIG1fc291cFJlcXVlc3RN
YW5hZ2VyUHJveHkgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpkaWRSZWNlaXZlTWVzc2FnZSk6IEZvcndhcmQgdGhlIG1lc3NhZ2UgdG8KKyAgICAgICAgbV9z
b3VwUmVxdWVzdE1hbmFnZXJQcm94eSBpZiBpdCdzIGEKKyAgICAgICAgTWVzc2FnZUNsYXNzV2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHkgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpzb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eSk6IFJldHVybgorICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9yd2FyZCBtZXNzYWdlIHRvCisg
ICAgICAgIHRoZSB3ZWIgY29udGV4dCBpZiBpdCdzIGEgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkKKyAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRSZWNlaXZlVVJJUmVxdWVzdCk6IENh
bGwKKyAgICAgICAgZGlkUmVjZWl2ZVVSSVJlcXVlc3QgY2FsbGJhY2sgaWYgaXQgaGFzIGFuIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKTogQ3JlYXRlIGEgbmV3CisgICAgICAgIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eTo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6fldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW5pdGlhbGl6
ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojpk
aWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5OjpyZWdpc3RlclVSSVNjaGVtZSk6IFNlbmQKKyAgICAgICAgUmVnaXN0ZXJVUklTY2hl
bWUgbWVzc2FnZSB0byB0aGUgV2ViUHJvY2VzcyB0byByZWdpc3RlciB0aGUgZ2l2ZW4KKyAgICAg
ICAgVVJJIHNjaGVtZS4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnNlbmRVUklSZXF1ZXN0KTogU2VuZAorICAgICAgICBTZW5kVVJJUmVxdWVzdCBtZXNzYWdl
IHRvIHRoZSBXZWJQcm9jZXNzIHdpdGggdGhlIGdpdmVuIGRhdGEgYW5kCisgICAgICAgIGRhdGEg
dHlwZS4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KTogQ2FsbAorICAgICAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdCBjYWxs
YmFjayB0byBhbGxvdyB0aGUgdXNlciB0byBoYW5kbGUgdGhlCisgICAgICAgIHJlcXVlc3QuCisg
ICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOiBJbml0aWFsaXplIG1f
c291cFJlcXVlc3RNYW5hZ2VyCisgICAgICAgIHdoZW4gdXNpbmcgc291cC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkIHRoZSBtZXNzYWdl
IHRvCisgICAgICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyIGlmIGl0J3MgYSBNZXNzYWdlQ2xhc3NX
ZWJTb3VwUmVxdWVzdE1hbmFnZXIKKyAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c291cFJlcXVl
c3RNYW5hZ2VyKTogUmV0dXJuIG1fc291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAqIFdlYlBy
b2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9zb3Vw
X3JlcXVlc3RfZ2VuZXJpY19pbml0KToKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NlbmRBc3luYyk6IENyZWF0ZSBhIEdTaW1wbGVBc3luY1Jlc3VsdAorICAgICAgICB0byBoYW5k
bGUgdGhlIHJlcXVlc3QgYW5kIHBhc3MgaXQgdG8gdGhlIFdlYlNvdXBSZXF1ZXN0TWFuYWdlci4K
KyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRGaW5pc2gpOiBGaW5pc2ggdGhl
IGFzeW5jIG9wZXJhdGlvbgorICAgICAgICBzdGFydGVkIGJ5IHdlYmtpdFNvdXBSZXF1ZXN0R2Vu
ZXJpY1NlbmRBc3luYygpIGFuZCByZXR1cm4gdGhlCisgICAgICAgIGNvbnRlbnRzIG9mIHRoZSBy
ZXF1ZXN0IGFzIHJldHVybmVkIGJ5IFdlYlNvdXBSZXF1ZXN0TWFuYWdlci4KKyAgICAgICAgKHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRMZW5ndGgpOiBHZXQgdGhlIHJlcXVlc3QK
KyAgICAgICAgY29udGVudHMgbGVuZ3RoLgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5l
cmljR2V0Q29udGVudFR5cGUpOiBHZXQgdGhlIHJlcXVlc3QgbWltZQorICAgICAgICB0eXBlLgor
ICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudExlbmd0aCk6IFNldCB0aGUgcmVx
dWVzdAorICAgICAgICBjb250ZW50cyBsZW5ndGguCisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVz
dEdlbmVyaWNTZXRDb250ZW50VHlwZSk6IFNldCB0aGUgcmVxdWVzdCBtaW1lCisgICAgICAgIHR5
cGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlU291cFJlcXVlc3RJRCk6IEhl
bHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhCisgICAgICAgIHVuaXF1ZSByZXF1ZXN0IGlkZW50
aWZpZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6V2ViU291cFJl
cXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjp+
V2ViU291cFJlcXVlc3RNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RN
YW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1
ZXN0TWFuYWdlcjo6cmVnaXN0ZXJVUklTY2hlbWUpOiBBZGQgdGhlIHNjaGVtZQorICAgICAgICB0
byB0aGUgc2NoZW1lcyBhcnJheSBhbmQgYWRkIGEgbmV3IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJp
YworICAgICAgICBmZWF0dXJlIHdpdGggdGhlIG5ldyBzY2hlbWUgbGlzdCB0byB0aGUgU291cFJl
cXVlc3RlciBmZWF0dXJlLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6
OnNlbmRVUklSZXF1ZXN0KTogQ29tcGxldGUgdGhlCisgICAgICAgIGFzeW5jIG9wZXJhdGlvbiBi
eSBjcmVhdGluZyBhIEdJbnB1dFN0cmVhbSB3aXRoIHRoZSByZXF1ZXN0IGRhdGEsCisgICAgICAg
IG9yIHNldHRpbmcgYW4gZXJyb3IgaW4gY2FzZSBvZiBmYWlsdXJlLgorICAgICAgICAoV2ViS2l0
OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQpOiBTZW5kIERpZFJlY2VpdmVVUklSZXF1ZXN0
CisgICAgICAgIG1lc3NhZ2UgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6Oldl
YlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZmluaXNoKTogUmV0dXJuIHRoZSBHSW5wdXRTdHJlYW0KKyAg
ICAgICAgY29udGFpbmluZyB0aGUgcmVxdWVzdCBkYXRhLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisKIDIwMTIt
MDQtMTYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkIG1pc3NpbmcgZmlsZXMgdG8gYnVpbGQgd2Via2l0Mi9FZmwuCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjIyNzZiZS4uYjVh
MmNkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIGEgd2F5IHRvIHJlZ2lzdGVyIGN1
c3RvbSB1cmkgc2NoZW1lcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAu
cHk6CisgICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24pOiBBZGQg
d2Via2l0X3NvdXAgcHJlZml4IHRvCisgICAgICAgIHRoZSBsaXN0IG9mIGV4Y2VwdGlvbnMgdG8g
dGhlIHVuZGVyc2NvcmVzIGluIGlkZW50aWZpZXJzIHJ1bGUuCisKIDIwMTItMDQtMTYgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS10gVXNlIGNv
bmZpZ3VyZSBpbnN0ZWFkIG9mIGF1dG9nZW4uc2ggZm9yIGd0aysKZGlmZiAtLWdpdCBhL0dOVW1h
a2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNjVlN2M4NS4uYWY1ZTZjYSAxMDA2NDQK
LS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTE0Niw2ICsxNDYs
NyBAQCBlbmRpZgogZ2xvYmFsX2NwcGZsYWdzICs9IFwKIAktREJVSUxESU5HX0NBSVJPX189MSBc
CiAJLURCVUlMRElOR19HVEtfXz0xIFwKKwktREJVSUxESU5HX1NPVVBfXz0xIFwKIAktRFdURl9D
SEFOR0VTCiAKICMgRm9yIHRoZSBHdGsgcG9ydCB3ZSB3YW50IHRvIHVzZSBYUF9VTklYIGJvdGgg
aW4gWDExIGFuZCBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCmluZGV4IDMwZGYyYzku
LjNhMDE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcApAQCAtMTA3LDYgKzEwNywx
OSBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHU291cmNlKiBwdHIpCiAgICAgICAgIGdf
c291cmNlX3VucmVmKHB0cik7CiB9CiAKK3RlbXBsYXRlIDw+IEdQdHJBcnJheSogcmVmR1B0cihH
UHRyQXJyYXkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX3B0cl9hcnJheV9yZWYo
cHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihH
UHRyQXJyYXkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX3B0cl9hcnJheV91bnJl
ZihwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIEVOQUJMRShHTElC
X1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBi
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCmluZGV4IDkyYWNmZmMuLjRiZjVlMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCkBAIC0yMDgsNiArMjA4LDggQEAgdGVtcGxhdGUg
PD4gR1ZhcmlhbnQqIHJlZkdQdHIoR1ZhcmlhbnQqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRl
cmVmR1B0cihHVmFyaWFudCogcHRyKTsKIHRlbXBsYXRlIDw+IEdTb3VyY2UqIHJlZkdQdHIoR1Nv
dXJjZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdTb3VyY2UqIHB0cik7Cit0
ZW1wbGF0ZSA8PiBHUHRyQXJyYXkqIHJlZkdQdHIoR1B0ckFycmF5KiBwdHIpOwordGVtcGxhdGUg
PD4gdm9pZCBkZXJlZkdQdHIoR1B0ckFycmF5KiBwdHIpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gaW5saW5lIFQqIHJlZkdQdHIoVCogcHRyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZ29iamVjdC9HVHlwZWRlZnMuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZz
LmgKaW5kZXggZTI5MjUwYi4uNzljMzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29i
amVjdC9HVHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5o
CkBAIC02Myw2ICs2Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9HVmFyaWFudCBHVmFyaWFudDsKIHR5
cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dUaW1lciBH
VGltZXI7CiB0eXBlZGVmIHN0cnVjdCBfR0tleUZpbGUgR0tleUZpbGU7Cit0eXBlZGVmIHN0cnVj
dCBfR1B0ckFycmF5IEdQdHJBcnJheTsKIAogI2lmIFVTRShDQUlSTykKIHR5cGVkZWYgc3RydWN0
IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXgg
MWRmMTMxMDIuLjU2OWM0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xLDYgKzEsNyBAQAog
bGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9IRUFERVJTID0gXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9j
L2d0ay9XS0Jhc2VHdGsuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvZ3RrL1dLR3JhcGhp
Y3NDb250ZXh0R3RrLmggXAorCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291
cC5oIFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9XS0FycmF5LmggXAogCSQoV2ViS2l0Mikv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9XS0NlcnRp
ZmljYXRlSW5mby5oIFwKQEAgLTM1LDYgKzM2LDkgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9IRUEK
IAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tBUElDYXN0R3RrLmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKKwkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L0MvV2ViS2l0Mi5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
IFwKQEAgLTE5MCw3ICsxOTQsMTEgQEAgd2Via2l0Ml9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYlByb2Nlc3NNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAotCURlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaAorCURlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VzLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5TWVzc2FnZXMuaAogCiB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvd2Via2l0Mmd0ay93ZWJraXQyL1dlYktpdEVudW1UeXBlcy5jcHAgXApAQCAt
MjYzLDYgKzI3MSw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL2d0ay9XS0Jhc2VHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L2d0ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvZ3RrL1dLR3JhcGhpY3NDb250ZXh0R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL3NvdXAvV0tCYXNlU291cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tBcnJheS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBcCkBAIC00NjcsNiArNDc2LDEx
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Z3RrL1dLVmlldy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQ
SUNhc3RTb3VwLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29u
dGV4dFNvdXAuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nv
bnRleHRTb3VwLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dlYktpdDIuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5oIFwKQEAgLTY5Miw2ICs3MDYsMTAgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJvY2Vzc01vZGVsLmggXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHku
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCBcCkBAIC05MTgsNiArOTM2LDEwIEBA
IHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hl
L1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmggXAorCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkNv
bnRleHRNZW51Q2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgXApAQCAt
MTAxNyw2ICsxMDM5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9n
dGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zIFwKQEAgLTEwMjYsNiArMTA0OSw3IEBAIGxpYndlYmtpdDJn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrIFwKKwktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0aGVudGljYXRpb24gXApAQCAtMTAzNiw2ICsxMDYwLDcgQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL2d0ayBcCisJLUkk
KHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiBcCkBAIC0xMDU1LDYgKzEwODAsNyBAQCBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291
cmNlQ2FjaGUgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9ndGsg
XApAQCAtMTE3OCw2ICsxMjA0LDcgQEAgdnBhdGggJS5tZXNzYWdlcy5pbiA9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9zb3VwIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MgXAogCSQoV2ViS2l0Mikv
V2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0
aGVudGljYXRpb24gXApAQCAtMTE5MSw3ICsxMjE4LDggQEAgdnBhdGggJS5tZXNzYWdlcy5pbiA9
IFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL1Jlc291cmNlQ2FjaGUgXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dCBcCi0JJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UKKwkkKFdlYktpdDIpL1dlYlByb2Nl
c3MvV2ViUGFnZSBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL3NvdXAKIAogbWVzc2FnZV9nZW5f
c2NyaXB0cyA9IFwKIAkkKFdlYktpdDIpL1NjcmlwdHMvZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZl
ci5weSBcCkBAIC0xNTc5LDYgKzE2MDcsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxz
ICQoV2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2Fkcy8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdl
YktpdDIpL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2Vi
S2l0MikvVUlQcm9jZXNzL1BsdWdpbnMvKi5pbikgXAorCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9V
SVByb2Nlc3Mvc291cC8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIpL1dlYlByb2Nlc3Mv
Ki5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2Fj
aGUvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uLyouaW4pIFwKQEAgLTE1OTIsNCArMTYyMSw1IEBAIEVYVFJBX0RJU1QgKz0gXAogCSQoc2hl
bGwgbHMgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1BsdWdpbnMvKi5pbikgXAogCSQoc2hlbGwgbHMg
JChXZWJLaXQyKS9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvKi5pbikgXAogCSQoc2hlbGwgbHMg
JChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LyouaW4pIFwKLQkkKHNoZWxsIGxz
ICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlLyouaW4pCisJJChzaGVsbCBscyAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvV2ViUGFnZS8qLmluKSBcCisJJChzaGVsbCBscyAkKFdlYktpdDIpL1dl
YlByb2Nlc3Mvc291cC8qLmluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUlELmgKaW5kZXggNmVlODA5YS4uNWYzOThhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC01Myw3ICs1MywxMCBAQCBlbnVtIE1lc3NhZ2VD
bGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViUHJvY2VzcywKICAgICBNZXNzYWdlQ2xhc3NXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NFdmVudERpc3BhdGNoZXIsCi0g
ICAgCisjaWYgVVNFKFNPVVApCisgICAgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2Vy
LAorI2VuZGlmCisKICAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSB3ZWIgcHJvY2VzcyB0byB0
aGUgVUkgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xhc3NEb3dubG9hZFByb3h5LAogICAgIE1lc3Nh
Z2VDbGFzc0RyYXdpbmdBcmVhUHJveHksCkBAIC03Myw2ICs3Niw5IEBAIGVudW0gTWVzc2FnZUNs
YXNzIHsKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlUHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2Vi
UHJvY2Vzc1Byb3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHksCisjaWYgVVNFKFNPVVApCisgICAgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHksCisjZW5kaWYKIAogICAgIC8vIE1lc3NhZ2VzIHNlbnQgdG8gYSBXZWJDb25uZWN0aW9u
CiAgICAgTWVzc2FnZUNsYXNzV2ViQ29ubmVjdGlvbkxlZ2FjeSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAppbmRleCBjODY1NmU0Li5iZTYxNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlR3RrLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQlVJTERJTkdfU09VUF9fKQorI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlU291cC5oPgorI2VuZGlmCisKIC8qIFdlYktpdDIgc2hhcmVkIHR5
cGVzICovCiAKIHR5cGVkZWYgdWludDMyX3QgV0tUeXBlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2Jq
ZWN0LmgKaW5kZXggZDZjYzAzMC4uZDcyODIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aApAQCAtMTE5LDcgKzExOSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gUGxhdGZvcm0gc3Bl
Y2lmaWMKICAgICAgICAgVHlwZUVkaXRDb21tYW5kUHJveHksCi0gICAgICAgIFR5cGVWaWV3Cisg
ICAgICAgIFR5cGVWaWV3LAorI2lmIFVTRShTT1VQKQorICAgICAgICBUeXBlU291cFJlcXVlc3RN
YW5hZ2VyLAorI2VuZGlmCiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkFQSU9iamVjdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXggYmQzZmEyZC4uMTQ4
ZjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2Fz
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAt
MzU5LDQgKzM1OSw5IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0
b0FQSShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaWYgZGVmaW5lZChCVUlM
RElOR19HVEtfXykKICNpbmNsdWRlICJXS0FQSUNhc3RHdGsuaCIKICNlbmRpZgorCisjaWYgZGVm
aW5lZChCVUlMRElOR19TT1VQX18pCisjaW5jbHVkZSAiV0tBUElDYXN0U291cC5oIgorI2VuZGlm
CisKICNlbmRpZiAvLyBXS0FQSUNhc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM4YTk1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLQVBJQ2FzdFNvdXBfaAorI2RlZmluZSBXS0FQSUNhc3RTb3VwX2gKKworI2lmbmRlZiBX
S0FQSUNhc3RfaAorI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgXCJXS0FQSUNhc3QuaFwiIGluc3Rl
YWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CisKK1dLX0FERF9BUElfTUFQUElO
RyhXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkpCisK
K30KKworI2VuZGlmIC8vIFdLQVBJQ2FzdFNvdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lNGU4OGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgV0tDb250ZXh0R2V0U291cFJl
cXVlc3RNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQoreworICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwoY29udGV4dFJlZiktPnNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRT
b3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3Vw
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5NTRmZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNv
dXAuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDb250ZXh0U291cF9oCisjZGVmaW5lIFdLQ29udGV4
dFNvdXBfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIFdLQ29udGV4
dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0NvbnRleHRTb3VwX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVl
c3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
MDQyZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdldFR5
cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpB
UElUeXBlKTsKK30KKwordm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChXS1NvdXBS
ZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cFJlcXVl
c3RNYW5hZ2VyQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5h
Z2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3a0NsaWVudCk7Cit9CisKK3ZvaWQgV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3Vw
UmVxdWVzdE1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIHNjaGVtZVJlZikKK3sKKyAgICB0b0ltcGwo
c291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+cmVnaXN0ZXJVUklTY2hlbWUodG9JbXBsKHNjaGVtZVJl
ZiktPnN0cmluZygpKTsKK30KKwordm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNlbmRVUklSZXF1
ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tEYXRh
UmVmIGRhdGEsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpCit7
CisgICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPnNlbmRVUklSZXF1ZXN0KHRvSW1w
bChkYXRhKSwgdG9JbXBsKG1pbWVUeXBlUmVmKS0+c3RyaW5nKCksIHJlcXVlc3RJRCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1
ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGRj
ZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tTb3VwUmVxdWVz
dE1hbmFnZXJfaAorI2RlZmluZSBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oCisKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLU291cFJlcXVl
c3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVxdWVzdE1hbmFn
ZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYsIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJE
aWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrIGRpZFJlY2VpdmVVUklSZXF1ZXN0OworfTsKK3R5
cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IFdLU291cFJlcXVlc3RNYW5h
Z2VyQ2xpZW50OworCitlbnVtIHsga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Q3VycmVudFZl
cnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdl
dFR5cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVu
dChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGll
bnQqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVy
VVJJU2NoZW1lKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYp
OworV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJTZW5kVVJJUmVxdWVzdChXS1Nv
dXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZiwg
dWludDY0X3QgcmVxdWVzdElEKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAppbmRleCAyZWNmZjlkLi5mMWEwZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC02Niw2ICs2NiwxMCBAQAogI2luY2x1ZGUgIkJ1
aWx0SW5QREZWaWV3LmgiCiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTEzNSw2ICsxMzks
OSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcykpCiAgICAgLCBt
X3BsdWdpblNpdGVEYXRhTWFuYWdlcihXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI6OmNyZWF0ZSh0
aGlzKSkKICAgICAsIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eShXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlclByb3h5OjpjcmVhdGUodGhpcykpCisjaWYgVVNFKFNPVVApCisgICAgLCBtX3NvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGUodGhp
cykpCisjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBtX3Nob3VsZFBhaW50TmF0aXZl
Q29udHJvbHModHJ1ZSkKICAgICAsIG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRU
UENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cykKQEAgLTE5Miw3ICsxOTksMTIgQEAgV2ViQ29udGV4
dDo6fldlYkNvbnRleHQoKQogCiAgICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZh
bGlkYXRlKCk7CiAgICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQo
KTsKLSAgICAKKworI2lmIFVTRShTT1VQKQorICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHkt
PmludmFsaWRhdGUoKTsKKyAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRl
eHQoKTsKKyNlbmRpZgorCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZGljdGlvbmFyeUNh
bGxiYWNrcyk7CiAKICAgICBwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCk7CkBAIC0zODAsNiAr
MzkyLDkgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MpCiAgICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICAgICBtX3Jl
c291cmNlQ2FjaGVNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKKyNpZiBVU0UoU09VUCkKKyAg
ICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7CisjZW5kaWYKIAogICAg
IC8vIFdoZW4gb3V0IG9mIHByb2Nlc3MgcGx1Zy1pbnMgYXJlIGVuYWJsZWQsIHdlIGRvbid0IHdh
bnQgdG8gaW52YWxpZGF0ZSB0aGUgcGx1Zy1pbiBzaXRlIGRhdGEKICAgICAvLyBtYW5hZ2VyIGp1
c3QgYmVjYXVzZSB0aGUgd2ViIHByb2Nlc3MgY3Jhc2hlcyBzaW5jZSBpdCdzIG5vdCBpbnZvbHZl
ZC4KQEAgLTcxNiw2ICs3MzEsMTMgQEAgdm9pZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShTT1VQKQorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29y
ZUlQQzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCkpIHsKKyAgICAg
ICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisKICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViQ29udGV4dExlZ2FjeU1lc3NhZ2U6Oktp
bmQ+KCkpIHsKICAgICAgICAgY2FzZSBXZWJDb250ZXh0TGVnYWN5TWVzc2FnZTo6UG9zdE1lc3Nh
Z2U6IHsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCmluZGV4IGZmY2Y5YjMuLmRkZjNkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaApAQCAtNTgsNiArNTgsOSBAQCBjbGFzcyBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OworI2lmIFVTRShTT1VQKQorY2xh
c3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CisjZW5kaWYKIHN0cnVjdCBTdGF0aXN0aWNz
RGF0YTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIApAQCAtMTYx
LDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqIG5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmdldCgpOyB9CiAgICAgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyKiBwbHVnaW5T
aXRlRGF0YU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblNpdGVEYXRhTWFuYWdlci5n
ZXQoKTsgfQogICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkqIHJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHku
Z2V0KCk7IH0KKyNpZiBVU0UoU09VUCkKKyAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSog
c291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3NvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmdldCgpOyB9CisjZW5kaWYKIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAg
ICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBAIC0yOTYsNiArMzAyLDkgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBtX25vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTsKICAgICBSZWZQdHI8V2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyPiBtX3BsdWdp
blNpdGVEYXRhTWFuYWdlcjsKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eT4gbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OworI2lmIFVTRShTT1VQKQorICAgIFJlZlB0
cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsK
KyNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV9zaG91bGRQYWludE5hdGl2
ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA3ZWU1MzI4Li4yMmRhY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzE0LDYgKzMxNCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBD
b3JlSVBDCiAgICAgICAgIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+KCkKICAgICAgICAgfHwgbWVzc2FnZUlELmlzPENv
cmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+KCkKICAgICAgICAg
fHwgbWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKQorI2lmIFVTRShTT1VQKQorICAgICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQ
Qzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCkKKyNlbmRpZgogICAg
ICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eT4oKSkgewogICAgICAgICBtX2NvbnRleHQtPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1
ZXN0TWFuYWdlckNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGViZWY0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50OjpkaWRSZWNlaXZlVVJJUmVxdWVzdChXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSog
c291cFJlcXVlc3RNYW5hZ2VyLCBXZWJVUkwqIHVybCwgdWludDY0X3QgcmVxdWVzdElEKQorewor
ICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3QpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KHRvQVBJKHNvdXBSZXF1
ZXN0TWFuYWdlciksIHRvQVBJKHVybCksIHJlcXVlc3RJRCwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmJiYTcwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudF9o
CisjZGVmaW5lIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudF9oCisKKyNpbmNsdWRlICJBUElD
bGllbnQuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJV
Ukw7CisKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUElDbGll
bnQ8V0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQsIGtXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVu
dEN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgYm9vbCBkaWRSZWNlaXZlVVJJUmVxdWVz
dChXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSosIFdlYlVSTCosIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZWI4ZDI5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAt
MCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgor
CisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUGFzc1JlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkoY29udGV4dCkpOworfQorCitX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkoV2Vi
Q29udGV4dCogY29udGV4dCkKKyAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQoreworfQorCitX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6fldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkK
K3sKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit7
Cit9CisKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbGllbnQo
Y29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVu
dC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5OjpyZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKK3sKKyAgICBBU1NFUlQobV93ZWJDb250ZXh0KTsKKyAgICBtX3dlYkNvbnRleHQtPnNlbmRU
b0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJTb3Vw
UmVxdWVzdE1hbmFnZXI6OlJlZ2lzdGVyVVJJU2NoZW1lKHNjaGVtZSkpOworfQorCit2b2lkIFdl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpzZW5kVVJJUmVxdWVzdChjb25zdCBXZWJEYXRhKiBy
ZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKQor
eworICAgIEFTU0VSVChtX3dlYkNvbnRleHQpOworICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OlNlbmRVUklSZXF1ZXN0
KHJlcXVlc3REYXRhLT5kYXRhUmVmZXJlbmNlKCksIG1pbWVUeXBlLCByZXF1ZXN0SUQpKTsKK30K
Kwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KHRoaXMsIFdlYlVSTDo6Y3JlYXRlKHVyaVN0
cmluZykuZ2V0KCksIHJlcXVlc3RJRCkpCisgICAgICAgIHNlbmRVUklSZXF1ZXN0KFdlYkRhdGE6
OmNyZWF0ZSgwLCAwKS5nZXQoKSwgU3RyaW5nKCksIHJlcXVlc3RJRCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNmViZTRmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlf
aAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBD
b3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFz
cyBNZXNzYWdlSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0
OworY2xhc3MgV2ViRGF0YTsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBl
ID0gVHlwZVNvdXBSZXF1ZXN0TWFuYWdlcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOworICAgIHZpcnR1YWwg
fldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsK
KyAgICB2b2lkIGNsZWFyQ29udGV4dCgpIHsgbV93ZWJDb250ZXh0ID0gMDsgfQorCisgICAgdm9p
ZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Kik7CisK
KyAgICB2b2lkIHJlZ2lzdGVyVVJJU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICB2
b2lkIHNlbmRVUklSZXF1ZXN0KGNvbnN0IFdlYkRhdGEqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCB1aW50NjRfdCByZXF1ZXN0SUQpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eShXZWJD
b250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5
cGU7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmlT
dHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAgICBXZWJDb250ZXh0
KiBtX3dlYkNvbnRleHQ7CisgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IG1fY2xpZW50
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZDA1MjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBJ
Z2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitt
ZXNzYWdlcyAtPiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSB7CisgICAgRGlkUmVjZWl2ZVVS
SVJlcXVlc3QoV1RGOjpTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTIyZjRjNi4uYWRl
NDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDgs
NiArMTQ4LDkgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogICAgICwgbV9kaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0KGZhbHNl
KQogI2VuZGlmCisjaWYgVVNFKFNPVVApCisgICAgLCBtX3NvdXBSZXF1ZXN0TWFuYWdlcih0aGlz
KQorI2VuZGlmCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAgICAgLy8gSW5pdGlh
bGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KQEAgLTY1MCw2ICs2NTMsMTMgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShTT1VQ
KQorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVl
c3RNYW5hZ2VyPigpKSB7CisgICAgICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyLmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NJbmplY3RlZEJ1bmRsZT4oKSkgewogICAgICAgICBpZiAoIW1faW5qZWN0ZWRCdW5kbGUp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDFhNDk4OWYuLmE5ODFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIldlYlNvdXBS
ZXF1ZXN0TWFuYWdlci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkKIGNsYXNzIFFOZXR3
b3JrQWNjZXNzTWFuYWdlcjsKICNlbmRpZgpAQCAtMTQ4LDYgKzE1MiwxMCBAQCBwdWJsaWM6CiAK
ICAgICBFdmVudERpc3BhdGNoZXImIGV2ZW50RGlzcGF0Y2hlcigpIHsgcmV0dXJuIG1fZXZlbnRE
aXNwYXRjaGVyOyB9CiAKKyNpZiBVU0UoU09VUCkKKyAgICBXZWJTb3VwUmVxdWVzdE1hbmFnZXIm
IHNvdXBSZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fc291cFJlcXVlc3RNYW5hZ2VyOyB9Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAKQEAgLTI4Miw2ICsyOTAsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91
dDsKICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyIG1f
c291cFJlcXVlc3RNYW5hZ2VyOworI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44MDg5MDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitHX0RFRklORV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYywgd2Via2l0X3Nv
dXBfcmVxdWVzdF9nZW5lcmljLCBTT1VQX1RZUEVfUkVRVUVTVCkKKworc3RydWN0IF9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlIHsKKyAgICBDU3RyaW5nIG1pbWVUeXBlOworICAgIGdv
ZmZzZXQgY29udGVudExlbmd0aDsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0
R2VuZXJpY0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJLSVRfU09VUF9SRVFV
RVNUX0dFTkVSSUMob2JqZWN0KS0+cHJpdi0+fldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZh
dGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3Nv
dXBfcmVxdWVzdF9nZW5lcmljX2luaXQoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0
KQoreworICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGUqIHByaXYgPSBHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dF
TkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGUpOworICAgIHJlcXVlc3QtPnBy
aXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljUHJpdmF0
ZSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMo
U291cFJlcXVlc3QqIHJlcXVlc3QsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEdBc3luY1Jl
YWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIEdTaW1wbGVB
c3luY1Jlc3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25ldyhHX09CSkVDVChy
ZXF1ZXN0KSwgY2FsbGJhY2ssIHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PHZvaWQqPih3ZWJr
aXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5zb3VwUmVxdWVzdE1hbmFnZXIoKS5zZW5kKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBHSW5wdXRT
dHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRGaW5pc2goU291cFJlcXVlc3QqIHJl
cXVlc3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBHU2lt
cGxlQXN5bmNSZXN1bHQqIHNpbXBsZVJlc3VsdCA9IEdfU0lNUExFX0FTWU5DX1JFU1VMVChyZXN1
bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9nZXRfc291cmNl
X3RhZyhzaW1wbGVSZXN1bHQpID09IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk7
CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9lcnJvcihzaW1wbGVS
ZXN1bHQsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gV2ViUHJvY2Vz
czo6c2hhcmVkKCkuc291cFJlcXVlc3RNYW5hZ2VyKCkuZmluaXNoKHNpbXBsZVJlc3VsdCk7Cit9
CisKK3N0YXRpYyBnb2Zmc2V0IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRMZW5n
dGgoU291cFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdFQktJVF9TT1VQX1JFUVVF
U1RfR0VORVJJQyhyZXF1ZXN0KS0+cHJpdi0+Y29udGVudExlbmd0aDsKK30KKworc3RhdGljIGNv
bnN0IGNoYXIqIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRUeXBlKFNvdXBSZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMo
cmVxdWVzdCktPnByaXYtPm1pbWVUeXBlLmRhdGEoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
X3NvdXBfcmVxdWVzdF9nZW5lcmljX2NsYXNzX2luaXQoV2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
Q2xhc3MqIHJlcXVlc3RHZW5lcmljQ2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0R2VuZXJpY0NsYXNzKTsKKyAgICBnT2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljRmluYWxpemU7CisKKyAg
ICBTb3VwUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MgPSBTT1VQX1JFUVVFU1RfQ0xBU1MocmVx
dWVzdEdlbmVyaWNDbGFzcyk7CisgICAgcmVxdWVzdENsYXNzLT5zZW5kX2FzeW5jID0gd2Via2l0
U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jOworICAgIHJlcXVlc3RDbGFzcy0+c2VuZF9maW5p
c2ggPSB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoOworICAgIHJlcXVlc3RDbGFz
cy0+Z2V0X2NvbnRlbnRfbGVuZ3RoID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0Q29udGVu
dExlbmd0aDsKKyAgICByZXF1ZXN0Q2xhc3MtPmdldF9jb250ZW50X3R5cGUgPSB3ZWJraXRTb3Vw
UmVxdWVzdEdlbmVyaWNHZXRDb250ZW50VHlwZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShyZXF1ZXN0R2VuZXJpY0NsYXNzLCBzaXplb2YoV2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
UHJpdmF0ZSkpOworfQorCit2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRM
ZW5ndGgoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0LCBnb2Zmc2V0IGNvbnRlbnRM
ZW5ndGgpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29udGVudExlbmd0aCA9IGNvbnRlbnRMZW5n
dGg7Cit9CisKK3ZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudFR5cGUoV2Vi
S2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0LCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKK3sK
KyAgICByZXF1ZXN0LT5wcml2LT5taW1lVHlwZSA9IG1pbWVUeXBlOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJp
Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZTI4NmMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYy5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaAorI2RlZmluZSBX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNk
ZWZpbmUgTElCU09VUF9VU0VfVU5TVEFCTEVfUkVRVUVTVF9BUEkKKyNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAtcmVxdWVzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
U09VUF9SRVFVRVNUX0dFTkVSSUMgICAgICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVzdF9nZW5l
cmljX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQyhvYmpl
Y3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmplY3QpLCBXRUJLSVRf
VFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQywgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9HRU5FUklDKG9iamVjdCkgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iamVjdCksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9H
RU5FUklDKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9S
RVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9HRU5FUklDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKQor
I2RlZmluZSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUNfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VO
RVJJQywgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0U291cFJlcXVlc3RHZW5lcmljIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYzsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQ
cml2YXRlIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljIHsKKyAgICBTb3VwUmVxdWVzdCBwYXJlbnQ7CisKKyAgICBXZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWNDbGFzcyB7CisgICAgU291cFJlcXVlc3RDbGFzcyBwYXJlbnQ7Cit9
OworCitHVHlwZSB3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfZ2V0X3R5cGUoKTsKKwordm9p
ZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKFdlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYyosIGdvZmZzZXQgY29udGVudExlbmd0aCk7Cit2b2lkIHdlYmtpdFNvdXBSZXF1
ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyosIGNvbnN0
IGNoYXIqIG1pbWVUeXBlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIFdlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgyNDAzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDExNSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJl
cXVlc3RHZW5lcmljLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9y
c0d0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC1yZXF1ZXN0
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlU291cFJlcXVlc3RJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNvdXBS
ZXF1ZXN0SUQgPSAxOworICAgIHJldHVybiB1bmlxdWVTb3VwUmVxdWVzdElEKys7Cit9CisKK1dl
YlNvdXBSZXF1ZXN0TWFuYWdlcjo6V2ViU291cFJlcXVlc3RNYW5hZ2VyKFdlYlByb2Nlc3MqIHBy
b2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKKyAgICAsIG1fc2NoZW1lcyhhZG9wdEdS
ZWYoZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jKGdfZnJlZSkpKQoreworfQorCitXZWJT
b3VwUmVxdWVzdE1hbmFnZXI6On5XZWJTb3VwUmVxdWVzdE1hbmFnZXIoKQoreworfQorCit2b2lk
IFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYlNvdXBSZXF1
ZXN0TWFuYWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQor
Cit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJVUklTY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCit7CisgICAgaWYgKG1fc2NoZW1lcy0+bGVuKQorICAgICAgICBnX3B0cl9h
cnJheV9yZW1vdmVfaW5kZXhfZmFzdChtX3NjaGVtZXMuZ2V0KCksIG1fc2NoZW1lcy0+bGVuIC0g
MSk7CisgICAgZ19wdHJfYXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgZ19zdHJkdXAoc2NoZW1l
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hlbWVzLmdldCgpLCAw
KTsKKworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6
OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgR1JlZlB0cjxTb3VwUmVxdWVzdGVyPiByZXF1ZXN0ZXIg
PSBTT1VQX1JFUVVFU1RFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9U
WVBFX1JFUVVFU1RFUikpOworICAgIGlmIChyZXF1ZXN0ZXIpCisgICAgICAgIHNvdXBfc2Vzc2lv
bl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJlKFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlcXVlc3Rlci5n
ZXQoKSksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgcmVxdWVzdGVyID0gYWRvcHRHUmVmKHNvdXBfcmVxdWVzdGVyX25ldygpKTsKKyAgICAg
ICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJF
KHJlcXVlc3Rlci5nZXQoKSkpOworICAgIH0KKyAgICBTb3VwUmVxdWVzdENsYXNzKiBnZW5lcmlj
UmVxdWVzdENsYXNzID0gc3RhdGljX2Nhc3Q8U291cFJlcXVlc3RDbGFzcyo+KGdfdHlwZV9jbGFz
c19yZWYoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKTsKKyAgICBnZW5lcmljUmVx
dWVzdENsYXNzLT5zY2hlbWVzID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKio+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcioqPihtX3NjaGVtZXMtPnBkYXRhKSk7CisgICAgc291cF9zZXNzaW9uX2ZlYXR1
cmVfYWRkX2ZlYXR1cmUoU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVxdWVzdGVyLmdldCgpKSwgV0VC
S0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpOworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0
TWFuYWdlcjo6c2VuZFVSSVJlcXVlc3QoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgcmVx
dWVzdERhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sK
KyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRvcHRHUmVmKG1fcmVx
dWVzdE1hcC50YWtlKHJlcXVlc3RJRCkpOworICAgIEFTU0VSVChyZXN1bHQuZ2V0KCkpOworCisg
ICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
V0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2Jq
ZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdC5nZXQoKSkpKSk7CisgICAgaWYgKHJlcXVlc3REYXRh
LnNpemUoKSkgeworICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVu
Z3RoKHJlcXVlc3QuZ2V0KCksIHJlcXVlc3REYXRhLnNpemUoKSk7CisgICAgICAgIHdlYmtpdFNv
dXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QuZ2V0KCksIG1pbWVUeXBlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBHSW5wdXRTdHJlYW0qIGRhdGFTdHJlYW0gPSBnX21lbW9y
eV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShyZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3RE
YXRhLnNpemUoKSwgMCk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfb3BfcmVz
X2dwb2ludGVyKHJlc3VsdC5nZXQoKSwgZGF0YVN0cmVhbSwgZ19vYmplY3RfdW5yZWYpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0
cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShTT1VQX1JFUVVFU1QocmVxdWVzdC5nZXQoKSkpLCBG
QUxTRSkpOworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0
KFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVz
b3VyY2VSZXF1ZXN0KSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9zZXRfZXJyb3Io
cmVzdWx0LmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgIiVzIiwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICBnX3NpbXBsZV9hc3luY19y
ZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1h
bmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQpCit7CisgICAgR1JlZlB0cjxX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBf
UkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNf
UkVTVUxUKHJlc3VsdCkpKSk7CisgICAgU291cFVSSSogdXJpID0gc291cF9yZXF1ZXN0X2dldF91
cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QuZ2V0KCkpKTsKKyAgICBHT3duUHRyPGNoYXI+IHVyaVN0
cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOworCisgICAgdWludDY0X3QgcmVx
dWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7CisgICAgbV9yZXF1ZXN0TWFwLnNldChy
ZXF1ZXN0SUQsIHJlc3VsdCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpEaWRSZWNlaXZlVVJJUmVxdWVzdChT
dHJpbmc6OmZyb21VVEY4KHVyaVN0cmluZy5nZXQoKSksIHJlcXVlc3RJRCksIDApOworfQorCitH
SW5wdXRTdHJlYW0qIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZmluaXNoKEdTaW1wbGVBc3luY1Jl
c3VsdCogcmVzdWx0KQoreworICAgIHJldHVybiBHX0lOUFVUX1NUUkVBTShnX29iamVjdF9yZWYo
Z19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVzdWx0KSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40NTkwZjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJTb3VwUmVx
dWVzdE1hbmFnZXJfaAorI2RlZmluZSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJfaAorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK3R5cGVkZWYgc3RydWN0IF9HSW5wdXRTdHJlYW0gR0lucHV0U3RyZWFtOwordHlwZWRlZiBz
dHJ1Y3QgX0dTaW1wbGVBc3luY1Jlc3VsdCBHU2ltcGxlQXN5bmNSZXN1bHQ7CisKK25hbWVzcGFj
ZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247Citj
bGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgTWVzc2FnZUlEOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2Vy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJTb3VwUmVxdWVzdE1hbmFnZXIpOworcHVi
bGljOgorICAgIGV4cGxpY2l0IFdlYlNvdXBSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzKik7Cisg
ICAgfldlYlNvdXBSZXF1ZXN0TWFuYWdlcigpOworCisgICAgdm9pZCBzZW5kKEdTaW1wbGVBc3lu
Y1Jlc3VsdCopOworICAgIEdJbnB1dFN0cmVhbSogZmluaXNoKEdTaW1wbGVBc3luY1Jlc3VsdCop
OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciopOworCisgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7
CisgICAgdm9pZCBzZW5kVVJJUmVxdWVzdChjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKKworICAgIFdlYlBy
b2Nlc3MqIG1fcHJvY2VzczsKKyAgICBHUmVmUHRyPEdQdHJBcnJheT4gbV9zY2hlbWVzOworICAg
IEhhc2hNYXA8dWludDY0X3QsIEdTaW1wbGVBc3luY1Jlc3VsdCo+IG1fcmVxdWVzdE1hcDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMjY3NGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK21lc3NhZ2VzIC0+IFdlYlNvdXBSZXF1ZXN0TWFuYWdlciB7CisgICAgUmVnaXN0ZXJV
UklTY2hlbWUoV1RGOjpTdHJpbmcgdXJpU2NoZW1lKTsKKyAgICBTZW5kVVJJUmVxdWVzdChDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlIHJlcXVlc3REYXRhLCBXVEY6OlN0cmluZyBtaW1lVHlwZSwgdWlu
dDY0X3QgcmVxdWVzdElEKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHAucHkKaW5kZXggMmMzMWE1ZC4uMWVlYTQ5NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMxMDksNiArMzEwOSw3IEBAIGRlZiBj
aGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBsaW5lLCBmaWxlX3N0YXRlCiAgICAgICAgICAgICAgICAgYW5kIG5vdCAoZmlsZW5hbWUuZmlu
ZCgnZ3RrJykgPj0gMCBhbmQgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJraXRf
JykgPj0gMCkKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3Rh
cnRzd2l0aCgndHN0XycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlm
aWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9kb21fb2JqZWN0XycpCisgICAgICAgICAgICAgICAgYW5k
IG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9zb3VwJykKICAgICAg
ICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnTlBOXycp
CiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgo
J05QUF8nKQogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFy
dHN3aXRoKCdOUF8nKQo=
</data>
<flag name="commit-queue"
          id="142580"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137504</attachid>
            <date>2012-04-17 02:40:31 -0700</date>
            <delta_ts>2012-04-20 01:17:41 -0700</delta_ts>
            <desc>Another build fix</desc>
            <filename>wk2-soup-uri-schemes3.diff</filename>
            <type>text/plain</type>
            <size>67457</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjODFlNzg4Li4zMTAyZDZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVz
IGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEJVSUxESU5HX1NPVVBfXyBtYWNybyB0byBjb21waWxh
dGlvbi4KKwogMjAxMi0wNC0xNiAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmUtYWRkIEdQVSBERVBTIGJ1aWxkZXJzIHRvIGZsYWtpbmVzcyBkYXNoYm9hcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDZmZTMxOTAuLjdhYWU0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBB
ZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEdQdHJBcnJheSB0
ZW1wbGF0ZSB0byBiZSBhYmxlIHRvIHVzZSBHUmVmUHRyIHdpdGggR1B0ckFycmF5cy4KKworICAg
ICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwOgorICAgICAgICAoV1RGOjpyZWZHUHRyKToK
KyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmRlcmVmR1B0cik6CisgICAgICAgICogd3Rm
L2dvYmplY3QvR1JlZlB0ci5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvZ29iamVj
dC9HVHlwZWRlZnMuaDoKKwogMjAxMi0wNC0xNiAgTmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTWFrZSBOdWxsUHRyLmggY29tcGlsZSB3aXRoIGNsYW5nIC1zdGQ9
YysrMTEgYW5kIGxpYnN0ZGMrKzQuMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg2ZjAzYjQuLjA1N2NmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8g
cmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIG5ldyBm
aWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oOiBBZGQKKyAgICAgICAgTWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyIGFuZAor
ICAgICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSBtZXNzYWdlIHR5
cGVzIHRvIGlkZW50aWZ5CisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlciBtZXNzYWdlcy4K
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6IEluY2x1ZGUgV0tCYXNlU291cC5oIHdo
ZW4gYnVpbGRpbmcgd2l0aAorICAgICAgICBzb3VwIG5ldHdvcmsgYmFja2VuZC4KKyAgICAgICAg
KiBTaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJl
ZC9BUElPYmplY3QuaDogQWRkIFNvdXBSZXF1ZXN0TWFuYWdlciB0eXBlIHdoZW4gdXNpbmcgc291
cC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6IEluY2x1ZGUgV0tBUElD
YXN0U291cC5oIHdoZW4KKyAgICAgICAgYnVpbGRpbmcgd2l0aCBzb3VwIG5ldHdvcmsgYmFja2Vu
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KTogTWFwIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHRvCisgICAg
ICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLQ29udGV4dEdldFNv
dXBSZXF1ZXN0TWFuYWdlcik6IFJldHVybiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZgorICAgICAg
ICBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZXh0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLQ29udGV4dFNvdXAuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3Nv
dXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLU291cFJlcXVl
c3RNYW5hZ2VyR2V0VHlwZUlEKTogUmV0dXJuIHRoZQorICAgICAgICBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eSBBUEkgdHlwZS4KKyAgICAgICAgKFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xp
ZW50KTogU2V0IHRoZSBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC4KKyAgICAgICAgKFdLU291
cFJlcXVlc3RNYW5hZ2VyUmVnaXN0ZXJVUklTY2hlbWUpOiBDYWxsCisgICAgICAgIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5OjpyZWdpc3RlclVSSVNjaGVtZSgpLgorICAgICAgICAoV0tTb3Vw
UmVxdWVzdE1hbmFnZXJTZW5kVVJJUmVxdWVzdCk6IENhbGwKKyAgICAgICAgV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHk6OnNlbmRVUklSZXF1ZXN0KCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250
ZXh0KTogSW5pdGlhbGl6ZQorICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5IHdoZW4g
dXNpbmcgc291cC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6fldlYkNvbnRleHQpOiBJ
bnZhbGlkYXRlIGFuZCBjbGVhciB0aGUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94
eSB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpc2Nvbm5l
Y3RQcm9jZXNzKTogSW52YWxpZGF0ZSB0aGUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eSB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpZFJl
Y2VpdmVNZXNzYWdlKTogRm9yd2FyZCB0aGUgbWVzc2FnZSB0bworICAgICAgICBtX3NvdXBSZXF1
ZXN0TWFuYWdlclByb3h5IGlmIGl0J3MgYQorICAgICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eSBtZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
KTogUmV0dXJuCisgICAgICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHkuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkIG1lc3NhZ2UgdG8KKyAgICAgICAg
dGhlIHdlYiBjb250ZXh0IGlmIGl0J3MgYSBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eQorICAgICAgICBtZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQ6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KTogQ2FsbAorICAg
ICAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdCBjYWxsYmFjayBpZiBpdCBoYXMgYW4gaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5OjpjcmVhdGUpOiBDcmVhdGUgYSBuZXcKKyAgICAgICAgV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5Ojp+V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6
OnJlZ2lzdGVyVVJJU2NoZW1lKTogU2VuZAorICAgICAgICBSZWdpc3RlclVSSVNjaGVtZSBtZXNz
YWdlIHRvIHRoZSBXZWJQcm9jZXNzIHRvIHJlZ2lzdGVyIHRoZSBnaXZlbgorICAgICAgICBVUkkg
c2NoZW1lLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6c2Vu
ZFVSSVJlcXVlc3QpOiBTZW5kCisgICAgICAgIFNlbmRVUklSZXF1ZXN0IG1lc3NhZ2UgdG8gdGhl
IFdlYlByb2Nlc3Mgd2l0aCB0aGUgZ2l2ZW4gZGF0YSBhbmQKKyAgICAgICAgZGF0YSB0eXBlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVS
SVJlcXVlc3QpOiBDYWxsCisgICAgICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0IGNhbGxiYWNrIHRv
IGFsbG93IHRoZSB1c2VyIHRvIGhhbmRsZSB0aGUKKyAgICAgICAgcmVxdWVzdC4KKyAgICAgICAg
KiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgbV9zb3VwUmVx
dWVzdE1hbmFnZXIKKyAgICAgICAgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6IEZvcndhcmQgdGhlIG1lc3NhZ2UgdG8KKyAg
ICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXIgaWYgaXQncyBhIE1lc3NhZ2VDbGFzc1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlcgorICAgICAgICBtZXNzYWdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzb3VwUmVxdWVzdE1hbmFn
ZXIpOiBSZXR1cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICogV2ViUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0
U291cFJlcXVlc3RHZW5lcmljRmluYWxpemUpOgorICAgICAgICAod2Via2l0X3NvdXBfcmVxdWVz
dF9nZW5lcmljX2luaXQpOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFz
eW5jKTogQ3JlYXRlIGEgR1NpbXBsZUFzeW5jUmVzdWx0CisgICAgICAgIHRvIGhhbmRsZSB0aGUg
cmVxdWVzdCBhbmQgcGFzcyBpdCB0byB0aGUgV2ViU291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAg
ICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEZpbmlzaCk6IEZpbmlzaCB0aGUgYXN5bmMg
b3BlcmF0aW9uCisgICAgICAgIHN0YXJ0ZWQgYnkgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2Vu
ZEFzeW5jKCkgYW5kIHJldHVybiB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIHJlcXVlc3Qg
YXMgcmV0dXJuZWQgYnkgV2ViU291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAod2Via2l0U291
cFJlcXVlc3RHZW5lcmljR2V0Q29udGVudExlbmd0aCk6IEdldCB0aGUgcmVxdWVzdAorICAgICAg
ICBjb250ZW50cyBsZW5ndGguCisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRD
b250ZW50VHlwZSk6IEdldCB0aGUgcmVxdWVzdCBtaW1lCisgICAgICAgIHR5cGUuCisgICAgICAg
ICh3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJr
aXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKTogU2V0IHRoZSByZXF1ZXN0Cisg
ICAgICAgIGNvbnRlbnRzIGxlbmd0aC4KKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NldENvbnRlbnRUeXBlKTogU2V0IHRoZSByZXF1ZXN0IG1pbWUKKyAgICAgICAgdHlwZS4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVTb3VwUmVxdWVzdElEKTogSGVscGVyIGZ1
bmN0aW9uIHRvIGdlbmVyYXRlIGEKKyAgICAgICAgdW5pcXVlIHJlcXVlc3QgaWRlbnRpZmllci4K
KyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdE1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6On5XZWJTb3Vw
UmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5h
Z2VyOjpyZWdpc3RlclVSSVNjaGVtZSk6IEFkZCB0aGUgc2NoZW1lCisgICAgICAgIHRvIHRoZSBz
Y2hlbWVzIGFycmF5IGFuZCBhZGQgYSBuZXcgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljCisgICAg
ICAgIGZlYXR1cmUgd2l0aCB0aGUgbmV3IHNjaGVtZSBsaXN0IHRvIHRoZSBTb3VwUmVxdWVzdGVy
IGZlYXR1cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZFVS
SVJlcXVlc3QpOiBDb21wbGV0ZSB0aGUKKyAgICAgICAgYXN5bmMgb3BlcmF0aW9uIGJ5IGNyZWF0
aW5nIGEgR0lucHV0U3RyZWFtIHdpdGggdGhlIHJlcXVlc3QgZGF0YSwKKyAgICAgICAgb3Igc2V0
dGluZyBhbiBlcnJvciBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6c2VuZCk6IFNlbmQgRGlkUmVjZWl2ZVVSSVJlcXVlc3QKKyAgICAg
ICAgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJl
cXVlc3RNYW5hZ2VyOjpmaW5pc2gpOiBSZXR1cm4gdGhlIEdJbnB1dFN0cmVhbQorICAgICAgICBj
b250YWluaW5nIHRoZSByZXF1ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAxMi0wNC0xNiAg
Unl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sy
XSBBZGQgbWlzc2luZyBmaWxlcyB0byBidWlsZCB3ZWJraXQyL0VmbC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMjI3NmJlLi5iNWEyY2RlIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDQtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVy
aSBzY2hlbWVzIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAg
ICAgICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6IEFkZCB3ZWJraXRf
c291cCBwcmVmaXggdG8KKyAgICAgICAgdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucyB0byB0aGUgdW5k
ZXJzY29yZXMgaW4gaWRlbnRpZmllcnMgcnVsZS4KKwogMjAxMi0wNC0xNiAgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBVc2UgY29uZmlndXJl
IGluc3RlYWQgb2YgYXV0b2dlbi5zaCBmb3IgZ3RrKwpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUu
YW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA2NWU3Yzg1Li5hZjVlNmNhIDEwMDY0NAotLS0gYS9H
TlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtMTQ2LDYgKzE0Niw3IEBAIGVu
ZGlmCiBnbG9iYWxfY3BwZmxhZ3MgKz0gXAogCS1EQlVJTERJTkdfQ0FJUk9fXz0xIFwKIAktREJV
SUxESU5HX0dUS19fPTEgXAorCS1EQlVJTERJTkdfU09VUF9fPTEgXAogCS1EV1RGX0NIQU5HRVMK
IAogIyBGb3IgdGhlIEd0ayBwb3J0IHdlIHdhbnQgdG8gdXNlIFhQX1VOSVggYm90aCBpbiBYMTEg
YW5kIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5jcHAKaW5kZXggMzBkZjJjOS4uM2EwMTRk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCkBAIC0xMDcsNiArMTA3LDE5IEBAIHRl
bXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdTb3VyY2UqIHB0cikKICAgICAgICAgZ19zb3VyY2Vf
dW5yZWYocHRyKTsKIH0KIAordGVtcGxhdGUgPD4gR1B0ckFycmF5KiByZWZHUHRyKEdQdHJBcnJh
eSogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdfcHRyX2FycmF5X3JlZihwdHIpOwor
ICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdQdHJBcnJh
eSogcHRyKQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdfcHRyX2FycmF5X3VucmVmKHB0cik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gRU5BQkxFKEdMSUJfU1VQUE9S
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oIGIvU291cmNl
L1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmgKaW5kZXggOTJhY2ZmYy4uNGJmNWUxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93
dGYvZ29iamVjdC9HUmVmUHRyLmgKQEAgLTIwOCw2ICsyMDgsOCBAQCB0ZW1wbGF0ZSA8PiBHVmFy
aWFudCogcmVmR1B0cihHVmFyaWFudCogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
KEdWYXJpYW50KiBwdHIpOwogdGVtcGxhdGUgPD4gR1NvdXJjZSogcmVmR1B0cihHU291cmNlKiBw
dHIpOwogdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR1NvdXJjZSogcHRyKTsKK3RlbXBsYXRl
IDw+IEdQdHJBcnJheSogcmVmR1B0cihHUHRyQXJyYXkqIHB0cik7Cit0ZW1wbGF0ZSA8PiB2b2lk
IGRlcmVmR1B0cihHUHRyQXJyYXkqIHB0cik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxp
bmUgVCogcmVmR1B0cihUKiBwdHIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2Jq
ZWN0L0dUeXBlZGVmcy5oIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAppbmRl
eCBlMjkyNTBiLi43OWMzM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dU
eXBlZGVmcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKQEAgLTYz
LDYgKzYzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dWYXJpYW50IEdWYXJpYW50OwogdHlwZWRlZiB1
bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiB0eXBlZGVmIHN0cnVjdCBfR1RpbWVyIEdUaW1lcjsK
IHR5cGVkZWYgc3RydWN0IF9HS2V5RmlsZSBHS2V5RmlsZTsKK3R5cGVkZWYgc3RydWN0IF9HUHRy
QXJyYXkgR1B0ckFycmF5OwogCiAjaWYgVVNFKENBSVJPKQogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJv
X3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAxZGYxMzEw
Mi4uNTY5YzRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTEsNiArMSw3IEBACiBsaWJ3ZWJr
aXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0hFQURFUlMgPSBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvZ3RrL1dL
QmFzZUd0ay5oIFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9ndGsvV0tHcmFwaGljc0NvbnRl
eHRHdGsuaCBcCisJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggXAog
CSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQv
QVBJL2MvV0tCYXNlLmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmggXApAQCAtMzUsNiArMzYsOSBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0hFQQogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNhc3RHdGsuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tBUElDYXN0U291cC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLQ29udGV4dFNvdXAuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0Mvc291cC9X
S1NvdXBSZXF1ZXN0TWFuYWdlci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XZWJL
aXQyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIFwKIAkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggXApAQCAt
MTkwLDcgKzE5NCwxMSBAQCB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViUHJvY2Vzc01lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAorCURlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oCiAKIHdlYmtpdDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi93ZWJraXQyZ3RrL3dlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmNwcCBcCkBAIC0yNjMsNiAr
MjcxLDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvZ3RrL1dLQmFzZUd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrL1dL
R3JhcGhpY3NDb250ZXh0R3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9ndGsv
V0tHcmFwaGljc0NvbnRleHRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
c291cC9XS0Jhc2VTb3VwLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuaCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIFwKQEAgLTQ2Nyw2ICs0NzYsMTEgQEAgd2Vi
a2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dL
RnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Z3RrL1dLVmlldy5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tW
aWV3LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNv
dXAuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291
cC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNv
dXAuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2Vi
S2l0Mi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmggXApAQCAtNjkyLDYgKzcwNiwxMCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UmVzcG9uc2l2ZW5lc3NUaW1lci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9X
ZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXIuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5oIFwKQEAgLTkxOCw2ICs5MzYsMTAgQEAgd2Via2l0
Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJj
ZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViQ29udGV4dE1l
bnVDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBcCkBAIC0xMDE3LDYg
KzEwMzksNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2d0ayBcCisJ
LUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydCBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMgXApAQCAtMTAyNiw2ICsxMDQ5LDcgQEAgbGlid2Via2l0Mmd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9s
YV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2NwcCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbiBcCkBAIC0xMDM2LDYgKzEwNjAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQ
UAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrIFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvV2ViUHJvY2VzcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9BcHBsaWNhdGlvbkNhY2hlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uIFwKQEAgLTEwNTUsNiArMTA4MCw3IEBAIGxpYndlYmtpdDJndGtf
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lP
TkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNh
Y2hlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNo
ZSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL2d0ayBcCkBAIC0x
MTc4LDYgKzEyMDQsNyBAQCB2cGF0aCAlLm1lc3NhZ2VzLmluID0gXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL1BsdWdpbnMgXAog
CSQoV2ViS2l0MikvVUlQcm9jZXNzL1Jlc291cmNlQ2FjaGUgXAorCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL3NvdXAgXAogCSQoV2ViS2l0MikvV2ViUHJvY2VzcyBcCiAJJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbiBcCkBAIC0xMTkxLDcgKzEyMTgsOCBAQCB2cGF0aCAlLm1lc3NhZ2VzLmluID0gXAogCSQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvUmVz
b3VyY2VDYWNoZSBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0IFwKLQkk
KFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZQorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQ
YWdlIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3Mvc291cAogCiBtZXNzYWdlX2dlbl9zY3JpcHRz
ID0gXAogCSQoV2ViS2l0MikvU2NyaXB0cy9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IFwK
QEAgLTE1NzksNiArMTYwNyw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCSQoc2hlbGwgbHMgJChXZWJL
aXQyKS9VSVByb2Nlc3MvRG93bmxvYWRzLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2ViS2l0Mikv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9V
SVByb2Nlc3MvUGx1Z2lucy8qLmluKSBcCisJJChzaGVsbCBscyAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9zb3VwLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2ViS2l0MikvV2ViUHJvY2Vzcy8qLmluKSBc
CiAJJChzaGVsbCBscyAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS8qLmlu
KSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIpL1dlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vKi5p
bikgXApAQCAtMTU5Miw0ICsxNjIxLDUgQEAgRVhUUkFfRElTVCArPSBcCiAJJChzaGVsbCBscyAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvUGx1Z2lucy8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvKi5pbikgXAotCSQoc2hlbGwgbHMgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL1dlYlBhZ2UvKi5pbikKKwkkKHNoZWxsIGxzICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9XZWJQYWdlLyouaW4pIFwKKwkkKHNoZWxsIGxzICQoV2ViS2l0MikvV2ViUHJvY2Vz
cy9zb3VwLyouaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aAppbmRleCA2ZWU4MDlhLi41ZjM5OGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUlELmgKQEAgLTUzLDcgKzUzLDEwIEBAIGVudW0gTWVzc2FnZUNsYXNzIHsK
ICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzLAogICAgIE1lc3NhZ2VDbGFzc1dlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc0V2ZW50RGlzcGF0Y2hlciwKLSAgICAKKyNp
ZiBVU0UoU09VUCkKKyAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXIsCisjZW5k
aWYKKwogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBVSSBw
cm9jZXNzLgogICAgIE1lc3NhZ2VDbGFzc0Rvd25sb2FkUHJveHksCiAgICAgTWVzc2FnZUNsYXNz
RHJhd2luZ0FyZWFQcm94eSwKQEAgLTczLDYgKzc2LDkgQEAgZW51bSBNZXNzYWdlQ2xhc3Mgewog
ICAgIE1lc3NhZ2VDbGFzc1dlYlBhZ2VQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNz
UHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSwKKyNp
ZiBVU0UoU09VUCkKKyAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSwK
KyNlbmRpZgogCiAgICAgLy8gTWVzc2FnZXMgc2VudCB0byBhIFdlYkNvbm5lY3Rpb24KICAgICBN
ZXNzYWdlQ2xhc3NXZWJDb25uZWN0aW9uTGVnYWN5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCmluZGV4IGM4NjU2ZTQuLmJlNjE3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2VHdGsu
aD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChCVUlMRElOR19TT1VQX18pCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2VTb3VwLmg+CisjZW5kaWYKKwogLyogV2ViS2l0MiBzaGFyZWQgdHlwZXMgKi8K
IAogdHlwZWRlZiB1aW50MzJfdCBXS1R5cGVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9zb3VwL1dLQmFzZVNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MTg5ZTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L3NvdXAvV0tCYXNlU291cC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Jhc2VTb3VwX2gKKyNkZWZp
bmUgV0tCYXNlU291cF9oCisKKyNpZm5kZWYgV0tCYXNlX2gKKyNlcnJvciAiUGxlYXNlICNpbmNs
dWRlIFwiV0tCYXNlLmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCisjZW5kaWYK
KwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTb3VwUmVxdWVzdE1hbmFnZXIqIFdLU291
cFJlcXVlc3RNYW5hZ2VyUmVmOworCisjZW5kaWYgLyogV0tCYXNlU291cF9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggZDZjYzAzMC4uZDcyODIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaApAQCAtMTE5LDcgKzExOSwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8g
UGxhdGZvcm0gc3BlY2lmaWMKICAgICAgICAgVHlwZUVkaXRDb21tYW5kUHJveHksCi0gICAgICAg
IFR5cGVWaWV3CisgICAgICAgIFR5cGVWaWV3LAorI2lmIFVTRShTT1VQKQorICAgICAgICBUeXBl
U291cFJlcXVlc3RNYW5hZ2VyLAorI2VuZGlmCiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkFQSU9i
amVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXgg
YmQzZmEyZC4uMTQ4ZjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaApAQCAtMzU5LDQgKzM1OSw5IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFt
bWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNpbmNsdWRlICJXS0FQSUNhc3RHdGsuaCIKICNlbmRp
ZgorCisjaWYgZGVmaW5lZChCVUlMRElOR19TT1VQX18pCisjaW5jbHVkZSAiV0tBUElDYXN0U291
cC5oIgorI2VuZGlmCisKICNlbmRpZiAvLyBXS0FQSUNhc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YTk1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdLQVBJQ2FzdFNvdXBfaAorI2RlZmluZSBXS0FQSUNhc3RTb3VwX2gK
KworI2lmbmRlZiBXS0FQSUNhc3RfaAorI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgXCJXS0FQSUNh
c3QuaFwiIGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CisKK1dLX0FE
RF9BUElfTUFQUElORyhXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkpCisKK30KKworI2VuZGlmIC8vIFdLQVBJQ2FzdFNvdXBfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGU4OGQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29udGV4dFNvdXAu
aCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQoreworICAg
IHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
KCkpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291
cC9XS0NvbnRleHRTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9X
S0NvbnRleHRTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5NTRm
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLQ29udGV4dFNvdXAuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDb250ZXh0U291cF9oCisjZGVm
aW5lIFdLQ29udGV4dFNvdXBfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0NvbnRleHRT
b3VwX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41MDQyZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisKKyNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94
eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5OjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENs
aWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0
IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICB0b0ltcGwoc291
cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3a0NsaWVudCk7Cit9CisKK3Zv
aWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIHNjaGVtZVJlZikKK3sK
KyAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+cmVnaXN0ZXJVUklTY2hlbWUodG9J
bXBsKHNjaGVtZVJlZiktPnN0cmluZygpKTsKK30KKwordm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdl
clNlbmRVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdl
clJlZiwgV0tEYXRhUmVmIGRhdGEsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmLCB1aW50NjRfdCBy
ZXF1ZXN0SUQpCit7CisgICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPnNlbmRVUklS
ZXF1ZXN0KHRvSW1wbChkYXRhKSwgdG9JbXBsKG1pbWVUeXBlUmVmKS0+c3RyaW5nKCksIHJlcXVl
c3RJRCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291
cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40OGRjZGRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tTb3VwUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oCisK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAo
KldLU291cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3Vw
UmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYs
IHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBX
S1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tTb3VwUmVx
dWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrIGRpZFJlY2VpdmVVUklSZXF1
ZXN0OworfTsKK3R5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IFdLU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OworCitlbnVtIHsga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50Q3VycmVudFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBSZXF1
ZXN0TWFuYWdlckdldFR5cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFu
YWdlclNldENsaWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1N0cmluZ1Jl
ZiBzY2hlbWVSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJTZW5kVVJJ
UmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tEYXRhUmVmLCBXS1N0cmluZ1JlZiBt
aW1lVHlwZVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAyZWNmZjlkLi5mMWEwZjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC02Niw2ICs2NiwxMCBAQAog
I2luY2x1ZGUgIkJ1aWx0SW5QREZWaWV3LmgiCiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjZW5kaWYKKwogI2lmbmRlZiBO
REVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAg
LTEzNSw2ICsxMzksOSBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9j
ZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogICAgICwgbV9ub3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX3BsdWdpblNpdGVEYXRhTWFuYWdlcihXZWJQbHVnaW5TaXRlRGF0YU1hbmFn
ZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eShXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcykpCisjaWYgVVNFKFNPVVApCisg
ICAgLCBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
OjpjcmVhdGUodGhpcykpCisjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBtX3Nob3Vs
ZFBhaW50TmF0aXZlQ29udHJvbHModHJ1ZSkKICAgICAsIG1faW5pdGlhbEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cykKQEAgLTE5Miw3ICsxOTksMTIg
QEAgV2ViQ29udGV4dDo6fldlYkNvbnRleHQoKQogCiAgICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdl
clByb3h5LT5pbnZhbGlkYXRlKCk7CiAgICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5j
bGVhckNvbnRleHQoKTsKLSAgICAKKworI2lmIFVTRShTT1VQKQorICAgIG1fc291cFJlcXVlc3RN
YW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKKyAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LT5jbGVhckNvbnRleHQoKTsKKyNlbmRpZgorCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
ZGljdGlvbmFyeUNhbGxiYWNrcyk7CiAKICAgICBwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCk7
CkBAIC0zODAsNiArMzkyLDkgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5p
bnZhbGlkYXRlKCk7CiAgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPmludmFsaWRhdGUo
KTsKICAgICBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKKyNpZiBV
U0UoU09VUCkKKyAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7Cisj
ZW5kaWYKIAogICAgIC8vIFdoZW4gb3V0IG9mIHByb2Nlc3MgcGx1Zy1pbnMgYXJlIGVuYWJsZWQs
IHdlIGRvbid0IHdhbnQgdG8gaW52YWxpZGF0ZSB0aGUgcGx1Zy1pbiBzaXRlIGRhdGEKICAgICAv
LyBtYW5hZ2VyIGp1c3QgYmVjYXVzZSB0aGUgd2ViIHByb2Nlc3MgY3Jhc2hlcyBzaW5jZSBpdCdz
IG5vdCBpbnZvbHZlZC4KQEAgLTcxNiw2ICs3MzEsMTMgQEAgdm9pZCBXZWJDb250ZXh0OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShTT1VQKQorICAgIGlmIChtZXNz
YWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+
KCkpIHsKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViQ29udGV4dExlZ2Fj
eU1lc3NhZ2U6OktpbmQ+KCkpIHsKICAgICAgICAgY2FzZSBXZWJDb250ZXh0TGVnYWN5TWVzc2Fn
ZTo6UG9zdE1lc3NhZ2U6IHsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGZmY2Y5YjMuLmRkZjNkNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtNTgsNiArNTgsOSBAQCBjbGFzcyBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OworI2lmIFVT
RShTT1VQKQorY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CisjZW5kaWYKIHN0cnVj
dCBTdGF0aXN0aWNzRGF0YTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwog
ICAgIApAQCAtMTYxLDYgKzE2NCw5IEBAIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkqIG5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmdldCgpOyB9CiAgICAgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyKiBwbHVnaW5TaXRlRGF0YU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpblNpdGVE
YXRhTWFuYWdlci5nZXQoKTsgfQogICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkqIHJl
c291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHkuZ2V0KCk7IH0KKyNpZiBVU0UoU09VUCkKKyAgICBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LmdldCgpOyB9CisjZW5kaWYKIAogICAgIHN0cnVjdCBTdGF0
aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBAIC0yOTYsNiArMzAyLDkg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBtX25v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTsKICAgICBSZWZQdHI8V2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyPiBtX3BsdWdpblNpdGVEYXRhTWFuYWdlcjsKICAgICBSZWZQdHI8V2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eT4gbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OworI2lmIFVTRShTT1VQ
KQorICAgIFJlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gbV9zb3VwUmVxdWVzdE1h
bmFnZXJQcm94eTsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV9zaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA3ZWU1MzI4Li4yMmRhY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzE0LDYgKzMxNCw5IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uLCBDb3JlSVBDCiAgICAgICAgIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNz
YWdlQ2xhc3NXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+KCkKICAgICAgICAgfHwgbWVz
c2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+
KCkKICAgICAgICAgfHwgbWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKQorI2lmIFVTRShTT1VQKQorICAgICAgICB8fCBtZXNzYWdl
SUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCkK
KyNlbmRpZgogICAgICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4oKSkgewogICAgICAgICBtX2NvbnRleHQtPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZGViZWY0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViU291cFJl
cXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRSZWNlaXZlVVJJUmVxdWVzdChXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5hZ2VyLCBXZWJVUkwqIHVybCwgdWludDY0X3QgcmVx
dWVzdElEKQoreworICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3QpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KHRv
QVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIHRvQVBJKHVybCksIHJlcXVlc3RJRCwgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3Vw
UmVxdWVzdE1hbmFnZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZmJiYTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYlNvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudF9oCisjZGVmaW5lIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudF9oCisKKyNp
bmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk7
CitjbGFzcyBXZWJVUkw7CisKK2NsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1
YmxpYyBBUElDbGllbnQ8V0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQsIGtXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgYm9vbCBkaWRSZWNl
aXZlVVJJUmVxdWVzdChXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSosIFdlYlVSTCosIHVpbnQ2
NF90IHJlcXVlc3RJRCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI4ZDI5OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkRhdGEu
aCIKKyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4gV2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkoY29udGV4
dCkpOworfQorCitXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6V2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0
KQoreworfQorCitXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6fldlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5KCkKK3sKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52
YWxpZGF0ZSgpCit7Cit9CisKK3ZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmluaXRp
YWxpemVDbGllbnQoY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKK3ZvaWQgV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2
b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpyZWdpc3RlclVSSVNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKK3sKKyAgICBBU1NFUlQobV93ZWJDb250ZXh0KTsKKyAgICBtX3dlYkNv
bnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OlJlZ2lzdGVyVVJJU2NoZW1lKHNjaGVtZSkpOwor
fQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpzZW5kVVJJUmVxdWVzdChjb25z
dCBXZWJEYXRhKiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3Qg
cmVxdWVzdElEKQoreworICAgIEFTU0VSVChtX3dlYkNvbnRleHQpOworICAgIG1fd2ViQ29udGV4
dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OlNl
bmRVUklSZXF1ZXN0KHJlcXVlc3REYXRhLT5kYXRhUmVmZXJlbmNlKCksIG1pbWVUeXBlLCByZXF1
ZXN0SUQpKTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZVVSSVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkK
K3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KHRoaXMsIFdlYlVSTDo6
Y3JlYXRlKHVyaVN0cmluZykuZ2V0KCksIHJlcXVlc3RJRCkpCisgICAgICAgIHNlbmRVUklSZXF1
ZXN0KFdlYkRhdGE6OmNyZWF0ZSgwLCAwKS5nZXQoKSwgU3RyaW5nKCksIHJlcXVlc3RJRCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmViZTRmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHlfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIENvbm5l
Y3Rpb247CitjbGFzcyBNZXNzYWdlSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJDb250ZXh0OworY2xhc3MgV2ViRGF0YTsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZVNvdXBSZXF1ZXN0TWFuYWdlcjsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOwor
ICAgIHZpcnR1YWwgfldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCk7CisKKyAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKKyAgICB2b2lkIGNsZWFyQ29udGV4dCgpIHsgbV93ZWJDb250ZXh0ID0gMDsg
fQorCisgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50Kik7CisKKyAgICB2b2lkIHJlZ2lzdGVyVVJJU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKTsKKyAgICB2b2lkIHNlbmRVUklSZXF1ZXN0KGNvbnN0IFdlYkRhdGEqLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eShXZWJDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIEFQSVR5cGU7IH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCk7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAg
ICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CisgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50IG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZDA1MjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSB7CisgICAg
RGlkUmVjZWl2ZVVSSVJlcXVlc3QoV1RGOjpTdHJpbmcgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1
ZXN0SUQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
YTIyZjRjNi4uYWRlNDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xNDgsNiArMTQ4LDkgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9DRVNTKQogICAgICwgbV9kaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VU
aW1lb3V0KGZhbHNlKQogI2VuZGlmCisjaWYgVVNFKFNPVVApCisgICAgLCBtX3NvdXBSZXF1ZXN0
TWFuYWdlcih0aGlzKQorI2VuZGlmCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAg
ICAgLy8gSW5pdGlhbGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KQEAgLTY1MCw2ICs2NTMs
MTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
I2lmIFVTRShTT1VQKQorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNz
V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpKSB7CisgICAgICAgIG1fc291cFJlcXVlc3RNYW5hZ2Vy
LmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3Jl
SVBDOjpNZXNzYWdlQ2xhc3NJbmplY3RlZEJ1bmRsZT4oKSkgewogICAgICAgICBpZiAoIW1faW5q
ZWN0ZWRCdW5kbGUpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDFhNDk4OWYuLmE5ODFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorI2lmIFVTRShTT1VQKQorI2luY2x1
ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkK
IGNsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKICNlbmRpZgpAQCAtMTQ4LDYgKzE1MiwxMCBA
QCBwdWJsaWM6CiAKICAgICBFdmVudERpc3BhdGNoZXImIGV2ZW50RGlzcGF0Y2hlcigpIHsgcmV0
dXJuIG1fZXZlbnREaXNwYXRjaGVyOyB9CiAKKyNpZiBVU0UoU09VUCkKKyAgICBXZWJTb3VwUmVx
dWVzdE1hbmFnZXImIHNvdXBSZXF1ZXN0TWFuYWdlcigpIHsgcmV0dXJuIG1fc291cFJlcXVlc3RN
YW5hZ2VyOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAKQEAgLTI4
Miw2ICsyOTAsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlzYWJsZVBsdWdpblByb2Nlc3NN
ZXNzYWdlVGltZW91dDsKICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisgICAgV2ViU291cFJlcXVl
c3RNYW5hZ2VyIG1fc291cFJlcXVlc3RNYW5hZ2VyOworI2VuZGlmCisKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44MDg5MDk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitHX0RFRklORV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJp
Yywgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljLCBTT1VQX1RZUEVfUkVRVUVTVCkKKworc3Ry
dWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlIHsKKyAgICBDU3RyaW5nIG1pbWVU
eXBlOworICAgIGdvZmZzZXQgY29udGVudExlbmd0aDsKK307CisKK3N0YXRpYyB2b2lkIHdlYmtp
dFNvdXBSZXF1ZXN0R2VuZXJpY0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXRUJL
SVRfU09VUF9SRVFVRVNUX0dFTkVSSUMob2JqZWN0KS0+cHJpdi0+fldlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpY1ByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfc291cF9yZXF1ZXN0
X2dlbmVyaWNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2luaXQoV2ViS2l0U291cFJlcXVlc3RHZW5l
cmljKiByZXF1ZXN0KQoreworICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGUqIHBy
aXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUocmVxdWVzdCwgV0VCS0lUX1RZUEVfU09V
UF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGUpOworICAg
IHJlcXVlc3QtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljUHJpdmF0ZSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZW5kQXN5bmMoU291cFJlcXVlc3QqIHJlcXVlc3QsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFi
bGUsIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQorewor
ICAgIEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0ID0gZ19zaW1wbGVfYXN5bmNfcmVzdWx0X25l
dyhHX09CSkVDVChyZXF1ZXN0KSwgY2FsbGJhY2ssIHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0
PHZvaWQqPih3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMpKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5zb3VwUmVxdWVzdE1hbmFnZXIoKS5zZW5kKHJlc3VsdCk7Cit9CisKK3N0
YXRpYyBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRGaW5pc2goU291
cFJlcXVlc3QqIHJlcXVlc3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikK
K3sKKyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHNpbXBsZVJlc3VsdCA9IEdfU0lNUExFX0FTWU5D
X1JFU1VMVChyZXN1bHQpOworICAgIGdfd2Fybl9pZl9mYWlsKGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9nZXRfc291cmNlX3RhZyhzaW1wbGVSZXN1bHQpID09IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NlbmRBc3luYyk7CisKKyAgICBpZiAoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X3Byb3BhZ2F0ZV9l
cnJvcihzaW1wbGVSZXN1bHQsIGVycm9yKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc291cFJlcXVlc3RNYW5hZ2VyKCkuZmluaXNoKHNpbXBs
ZVJlc3VsdCk7Cit9CisKK3N0YXRpYyBnb2Zmc2V0IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dl
dENvbnRlbnRMZW5ndGgoU291cFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdFQktJ
VF9TT1VQX1JFUVVFU1RfR0VORVJJQyhyZXF1ZXN0KS0+cHJpdi0+Y29udGVudExlbmd0aDsKK30K
Kworc3RhdGljIGNvbnN0IGNoYXIqIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldENvbnRlbnRU
eXBlKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiBXRUJLSVRfU09VUF9SRVFV
RVNUX0dFTkVSSUMocmVxdWVzdCktPnByaXYtPm1pbWVUeXBlLmRhdGEoKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2NsYXNzX2luaXQoV2ViS2l0U291cFJl
cXVlc3RHZW5lcmljQ2xhc3MqIHJlcXVlc3RHZW5lcmljQ2xhc3MpCit7CisgICAgR09iamVjdENs
YXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0R2VuZXJpY0NsYXNzKTsK
KyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljRmlu
YWxpemU7CisKKyAgICBTb3VwUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MgPSBTT1VQX1JFUVVF
U1RfQ0xBU1MocmVxdWVzdEdlbmVyaWNDbGFzcyk7CisgICAgcmVxdWVzdENsYXNzLT5zZW5kX2Fz
eW5jID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jOworICAgIHJlcXVlc3RDbGFz
cy0+c2VuZF9maW5pc2ggPSB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoOworICAg
IHJlcXVlc3RDbGFzcy0+Z2V0X2NvbnRlbnRfbGVuZ3RoID0gd2Via2l0U291cFJlcXVlc3RHZW5l
cmljR2V0Q29udGVudExlbmd0aDsKKyAgICByZXF1ZXN0Q2xhc3MtPmdldF9jb250ZW50X3R5cGUg
PSB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRDb250ZW50VHlwZTsKKworICAgIGdfdHlwZV9j
bGFzc19hZGRfcHJpdmF0ZShyZXF1ZXN0R2VuZXJpY0NsYXNzLCBzaXplb2YoV2ViS2l0U291cFJl
cXVlc3RHZW5lcmljUHJpdmF0ZSkpOworfQorCit2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y1NldENvbnRlbnRMZW5ndGgoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0LCBnb2Zm
c2V0IGNvbnRlbnRMZW5ndGgpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29udGVudExlbmd0aCA9
IGNvbnRlbnRMZW5ndGg7Cit9CisKK3ZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29u
dGVudFR5cGUoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0LCBjb25zdCBjaGFyKiBt
aW1lVHlwZSkKK3sKKyAgICByZXF1ZXN0LT5wcml2LT5taW1lVHlwZSA9IG1pbWVUeXBlOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZTI4
NmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNf
aAorI2RlZmluZSBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaAorCisjaW5jbHVkZSA8Z2xpYi1v
YmplY3QuaD4KKyNkZWZpbmUgTElCU09VUF9VU0VfVU5TVEFCTEVfUkVRVUVTVF9BUEkKKyNpbmNs
dWRlIDxsaWJzb3VwL3NvdXAtcmVxdWVzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUg
V0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMgICAgICAgICAgICAod2Via2l0X3NvdXBf
cmVxdWVzdF9nZW5lcmljX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9TT1VQX1JFUVVFU1Rf
R0VORVJJQyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmpl
Y3QpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQywgV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9HRU5FUklDKG9iamVjdCkg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iamVjdCksIFdFQktJVF9UWVBFX1NP
VVBfUkVRVUVTVF9HRU5FUklDKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklD
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgV0VCS0lU
X1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNz
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfUkVRVUVTVF9HRU5FUklDX0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNU
X0dFTkVSSUMpKQorI2RlZmluZSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUNfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQ
X1JFUVVFU1RfR0VORVJJQywgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MpKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljIFdlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYzsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyBXZWJL
aXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWNQcml2YXRlIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY1ByaXZhdGU7CisKK3N0
cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljIHsKKyAgICBTb3VwUmVxdWVzdCBwYXJlbnQ7
CisKKyAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFzcyB7CisgICAgU291cFJlcXVlc3RDbGFz
cyBwYXJlbnQ7Cit9OworCitHVHlwZSB3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWNfZ2V0X3R5
cGUoKTsKKwordm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50TGVuZ3RoKFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpYyosIGdvZmZzZXQgY29udGVudExlbmd0aCk7Cit2b2lkIHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKFdlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYyosIGNvbnN0IGNoYXIqIG1pbWVUeXBlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8v
IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDAzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMCww
ICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCisKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5jbHVkZSAi
V2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Vycm9yc0d0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPGxpYnNvdXAv
c291cC1yZXF1ZXN0ZXIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlU291cFJlcXVlc3RJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90
IHVuaXF1ZVNvdXBSZXF1ZXN0SUQgPSAxOworICAgIHJldHVybiB1bmlxdWVTb3VwUmVxdWVzdElE
Kys7Cit9CisKK1dlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6V2ViU291cFJlcXVlc3RNYW5hZ2VyKFdl
YlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKKyAgICAsIG1fc2No
ZW1lcyhhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jKGdfZnJlZSkpKQor
eworfQorCitXZWJTb3VwUmVxdWVzdE1hbmFnZXI6On5XZWJTb3VwUmVxdWVzdE1hbmFnZXIoKQor
eworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2
ZVdlYlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1
bWVudHMpOworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJVUklTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKG1fc2NoZW1lcy0+bGVuKQorICAg
ICAgICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXhfZmFzdChtX3NjaGVtZXMuZ2V0KCksIG1fc2No
ZW1lcy0+bGVuIC0gMSk7CisgICAgZ19wdHJfYXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgZ19z
dHJkdXAoc2NoZW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hl
bWVzLmdldCgpLCAwKTsKKworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgR1JlZlB0cjxTb3VwUmVxdWVzdGVy
PiByZXF1ZXN0ZXIgPSBTT1VQX1JFUVVFU1RFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vz
c2lvbiwgU09VUF9UWVBFX1JFUVVFU1RFUikpOworICAgIGlmIChyZXF1ZXN0ZXIpCisgICAgICAg
IHNvdXBfc2Vzc2lvbl9mZWF0dXJlX3JlbW92ZV9mZWF0dXJlKFNPVVBfU0VTU0lPTl9GRUFUVVJF
KHJlcXVlc3Rlci5nZXQoKSksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgcmVxdWVzdGVyID0gYWRvcHRHUmVmKHNvdXBfcmVxdWVzdGVyX25l
dygpKTsKKyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VT
U0lPTl9GRUFUVVJFKHJlcXVlc3Rlci5nZXQoKSkpOworICAgIH0KKyAgICBTb3VwUmVxdWVzdENs
YXNzKiBnZW5lcmljUmVxdWVzdENsYXNzID0gc3RhdGljX2Nhc3Q8U291cFJlcXVlc3RDbGFzcyo+
KGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKTsKKyAg
ICBnZW5lcmljUmVxdWVzdENsYXNzLT5zY2hlbWVzID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKio+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcioqPihtX3NjaGVtZXMtPnBkYXRhKSk7CisgICAgc291cF9z
ZXNzaW9uX2ZlYXR1cmVfYWRkX2ZlYXR1cmUoU09VUF9TRVNTSU9OX0ZFQVRVUkUocmVxdWVzdGVy
LmdldCgpKSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpOworfQorCit2b2lkIFdl
YlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZFVSSVJlcXVlc3QoY29uc3QgQ29yZUlQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJl
cXVlc3RJRCkKK3sKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0gYWRv
cHRHUmVmKG1fcmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCkpOworICAgIEFTU0VSVChyZXN1bHQu
Z2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3Qg
PSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dl
dF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdC5nZXQoKSkpKSk7CisgICAgaWYg
KHJlcXVlc3REYXRhLnNpemUoKSkgeworICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNT
ZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QuZ2V0KCksIHJlcXVlc3REYXRhLnNpemUoKSk7CisgICAg
ICAgIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QuZ2V0KCks
IG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBHSW5wdXRTdHJlYW0qIGRhdGFTdHJl
YW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShyZXF1ZXN0RGF0YS5kYXRh
KCksIHJlcXVlc3REYXRhLnNpemUoKSwgMCk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSwgZGF0YVN0cmVhbSwgZ19vYmplY3Rf
dW5yZWYpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpU3RyaW5nKHNv
dXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShTT1VQX1JFUVVFU1QocmVxdWVz
dC5nZXQoKSkpLCBGQUxTRSkpOworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVz
b3VyY2VSZXF1ZXN0KFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKSk7CisgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IocmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jlc3Vs
dF9zZXRfZXJyb3IocmVzdWx0LmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgIiVzIiwgcmVzb3VyY2VFcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICBnX3Np
bXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKwordm9pZCBXZWJT
b3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQpCit7Cisg
ICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
V0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vfb2Jq
ZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdCkpKSk7CisgICAgU291cFVSSSogdXJpID0gc291cF9y
ZXF1ZXN0X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QuZ2V0KCkpKTsKKyAgICBHT3duUHRy
PGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOworCisgICAg
dWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7CisgICAgbV9yZXF1
ZXN0TWFwLnNldChyZXF1ZXN0SUQsIHJlc3VsdCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpEaWRSZWNlaXZl
VVJJUmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaVN0cmluZy5nZXQoKSksIHJlcXVlc3RJRCks
IDApOworfQorCitHSW5wdXRTdHJlYW0qIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZmluaXNoKEdT
aW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0KQoreworICAgIHJldHVybiBHX0lOUFVUX1NUUkVBTShn
X29iamVjdF9yZWYoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIocmVz
dWx0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTkwZjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJf
aAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HSW5wdXRTdHJlYW0gR0lucHV0U3RyZWFt
OwordHlwZWRlZiBzdHJ1Y3QgX0dTaW1wbGVBc3luY1Jlc3VsdCBHU2ltcGxlQXN5bmNSZXN1bHQ7
CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIENv
bm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgTWVzc2FnZUlEOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgV2ViU291cFJl
cXVlc3RNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJTb3VwUmVxdWVzdE1h
bmFnZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNvdXBSZXF1ZXN0TWFuYWdlcihXZWJQ
cm9jZXNzKik7CisgICAgfldlYlNvdXBSZXF1ZXN0TWFuYWdlcigpOworCisgICAgdm9pZCBzZW5k
KEdTaW1wbGVBc3luY1Jlc3VsdCopOworICAgIEdJbnB1dFN0cmVhbSogZmluaXNoKEdTaW1wbGVB
c3luY1Jlc3VsdCopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSk7CisgICAgdm9pZCBzZW5kVVJJUmVxdWVzdChjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsK
KworICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBHUmVmUHRyPEdQdHJBcnJheT4gbV9z
Y2hlbWVzOworICAgIEhhc2hNYXA8dWludDY0X3QsIEdTaW1wbGVBc3luY1Jlc3VsdCo+IG1fcmVx
dWVzdE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjcxMjY3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFdlYlNvdXBSZXF1ZXN0TWFuYWdlciB7Cisg
ICAgUmVnaXN0ZXJVUklTY2hlbWUoV1RGOjpTdHJpbmcgdXJpU2NoZW1lKTsKKyAgICBTZW5kVVJJ
UmVxdWVzdChDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlcXVlc3REYXRhLCBXVEY6OlN0cmluZyBt
aW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkKaW5kZXggMmMzMWE1ZC4uMWVlYTQ5NyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTMxMDksNiArMzEw
OSw3IEBAIGRlZiBjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24oZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCBsaW5lLCBmaWxlX3N0YXRlCiAgICAgICAgICAgICAgICAgYW5kIG5vdCAo
ZmlsZW5hbWUuZmluZCgnZ3RrJykgPj0gMCBhbmQgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3
aXRoKCd3ZWJraXRfJykgPj0gMCkKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lk
ZW50aWZpZXIuc3RhcnRzd2l0aCgndHN0XycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2Rp
ZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9kb21fb2JqZWN0XycpCisgICAgICAg
ICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9z
b3VwJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRz
d2l0aCgnTlBOXycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVy
LnN0YXJ0c3dpdGgoJ05QUF8nKQogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRl
bnRpZmllci5zdGFydHN3aXRoKCdOUF8nKQo=
</data>
<flag name="review"
          id="142582"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138059</attachid>
            <date>2012-04-20 01:17:41 -0700</date>
            <delta_ts>2012-04-26 11:10:43 -0700</delta_ts>
            <desc>Updated patch according to review comments</desc>
            <filename>wk2-soup-uri-request3.diff</filename>
            <type>text/plain</type>
            <size>67521</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZDc2NDQ0Li41MWViOTYw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDQtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtTT1VQXSBBZGQgYSB3YXkgdG8gcmVnaXN0ZXIgY3VzdG9tIHVyaSBzY2hlbWVz
IGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEJVSUxESU5HX1NPVVBfXyBtYWNybyB0byBjb21waWxh
dGlvbi4KKwogMjAxMi0wNC0xOCAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2Fu
dG9zQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBqc2MgdGFyZ2V0IGluc3RlYWQg
b2YgT05MWV9CVUlMRF9KQVZBU0NSSVBUQ09SRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0YjRjMWE4Li4xZjQzMTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEyLTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIGEgd2F5IHRvIHJlZ2lzdGVyIGN1
c3RvbSB1cmkgc2NoZW1lcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NDEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBHUHRyQXJyYXkgdGVtcGxhdGUgdG8gYmUgYWJsZSB0byB1
c2UgR1JlZlB0ciB3aXRoIEdQdHJBcnJheXMuCisKKyAgICAgICAgKiB3dGYvZ29iamVjdC9HUmVm
UHRyLmNwcDoKKyAgICAgICAgKFdURjo6cmVmR1B0cik6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTIt
MDQtMTggIE15bGVzIE1heGZpZWxkICA8bW1heGZpZWxkQGdvb2dsZS5jb20+CiAKICAgICAgICAg
U29tZWhvdywgdGhlcmUncyBhbiBlcnJhbnQgYmFja3NsYXNoIGluIG15IGxhc3QgV1RGIHBhdGNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYjk3MWE3My4uMjI1MDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
MiBAQAorMjAxMi0wNC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1NPVVBdIEFkZCBhIHdheSB0byByZWdpc3RlciBjdXN0b20gdXJpIHNj
aGVtZXMgaW4gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODQxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgor
ICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmg6IEFkZAorICAgICAgICBNZXNz
YWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXIgYW5kCisgICAgICAgIE1lc3NhZ2VDbGFzc1dl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5IG1lc3NhZ2UgdHlwZXMgdG8gaWRlbnRpZnkKKyAgICAg
ICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyIG1lc3NhZ2VzLgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9XS0Jhc2UuaDogSW5jbHVkZSBXS0Jhc2VTb3VwLmggd2hlbiBidWlsZGluZyB3aXRoCisgICAg
ICAgIHNvdXAgbmV0d29yayBiYWNrZW5kLgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9zb3VwL1dL
QmFzZVNvdXAuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOiBBZGQgU291
cFJlcXVlc3RNYW5hZ2VyIHR5cGUgd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaDogSW5jbHVkZSBXS0FQSUNhc3RTb3VwLmggd2hlbgorICAgICAg
ICBidWlsZGluZyB3aXRoIHNvdXAgbmV0d29yayBiYWNrZW5kLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOiBN
YXAgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgdG8KKyAgICAgICAgV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tDb250ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2VyKTogUmV0
dXJuIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmCisgICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIGNv
bnRleHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTb3VwUmVxdWVzdE1hbmFnZXJHZXRUeXBlSUQpOiBS
ZXR1cm4gdGhlCisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5IEFQSSB0eXBlLgor
ICAgICAgICAoV0tTb3VwUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQpOiBTZXQgdGhlIFdLU291cFJl
cXVlc3RNYW5hZ2VyQ2xpZW50LgorICAgICAgICAoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3Rl
clVSSVNjaGVtZSk6IENhbGwKKyAgICAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OnJl
Z2lzdGVyVVJJU2NoZW1lKCkuCisgICAgICAgIChXS1NvdXBSZXF1ZXN0TWFuYWdlckhhbmRsZVVS
SVJlcXVlc3QpOiBDYWxsCisgICAgICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpoYW5k
bGVVUklSZXF1ZXN0KCkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVx
dWVzdE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KTogSW5pdGlhbGl6ZQor
ICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5IHdoZW4gdXNpbmcgc291cC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6fldlYkNvbnRleHQpOiBJbnZhbGlkYXRlIGFuZCBjbGVh
ciB0aGUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eSB3aGVuIHVzaW5nIHNvdXAu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpc2Nvbm5lY3RQcm9jZXNzKTogSW52YWxp
ZGF0ZSB0aGUKKyAgICAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eSB3aGVuIHVzaW5nIHNv
dXAuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9y
d2FyZCB0aGUgbWVzc2FnZSB0bworICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5IGlm
IGl0J3MgYQorICAgICAgICBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSBt
ZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KTogUmV0dXJuCisgICAgICAg
IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOiBGb3J3YXJkIG1lc3NhZ2UgdG8KKyAgICAgICAgdGhlIHdlYiBjb250ZXh0IGlm
IGl0J3MgYSBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eQorICAgICAgICBt
ZXNzYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNs
aWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQ6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KTogQ2FsbAorICAgICAgICBkaWRSZWNlaXZlVVJJ
UmVxdWVzdCBjYWxsYmFjayBpZiBpdCBoYXMgYW4gaW1wbGVtZW50YXRpb24uCisgICAgICAgICog
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGUp
OiBDcmVhdGUgYSBuZXcKKyAgICAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuCisgICAg
ICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
Ojp+V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlZ2lzdGVyVVJJU2NoZW1l
KTogU2VuZAorICAgICAgICBSZWdpc3RlclVSSVNjaGVtZSBtZXNzYWdlIHRvIHRoZSBXZWJQcm9j
ZXNzIHRvIHJlZ2lzdGVyIHRoZSBnaXZlbgorICAgICAgICBVUkkgc2NoZW1lLgorICAgICAgICAo
V2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aGFuZGxlVVJJUmVxdWVzdCk6IFNl
bmQKKyAgICAgICAgSGFuZGxlVVJJUmVxdWVzdCBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzIHdp
dGggdGhlIGdpdmVuIGRhdGEgYW5kCisgICAgICAgIGRhdGEgdHlwZS4KKyAgICAgICAgKFdlYktp
dDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KTogQ2Fs
bAorICAgICAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdCBjYWxsYmFjayB0byBhbGxvdyB0aGUgdXNl
ciB0byBoYW5kbGUgdGhlCisgICAgICAgIHJlcXVlc3QuCisgICAgICAgICogVUlQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OldlYlByb2Nlc3MpOiBJbml0aWFsaXplIG1fc291cFJlcXVlc3RNYW5hZ2VyCisg
ICAgICAgIHdoZW4gdXNpbmcgc291cC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkIHRoZSBtZXNzYWdlIHRvCisgICAgICAgIG1fc291cFJl
cXVlc3RNYW5hZ2VyIGlmIGl0J3MgYSBNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXIK
KyAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c291cFJlcXVlc3RNYW5hZ2VyKTogUmV0dXJuIG1f
c291cFJlcXVlc3RNYW5hZ2VyLgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3Vw
UmVxdWVzdEdlbmVyaWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2Vu
ZXJpY0ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19pbml0
KToKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6IENyZWF0ZSBh
IEdTaW1wbGVBc3luY1Jlc3VsdAorICAgICAgICB0byBoYW5kbGUgdGhlIHJlcXVlc3QgYW5kIHBh
c3MgaXQgdG8gdGhlIFdlYlNvdXBSZXF1ZXN0TWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFNvdXBS
ZXF1ZXN0R2VuZXJpY1NlbmRGaW5pc2gpOiBGaW5pc2ggdGhlIGFzeW5jIG9wZXJhdGlvbgorICAg
ICAgICBzdGFydGVkIGJ5IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYygpIGFuZCBy
ZXR1cm4gdGhlCisgICAgICAgIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGFzIHJldHVybmVkIGJ5
IFdlYlNvdXBSZXF1ZXN0TWFuYWdlci4KKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJp
Y0dldENvbnRlbnRMZW5ndGgpOiBHZXQgdGhlIHJlcXVlc3QKKyAgICAgICAgY29udGVudHMgbGVu
Z3RoLgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0Q29udGVudFR5cGUpOiBH
ZXQgdGhlIHJlcXVlc3QgbWltZQorICAgICAgICB0eXBlLgorICAgICAgICAod2Via2l0X3NvdXBf
cmVxdWVzdF9nZW5lcmljX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RH
ZW5lcmljU2V0Q29udGVudExlbmd0aCk6IFNldCB0aGUgcmVxdWVzdAorICAgICAgICBjb250ZW50
cyBsZW5ndGguCisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50VHlw
ZSk6IFNldCB0aGUgcmVxdWVzdCBtaW1lCisgICAgICAgIHR5cGUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OmdlbmVyYXRlU291cFJlcXVlc3RJRCk6IEhlbHBlciBmdW5jdGlvbiB0byBnZW5l
cmF0ZSBhCisgICAgICAgIHVuaXF1ZSByZXF1ZXN0IGlkZW50aWZpZXIuCisgICAgICAgIChXZWJL
aXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6V2ViU291cFJlcXVlc3RNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjp+V2ViU291cFJlcXVlc3RNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6cmVnaXN0ZXJV
UklTY2hlbWUpOiBBZGQgdGhlIHNjaGVtZQorICAgICAgICB0byB0aGUgc2NoZW1lcyBhcnJheSBh
bmQgYWRkIGEgbmV3IFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYworICAgICAgICBmZWF0dXJlIHdp
dGggdGhlIG5ldyBzY2hlbWUgbGlzdCB0byB0aGUgU291cFJlcXVlc3RlciBmZWF0dXJlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmhhbmRsZVVSSVJlcXVlc3QpOiBD
b21wbGV0ZSB0aGUKKyAgICAgICAgYXN5bmMgb3BlcmF0aW9uIGJ5IGNyZWF0aW5nIGEgR0lucHV0
U3RyZWFtIHdpdGggdGhlIHJlcXVlc3QgZGF0YSwKKyAgICAgICAgb3Igc2V0dGluZyBhbiBlcnJv
ciBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFu
YWdlcjo6c2VuZCk6IFNlbmQgRGlkUmVjZWl2ZVVSSVJlcXVlc3QKKyAgICAgICAgbWVzc2FnZSB0
byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJlcXVlc3RNYW5hZ2Vy
OjpmaW5pc2gpOiBSZXR1cm4gdGhlIEdJbnB1dFN0cmVhbQorICAgICAgICBjb250YWluaW5nIHRo
ZSByZXF1ZXN0IGRhdGEuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVl
c3RNYW5hZ2VyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKwogMjAxMi0wNC0xOSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSWdub3JlIHJl
c291cmNlcyB3aGlsZSByZXBsYWNpbmcgY29udGVudCBpbiBXZWJLaXQyIEdUSysgQVBJCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDYyMmQyNC4u
YTZlZDliNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIGEgd2F5IHRvIHJlZ2lzdGVy
IGN1c3RvbSB1cmkgc2NoZW1lcyBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHAucHk6CisgICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24pOiBB
ZGQgd2Via2l0X3NvdXAgcHJlZml4IHRvCisgICAgICAgIHRoZSBsaXN0IG9mIGV4Y2VwdGlvbnMg
dG8gdGhlIHVuZGVyc2NvcmVzIGluIGlkZW50aWZpZXJzIHJ1bGUuCisKIDIwMTItMDQtMTkgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IEFsbG93IHRvIHVzZSBXZWJJbnNwZWN0b3IgaW4gR3RrTGF1bmNoZXIKZGlmZiAtLWdpdCBhL0dO
VW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNjVlN2M4NS4uYWY1ZTZjYSAxMDA2
NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTE0Niw2ICsx
NDYsNyBAQCBlbmRpZgogZ2xvYmFsX2NwcGZsYWdzICs9IFwKIAktREJVSUxESU5HX0NBSVJPX189
MSBcCiAJLURCVUlMRElOR19HVEtfXz0xIFwKKwktREJVSUxESU5HX1NPVVBfXz0xIFwKIAktRFdU
Rl9DSEFOR0VTCiAKICMgRm9yIHRoZSBHdGsgcG9ydCB3ZSB3YW50IHRvIHVzZSBYUF9VTklYIGJv
dGggaW4gWDExIGFuZCBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1Jl
ZlB0ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuY3BwCmluZGV4IDMwZGYy
YzkuLjNhMDE0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcApAQCAtMTA3LDYgKzEw
NywxOSBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihHU291cmNlKiBwdHIpCiAgICAgICAg
IGdfc291cmNlX3VucmVmKHB0cik7CiB9CiAKK3RlbXBsYXRlIDw+IEdQdHJBcnJheSogcmVmR1B0
cihHUHRyQXJyYXkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX3B0cl9hcnJheV9y
ZWYocHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0
cihHUHRyQXJyYXkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX3B0cl9hcnJheV91
bnJlZihwdHIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIEVOQUJMRShH
TElCX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIu
aCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCmluZGV4IDkyYWNmZmMuLmY0ZmYz
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCkBAIC0yMDgsNiArMjA4LDggQEAgdGVtcGxh
dGUgPD4gR1ZhcmlhbnQqIHJlZkdQdHIoR1ZhcmlhbnQqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lk
IGRlcmVmR1B0cihHVmFyaWFudCogcHRyKTsKIHRlbXBsYXRlIDw+IEdTb3VyY2UqIHJlZkdQdHIo
R1NvdXJjZSogcHRyKTsKIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyKEdTb3VyY2UqIHB0cik7
Cit0ZW1wbGF0ZSA8PiBHUHRyQXJyYXkqIHJlZkdQdHIoR1B0ckFycmF5Kik7Cit0ZW1wbGF0ZSA8
PiB2b2lkIGRlcmVmR1B0cihHUHRyQXJyYXkqKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlu
bGluZSBUKiByZWZHUHRyKFQqIHB0cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR1R5cGVkZWZzLmggYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCmlu
ZGV4IGUyOTI1MGIuLjc5YzMzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3Qv
R1R5cGVkZWZzLmgKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAt
NjMsNiArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR1ZhcmlhbnQgR1ZhcmlhbnQ7CiB0eXBlZGVm
IHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKIHR5cGVkZWYgc3RydWN0IF9HVGltZXIgR1RpbWVy
OwogdHlwZWRlZiBzdHJ1Y3QgX0dLZXlGaWxlIEdLZXlGaWxlOwordHlwZWRlZiBzdHJ1Y3QgX0dQ
dHJBcnJheSBHUHRyQXJyYXk7CiAKICNpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIHN0cnVjdCBfY2Fp
cm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDFkZjEz
MTAyLi41NjljNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMSw2ICsxLDcgQEAKIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfSEVBREVSUyA9IFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9ndGsv
V0tCYXNlR3RrLmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL2d0ay9XS0dyYXBoaWNzQ29u
dGV4dEd0ay5oIFwKKwkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBc
CiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tBcnJheS5oIFwKIAkkKFdlYktpdDIpL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaCBcCiAJJChXZWJLaXQyKS9TaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0
ZUluZm8uaCBcCkBAIC0zNSw2ICszNiw5IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfSEVBCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQVBJQ2FzdEd0ay5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmggXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cFJlcXVlc3RNYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dl
YktpdDIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBcCkBA
IC0xOTAsNyArMTk0LDExIEBAIHdlYmtpdDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJQcm9jZXNzTWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKLQlEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgKKwlEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlcy5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgKIAogd2Via2l0Ml9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL3dlYmtpdDJndGsvd2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuY3BwIFwKQEAgLTI2Myw2
ICsyNzEsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9ndGsvV0tCYXNlR3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9ndGsv
V0tHcmFwaGljc0NvbnRleHRHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2d0
ay9XS0dyYXBoaWNzQ29udGV4dEd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9zb3VwL1dLQmFzZVNvdXAuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJy
YXkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggXApAQCAtNDY3LDYgKzQ3NiwxMSBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsv
V0tGdWxsU2NyZWVuQ2xpZW50R3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9ndGsvV0tWaWV3LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9X
S1ZpZXcuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0
U291cC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRT
b3VwLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0
U291cC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1
ZXN0TWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
ZWJLaXQyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuaCBcCkBAIC02OTIsNiArNzA2LDEwIEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9SZXNwb25zaXZlbmVzc1RpbWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXApAQCAtOTE4LDYgKzkzNiwxMCBAQCB3ZWJr
aXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291
cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcCBcCisJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJDb250ZXh0
TWVudUNsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIFwKQEAgLTEwMTcs
NiArMTAzOSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBf
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZ3RrIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cCBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0IFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucyBcCkBAIC0xMDI2LDYgKzEwNDksNyBAQCBsaWJ3ZWJraXQyZ3RrX0BX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
X2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ayBcCisJLUkkKHNyY2RpcikvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvY3BwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dGhlbnRpY2F0aW9uIFwKQEAgLTEwMzYsNiArMTA2MCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
Q1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9ndGsgXAorCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0FwcGxpY2F0aW9uQ2FjaGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0aGVudGljYXRpb24gXApAQCAtMTA1NSw2ICsxMDgwLDcgQEAgbGlid2Via2l0Mmd0
a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNh
Y2hlIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucyBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvZ3RrIFwKQEAg
LTExNzgsNiArMTIwNCw3IEBAIHZwYXRoICUubWVzc2FnZXMuaW4gPSBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvUGx1Z2lucyBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCisJJChXZWJLaXQyKS9VSVBy
b2Nlc3Mvc291cCBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzIFwKIAkkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvQXBwbGljYXRpb25DYWNoZSBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uIFwKQEAgLTExOTEsNyArMTIxOCw4IEBAIHZwYXRoICUubWVzc2FnZXMuaW4gPSBcCiAJ
JChXZWJLaXQyKS9XZWJQcm9jZXNzL1BsdWdpbnMgXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9S
ZXNvdXJjZUNhY2hlIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQgXAot
CSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9XZWJQYWdlCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1dl
YlBhZ2UgXAorCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9zb3VwCiAKIG1lc3NhZ2VfZ2VuX3Njcmlw
dHMgPSBcCiAJJChXZWJLaXQyKS9TY3JpcHRzL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkg
XApAQCAtMTU3OSw2ICsxNjA3LDcgQEAgRVhUUkFfRElTVCArPSBcCiAJJChzaGVsbCBscyAkKFdl
YktpdDIpL1VJUHJvY2Vzcy9Eb3dubG9hZHMvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQy
KS9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9QbHVnaW5zLyouaW4pIFwKKwkkKHNoZWxsIGxzICQoV2ViS2l0MikvVUlQcm9j
ZXNzL3NvdXAvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9XZWJQcm9jZXNzLyouaW4p
IFwKIAkkKHNoZWxsIGxzICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlLyou
aW4pIFwKIAkkKHNoZWxsIGxzICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi8q
LmluKSBcCkBAIC0xNTkyLDQgKzE2MjEsNSBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxz
ICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8qLmluKSBcCi0JJChzaGVsbCBscyAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvV2ViUGFnZS8qLmluKQorCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL1dlYlBhZ2UvKi5pbikgXAorCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9XZWJQcm9j
ZXNzL3NvdXAvKi5pbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvTWVzc2FnZUlELmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJ
RC5oCmluZGV4IDZlZTgwOWEuLjVmMzk4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9NZXNzYWdlSUQuaApAQCAtNTMsNyArNTMsMTAgQEAgZW51bSBNZXNzYWdlQ2xhc3Mg
ewogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3MsCiAgICAgTWVzc2FnZUNsYXNzV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzRXZlbnREaXNwYXRjaGVyLAotICAgIAor
I2lmIFVTRShTT1VQKQorICAgIE1lc3NhZ2VDbGFzc1dlYlNvdXBSZXF1ZXN0TWFuYWdlciwKKyNl
bmRpZgorCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIFVJ
IHByb2Nlc3MuCiAgICAgTWVzc2FnZUNsYXNzRG93bmxvYWRQcm94eSwKICAgICBNZXNzYWdlQ2xh
c3NEcmF3aW5nQXJlYVByb3h5LApAQCAtNzMsNiArNzYsOSBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7
CiAgICAgTWVzc2FnZUNsYXNzV2ViUGFnZVByb3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nl
c3NQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LAor
I2lmIFVTRShTT1VQKQorICAgIE1lc3NhZ2VDbGFzc1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LAorI2VuZGlmCiAKICAgICAvLyBNZXNzYWdlcyBzZW50IHRvIGEgV2ViQ29ubmVjdGlvbgogICAg
IE1lc3NhZ2VDbGFzc1dlYkNvbm5lY3Rpb25MZWdhY3ksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKaW5kZXggYzg2NTZlNC4uYmU2MTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZUd0
ay5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEJVSUxESU5HX1NPVVBfXykKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZVNvdXAuaD4KKyNlbmRpZgorCiAvKiBXZWJLaXQyIHNoYXJlZCB0eXBlcyAq
LwogCiB0eXBlZGVmIHVpbnQzMl90IFdLVHlwZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjYxODllNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2Mvc291cC9XS0Jhc2VTb3VwLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQmFzZVNvdXBfaAorI2Rl
ZmluZSBXS0Jhc2VTb3VwX2gKKworI2lmbmRlZiBXS0Jhc2VfaAorI2Vycm9yICJQbGVhc2UgI2lu
Y2x1ZGUgXCJXS0Jhc2UuaFwiIGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKKyNlbmRp
ZgorCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NvdXBSZXF1ZXN0TWFuYWdlciogV0tT
b3VwUmVxdWVzdE1hbmFnZXJSZWY7CisKKyNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaAppbmRleCBkNmNjMDMwLi5kNzI4MjM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oCkBAIC0xMTksNyArMTE5LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICAv
LyBQbGF0Zm9ybSBzcGVjaWZpYwogICAgICAgICBUeXBlRWRpdENvbW1hbmRQcm94eSwKLSAgICAg
ICAgVHlwZVZpZXcKKyAgICAgICAgVHlwZVZpZXcsCisjaWYgVVNFKFNPVVApCisgICAgICAgIFR5
cGVTb3VwUmVxdWVzdE1hbmFnZXIsCisjZW5kaWYKICAgICB9OwogCiAgICAgdmlydHVhbCB+QVBJ
T2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRl
eCBiZDNmYTJkLi5lNDdiMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCkBAIC0zNTksNCArMzU5LDkgQEAgaW5saW5lIFByb3h5aW5nUmVmUHRyPFdlYkdy
YW1tYXJEZXRhaWw+IHRvQVBJKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGdyYW0KICNp
ZiBkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUgIldLQVBJQ2FzdEd0ay5oIgogI2Vu
ZGlmCisKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJXS0FQSUNhc3RTb3VwLmgiCisjZW5kaWYK
KwogI2VuZGlmIC8vIFdLQVBJQ2FzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzhhOTU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApAQCAtMCwwICsxLDQxIEBACisvKgorICog
UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tBUElDYXN0U291cF9oCisjZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorCisjaWZuZGVmIFdL
QVBJQ2FzdF9oCisjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIgaW5zdGVh
ZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKKworV0tfQUREX0FQSV9NQVBQSU5H
KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSkKKwor
fQorCisjZW5kaWYgLy8gV0tBUElDYXN0U291cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmU0ZTg4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcApAQCAtMCwwICsxLDM4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBXS0NvbnRleHRHZXRTb3VwUmVx
dWVzdE1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChjb250ZXh0UmVmKS0+c291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKSk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNv
dXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjk1NGZmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291
cC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKKyNkZWZpbmUgV0tDb250ZXh0
U291cF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tTb3VwUmVxdWVzdE1hbmFnZXIuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0U291cFJlcXVlc3RNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ29udGV4dFNvdXBfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVz
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4
N2Q3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
c291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCIKKworI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlw
ZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OkFQ
SVR5cGUpOworfQorCit2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJl
cXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQqIHdrQ2xpZW50KQoreworICAgIHRvSW1wbChzb3VwUmVxdWVzdE1hbmFn
ZXJSZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKK30KKwordm9pZCBXS1NvdXBSZXF1
ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBS
ZXF1ZXN0TWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgc2NoZW1lUmVmKQoreworICAgIHRvSW1wbChz
b3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5yZWdpc3RlclVSSVNjaGVtZSh0b0ltcGwoc2NoZW1lUmVm
KS0+c3RyaW5nKCkpOworfQorCit2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VySGFuZGxlVVJJUmVx
dWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLRGF0
YVJlZiBkYXRhLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZiwgdWludDY0X3QgcmVxdWVzdElEKQor
eworICAgIHRvSW1wbChzb3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5oYW5kbGVVUklSZXF1ZXN0KHRv
SW1wbChkYXRhKSwgdG9JbXBsKG1pbWVUeXBlUmVmKS0+c3RyaW5nKCksIHJlcXVlc3RJRCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBS
ZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
NGI0ZmEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tTb3VwUmVx
dWVzdE1hbmFnZXJfaAorI2RlZmluZSBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oCisKKyNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldLU291cFJl
cXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVxdWVzdE1h
bmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYsIHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1NvdXBSZXF1
ZXN0TWFuYWdlckNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tTb3VwUmVxdWVzdE1hbmFn
ZXJEaWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrIGRpZFJlY2VpdmVVUklSZXF1ZXN0OworfTsK
K3R5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IFdLU291cFJlcXVlc3RN
YW5hZ2VyQ2xpZW50OworCitlbnVtIHsga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Q3VycmVu
dFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdl
ckdldFR5cGVJRCgpOworCitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENs
aWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lz
dGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVS
ZWYpOworV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJIYW5kbGVVUklSZXF1ZXN0
KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS0RhdGFSZWYsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRp
ZgorCisjZW5kaWYgLyogV0tTb3VwUmVxdWVzdE1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDJlY2ZmOWQuLmYxYTBmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTY2LDYgKzY2LDEwIEBACiAjaW5jbHVk
ZSAiQnVpbHRJblBERlZpZXcuaCIKICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAi
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtMTM1LDYg
KzEzOSw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2Rl
bCwgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAgICAgLCBtX25vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKSkKICAg
ICAsIG1fcGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KFdlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKSkKKyNpZiBVU0UoU09VUCkKKyAgICAsIG1f
c291cFJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZSh0aGlzKSkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikKICAgICAsIG1fc2hvdWxkUGFpbnRO
YXRpdmVDb250cm9scyh0cnVlKQogICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKQpAQCAtMTkyLDcgKzE5OSwxMiBAQCBXZWJD
b250ZXh0Ojp+V2ViQ29udGV4dCgpCiAKICAgICBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkt
PmludmFsaWRhdGUoKTsKICAgICBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHktPmNsZWFyQ29u
dGV4dCgpOwotICAgIAorCisjaWYgVVNFKFNPVVApCisgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS0+aW52YWxpZGF0ZSgpOworICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmNsZWFy
Q29udGV4dCgpOworI2VuZGlmCisKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9kaWN0aW9u
YXJ5Q2FsbGJhY2tzKTsKIAogICAgIHBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKTsKQEAgLTM4
MCw2ICszOTIsOSBAQCB2b2lkIFdlYkNvbnRleHQ6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcykKICAgICBtX21lZGlhQ2FjaGVNYW5hZ2VyUHJveHktPmludmFsaWRh
dGUoKTsKICAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS0+aW52YWxpZGF0ZSgpOwogICAg
IG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS0+aW52YWxpZGF0ZSgpOworI2lmIFVTRShTT1VQ
KQorICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKKyNlbmRpZgog
CiAgICAgLy8gV2hlbiBvdXQgb2YgcHJvY2VzcyBwbHVnLWlucyBhcmUgZW5hYmxlZCwgd2UgZG9u
J3Qgd2FudCB0byBpbnZhbGlkYXRlIHRoZSBwbHVnLWluIHNpdGUgZGF0YQogICAgIC8vIG1hbmFn
ZXIganVzdCBiZWNhdXNlIHRoZSB3ZWIgcHJvY2VzcyBjcmFzaGVzIHNpbmNlIGl0J3Mgbm90IGlu
dm9sdmVkLgpAQCAtNzE2LDYgKzczMSwxMyBAQCB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lcwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisjaWYgVVNFKFNPVVApCisgICAgaWYgKG1lc3NhZ2VJRC5p
czxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKSkgewor
ICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxXZWJDb250ZXh0TGVnYWN5TWVzc2Fn
ZTo6S2luZD4oKSkgewogICAgICAgICBjYXNlIFdlYkNvbnRleHRMZWdhY3lNZXNzYWdlOjpQb3N0
TWVzc2FnZTogewogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZmZjZjliMy4uZGRmM2Q3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC01OCw2ICs1OCw5IEBAIGNsYXNzIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk7CisjaWYgVVNFKFNPVVAp
CitjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKKyNlbmRpZgogc3RydWN0IFN0YXRp
c3RpY3NEYXRhOwogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAgICAgCkBA
IC0xNjEsNiArMTY0LDkgQEAgcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSogbm90aWZpY2F0aW9uTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuZ2V0KCk7IH0KICAgICBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIqIHBs
dWdpblNpdGVEYXRhTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luU2l0ZURhdGFNYW5h
Z2VyLmdldCgpOyB9CiAgICAgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSogcmVzb3VyY2VD
YWNoZU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQ
cm94eS5nZXQoKTsgfQorI2lmIFVTRShTT1VQKQorICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5KiBzb3VwUmVxdWVzdE1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cFJlcXVl
c3RNYW5hZ2VyUHJveHkuZ2V0KCk7IH0KKyNlbmRpZgogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewogICAgICAgICB1bnNpZ25lZCB3a1ZpZXdDb3VudDsKQEAgLTI5Niw2ICszMDIsOSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IG1fbm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OwogICAgIFJlZlB0cjxXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI+IG1f
cGx1Z2luU2l0ZURhdGFNYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUNhY2hlTWFuYWdl
clByb3h5PiBtX3Jlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk7CisjaWYgVVNFKFNPVVApCisgICAg
UmVmUHRyPFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PiBtX3NvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5OworI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgYm9vbCBtX3Nob3VsZFBhaW50
TmF0aXZlQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDQ1Yjc4ZjcuLjQ1NWRmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zMTQsNiArMzE0LDkgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIENvcmVJUEMKICAgICAgICAgfHwgbWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eT4oKQogICAgICAgICB8fCBtZXNzYWdlSUQu
aXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eT4oKQogICAg
ICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpCisjaWYgVVNFKFNPVVApCisgICAgICAgIHx8IG1lc3NhZ2VJRC5pczxD
b3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKQorI2VuZGlm
CiAgICAgICAgIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlclByb3h5PigpKSB7CiAgICAgICAgIG1fY29udGV4dC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kZWJlZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJDbGllbnQ6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5KiBzb3VwUmVxdWVzdE1hbmFnZXIsIFdlYlVSTCogdXJsLCB1aW50NjRfdCByZXF1ZXN0SUQp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlVVJJUmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3QodG9BUEkoc291
cFJlcXVlc3RNYW5hZ2VyKSwgdG9BUEkodXJsKSwgcmVxdWVzdElELCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFn
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYmJh
NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50X2gKKyNkZWZpbmUgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKKworI2luY2x1ZGUg
IkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLU291cFJlcXVlc3RNYW5hZ2VyLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKK2NsYXNz
IFdlYlVSTDsKKworY2xhc3MgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQ
SUNsaWVudDxXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCwga1dLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50Q3VycmVudFZlcnNpb24+IHsKK3B1YmxpYzoKKyAgICBib29sIGRpZFJlY2VpdmVVUklS
ZXF1ZXN0KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KiwgV2ViVVJMKiwgdWludDY0X3QgcmVx
dWVzdElEKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGM1YzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
LmgiCisKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitQYXNzUmVmUHRyPFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PiBXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eShjb250ZXh0KSk7Cit9
CisKK1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94
eShXZWJDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCit7Cit9
CisKK1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojp+V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHkoKQoreworfQorCit2b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRl
KCkKK3sKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNs
aWVudChjb25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCogY2xpZW50KQoreworICAgIG1f
Y2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgV2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlZ2lzdGVyVVJJU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQoreworICAgIEFTU0VSVChtX3dlYkNvbnRleHQpOworICAgIG1fd2ViQ29udGV4dC0+
c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YlNvdXBSZXF1ZXN0TWFuYWdlcjo6UmVnaXN0ZXJVUklTY2hlbWUoc2NoZW1lKSk7Cit9CisKK3Zv
aWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmhhbmRsZVVSSVJlcXVlc3QoY29uc3QgV2Vi
RGF0YSogcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKK3sKKyAgICBBU1NFUlQobV93ZWJDb250ZXh0KTsKKyAgICBtX3dlYkNvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpIYW5kbGVV
UklSZXF1ZXN0KHJlcXVlc3REYXRhLT5kYXRhUmVmZXJlbmNlKCksIG1pbWVUeXBlLCByZXF1ZXN0
SUQpKTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVS
SVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sK
KyAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0KHRoaXMsIFdlYlVSTDo6Y3Jl
YXRlKHVyaVN0cmluZykuZ2V0KCksIHJlcXVlc3RJRCkpCisgICAgICAgIGhhbmRsZVVSSVJlcXVl
c3QoV2ViRGF0YTo6Y3JlYXRlKDAsIDApLmdldCgpLCBTdHJpbmcoKSwgcmVxdWVzdElEKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWEzZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlfaAorI2RlZmluZSBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVj
dGlvbjsKK2NsYXNzIE1lc3NhZ2VJRDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvbnRleHQ7CitjbGFzcyBXZWJEYXRhOworCitjbGFzcyBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBU
eXBlIEFQSVR5cGUgPSBUeXBlU291cFJlcXVlc3RNYW5hZ2VyOworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7Cisg
ICAgdmlydHVhbCB+V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKKworICAgIHZvaWQgaW52
YWxpZGF0ZSgpOworICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX3dlYkNvbnRleHQgPSAwOyB9
CisKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQqKTsKKworICAgIHZvaWQgcmVnaXN0ZXJVUklTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpOworICAgIHZvaWQgaGFuZGxlVVJJUmVxdWVzdChjb25zdCBXZWJEYXRhKiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKTsKKworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CisKK3ByaXZhdGU6CisgICAgV2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHkoV2ViQ29udGV4dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVVUklSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJpU3RyaW5nLCB1aW50NjRfdCByZXF1ZXN0SUQpOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCisg
ICAgV2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworICAgIFdlYlNvdXBSZXF1ZXN0TWFuYWdlckNs
aWVudCBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2QwNTI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkgeworICAg
IERpZFJlY2VpdmVVUklSZXF1ZXN0KFdURjo6U3RyaW5nIHVyaVN0cmluZywgdWludDY0X3QgcmVx
dWVzdElEKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGEyMmY0YzYuLmFkZTQzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTQ4LDYgKzE0OCw5IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICAsIG1fZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdl
VGltZW91dChmYWxzZSkKICNlbmRpZgorI2lmIFVTRShTT1VQKQorICAgICwgbV9zb3VwUmVxdWVz
dE1hbmFnZXIodGhpcykKKyNlbmRpZgogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQog
ICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCkBAIC02NTAsNiArNjUz
LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBVU0UoU09VUCkKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c1dlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKSkgeworICAgICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdl
ci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29y
ZUlQQzo6TWVzc2FnZUNsYXNzSW5qZWN0ZWRCdW5kbGU+KCkpIHsKICAgICAgICAgaWYgKCFtX2lu
amVjdGVkQnVuZGxlKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCAxYTQ5ODlmLi5hOTgxZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKKyNpZiBVU0UoU09VUCkKKyNpbmNs
dWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQp
CiBjbGFzcyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7CiAjZW5kaWYKQEAgLTE0OCw2ICsxNTIsMTAg
QEAgcHVibGljOgogCiAgICAgRXZlbnREaXNwYXRjaGVyJiBldmVudERpc3BhdGNoZXIoKSB7IHJl
dHVybiBtX2V2ZW50RGlzcGF0Y2hlcjsgfQogCisjaWYgVVNFKFNPVVApCisgICAgV2ViU291cFJl
cXVlc3RNYW5hZ2VyJiBzb3VwUmVxdWVzdE1hbmFnZXIoKSB7IHJldHVybiBtX3NvdXBSZXF1ZXN0
TWFuYWdlcjsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUHJvY2VzcygpOwogCkBAIC0y
ODIsNiArMjkwLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2FibGVQbHVnaW5Qcm9jZXNz
TWVzc2FnZVRpbWVvdXQ7CiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorICAgIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlciBtX3NvdXBSZXF1ZXN0TWFuYWdlcjsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODA4OTA5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwCkBAIC0wLDAgKzEs
OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworR19ERUZJTkVfVFlQRShXZWJLaXRTb3VwUmVxdWVzdEdlbmVy
aWMsIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpYywgU09VUF9UWVBFX1JFUVVFU1QpCisKK3N0
cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljUHJpdmF0ZSB7CisgICAgQ1N0cmluZyBtaW1l
VHlwZTsKKyAgICBnb2Zmc2V0IGNvbnRlbnRMZW5ndGg7Cit9OworCitzdGF0aWMgdm9pZCB3ZWJr
aXRTb3VwUmVxdWVzdEdlbmVyaWNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VC
S0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKG9iamVjdCktPnByaXYtPn5XZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWNQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NvdXBfcmVxdWVz
dF9nZW5lcmljX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19pbml0KFdlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYyogcmVxdWVzdCkKK3sKKyAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlKiBw
cml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlcXVlc3QsIFdFQktJVF9UWVBFX1NP
VVBfUkVRVUVTVF9HRU5FUklDLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlKTsKKyAg
ICByZXF1ZXN0LT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpY1ByaXZhdGUoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5l
cmljU2VuZEFzeW5jKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKK3sK
KyAgICBHU2ltcGxlQXN5bmNSZXN1bHQqIHJlc3VsdCA9IGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9u
ZXcoR19PQkpFQ1QocmVxdWVzdCksIGNhbGxiYWNrLCB1c2VyRGF0YSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4od2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEFzeW5jKSk7CisgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuc291cFJlcXVlc3RNYW5hZ2VyKCkuc2VuZChyZXN1bHQpOworfQorCitz
dGF0aWMgR0lucHV0U3RyZWFtKiB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKFNv
dXBSZXF1ZXN0KiByZXF1ZXN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3Ip
Cit7CisgICAgR1NpbXBsZUFzeW5jUmVzdWx0KiBzaW1wbGVSZXN1bHQgPSBHX1NJTVBMRV9BU1lO
Q19SRVNVTFQocmVzdWx0KTsKKyAgICBnX3dhcm5faWZfZmFpbChnX3NpbXBsZV9hc3luY19yZXN1
bHRfZ2V0X3NvdXJjZV90YWcoc2ltcGxlUmVzdWx0KSA9PSB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZW5kQXN5bmMpOworCisgICAgaWYgKGdfc2ltcGxlX2FzeW5jX3Jlc3VsdF9wcm9wYWdhdGVf
ZXJyb3Ioc2ltcGxlUmVzdWx0LCBlcnJvcikpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnNvdXBSZXF1ZXN0TWFuYWdlcigpLmZpbmlzaChzaW1w
bGVSZXN1bHQpOworfQorCitzdGF0aWMgZ29mZnNldCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNH
ZXRDb250ZW50TGVuZ3RoKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiBXRUJL
SVRfU09VUF9SRVFVRVNUX0dFTkVSSUMocmVxdWVzdCktPnByaXYtPmNvbnRlbnRMZW5ndGg7Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyKiB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRDb250ZW50
VHlwZShTb3VwUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gV0VCS0lUX1NPVVBfUkVR
VUVTVF9HRU5FUklDKHJlcXVlc3QpLT5wcml2LT5taW1lVHlwZS5kYXRhKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19jbGFzc19pbml0KFdlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpY0NsYXNzKiByZXF1ZXN0R2VuZXJpY0NsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdEdlbmVyaWNDbGFzcyk7
CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0Zp
bmFsaXplOworCisgICAgU291cFJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzID0gU09VUF9SRVFV
RVNUX0NMQVNTKHJlcXVlc3RHZW5lcmljQ2xhc3MpOworICAgIHJlcXVlc3RDbGFzcy0+c2VuZF9h
c3luYyA9IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYzsKKyAgICByZXF1ZXN0Q2xh
c3MtPnNlbmRfZmluaXNoID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2VuZEZpbmlzaDsKKyAg
ICByZXF1ZXN0Q2xhc3MtPmdldF9jb250ZW50X2xlbmd0aCA9IHdlYmtpdFNvdXBSZXF1ZXN0R2Vu
ZXJpY0dldENvbnRlbnRMZW5ndGg7CisgICAgcmVxdWVzdENsYXNzLT5nZXRfY29udGVudF90eXBl
ID0gd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0Q29udGVudFR5cGU7CisKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUocmVxdWVzdEdlbmVyaWNDbGFzcywgc2l6ZW9mKFdlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpY1ByaXZhdGUpKTsKK30KKwordm9pZCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZXRDb250ZW50TGVuZ3RoKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCwgZ29m
ZnNldCBjb250ZW50TGVuZ3RoKQoreworICAgIHJlcXVlc3QtPnByaXYtPmNvbnRlbnRMZW5ndGgg
PSBjb250ZW50TGVuZ3RoOworfQorCit2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENv
bnRlbnRUeXBlKFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCwgY29uc3QgY2hhciog
bWltZVR5cGUpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+bWltZVR5cGUgPSBtaW1lVHlwZTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3Vw
UmVxdWVzdEdlbmVyaWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWUy
ODZjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0U291cFJlcXVlc3RHZW5lcmlj
X2gKKyNkZWZpbmUgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljX2gKKworI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjZGVmaW5lIExJQlNPVVBfVVNFX1VOU1RBQkxFX1JFUVVFU1RfQVBJCisjaW5j
bHVkZSA8bGlic291cC9zb3VwLXJlcXVlc3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5l
IFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDICAgICAgICAgICAgKHdlYmtpdF9zb3Vw
X3JlcXVlc3RfZ2VuZXJpY19nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9SRVFVRVNU
X0dFTkVSSUMob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
ZWN0KSwgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX1JFUVVFU1RfR0VORVJJQyhvYmplY3Qp
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmplY3QpLCBXRUJLSVRfVFlQRV9T
T1VQX1JFUVVFU1RfR0VORVJJQykpCisjZGVmaW5lIFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJ
Q19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJ
VF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGFz
cykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX1JFUVVFU1RfR0VORVJJQ19DTEFTUyhrbGFzcykg
KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVT
VF9HRU5FUklDKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgV0VCS0lUX1RZUEVfU09V
UF9SRVFVRVNUX0dFTkVSSUMsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyBXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWM7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MgV2Vi
S2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cFJl
cXVlc3RHZW5lcmljUHJpdmF0ZSBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNQcml2YXRlOworCitz
dHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyB7CisgICAgU291cFJlcXVlc3QgcGFyZW50
OworCisgICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0
cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xhc3MgeworICAgIFNvdXBSZXF1ZXN0Q2xh
c3MgcGFyZW50OworfTsKKworR1R5cGUgd2Via2l0X3NvdXBfcmVxdWVzdF9nZW5lcmljX2dldF90
eXBlKCk7CisKK3ZvaWQgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudExlbmd0aChX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqLCBnb2Zmc2V0IGNvbnRlbnRMZW5ndGgpOwordm9pZCB3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50VHlwZShXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMqLCBjb25zdCBjaGFyKiBtaW1lVHlwZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAv
LyBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzQ4NGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTAs
MCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgorCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUg
IldlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAtcmVxdWVzdGVyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZVNvdXBSZXF1ZXN0SUQoKQoreworICAgIHN0YXRpYyB1aW50NjRf
dCB1bmlxdWVTb3VwUmVxdWVzdElEID0gMTsKKyAgICByZXR1cm4gdW5pcXVlU291cFJlcXVlc3RJ
RCsrOworfQorCitXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcihX
ZWJQcm9jZXNzKiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCisgICAgLCBtX3Nj
aGVtZXMoYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyhnX2ZyZWUpKSkK
K3sKK30KKworV2ViU291cFJlcXVlc3RNYW5hZ2VyOjp+V2ViU291cFJlcXVlc3RNYW5hZ2VyKCkK
K3sKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2Vp
dmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJn
dW1lbnRzKTsKK30KKwordm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyVVJJU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChtX3NjaGVtZXMtPmxlbikKKyAg
ICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QobV9zY2hlbWVzLmdldCgpLCBtX3Nj
aGVtZXMtPmxlbiAtIDEpOworICAgIGdfcHRyX2FycmF5X2FkZChtX3NjaGVtZXMuZ2V0KCksIGdf
c3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgZ19wdHJfYXJyYXlfYWRkKG1fc2No
ZW1lcy5nZXQoKSwgMCk7CisKKyAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAgIEdSZWZQdHI8U291cFJlcXVlc3Rl
cj4gcmVxdWVzdGVyID0gU09VUF9SRVFVRVNURVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNl
c3Npb24sIFNPVVBfVFlQRV9SRVFVRVNURVIpKTsKKyAgICBpZiAocmVxdWVzdGVyKQorICAgICAg
ICBzb3VwX3Nlc3Npb25fZmVhdHVyZV9yZW1vdmVfZmVhdHVyZShTT1VQX1NFU1NJT05fRkVBVFVS
RShyZXF1ZXN0ZXIuZ2V0KCkpLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Cisg
ICAgZWxzZSB7CisgICAgICAgIHJlcXVlc3RlciA9IGFkb3B0R1JlZihzb3VwX3JlcXVlc3Rlcl9u
ZXcoKSk7CisgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NF
U1NJT05fRkVBVFVSRShyZXF1ZXN0ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgU291cFJlcXVlc3RD
bGFzcyogZ2VuZXJpY1JlcXVlc3RDbGFzcyA9IHN0YXRpY19jYXN0PFNvdXBSZXF1ZXN0Q2xhc3Mq
PihnX3R5cGVfY2xhc3NfcmVmKFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKSk7Cisg
ICAgZ2VuZXJpY1JlcXVlc3RDbGFzcy0+c2NoZW1lcyA9IGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioq
PihyZWludGVycHJldF9jYXN0PGNoYXIqKj4obV9zY2hlbWVzLT5wZGF0YSkpOworICAgIHNvdXBf
c2Vzc2lvbl9mZWF0dXJlX2FkZF9mZWF0dXJlKFNPVVBfU0VTU0lPTl9GRUFUVVJFKHJlcXVlc3Rl
ci5nZXQoKSksIFdFQktJVF9UWVBFX1NPVVBfUkVRVUVTVF9HRU5FUklDKTsKK30KKwordm9pZCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmhhbmRsZVVSSVJlcXVlc3QoY29uc3QgQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZSYgcmVxdWVzdERhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKK3sKKyAgICBHUmVmUHRyPEdTaW1wbGVBc3luY1Jlc3VsdD4gcmVzdWx0ID0g
YWRvcHRHUmVmKG1fcmVxdWVzdE1hcC50YWtlKHJlcXVlc3RJRCkpOworICAgIEFTU0VSVChyZXN1
bHQuZ2V0KCkpOworCisgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVl
c3QgPSBhZG9wdEdSZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0
X2dldF9zb3VyY2Vfb2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdC5nZXQoKSkpKSk7CisgICAg
aWYgKHJlcXVlc3REYXRhLnNpemUoKSkgeworICAgICAgICB3ZWJraXRTb3VwUmVxdWVzdEdlbmVy
aWNTZXRDb250ZW50TGVuZ3RoKHJlcXVlc3QuZ2V0KCksIHJlcXVlc3REYXRhLnNpemUoKSk7Cisg
ICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRUeXBlKHJlcXVlc3QuZ2V0
KCksIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBHSW5wdXRTdHJlYW0qIGRhdGFT
dHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShyZXF1ZXN0RGF0YS5k
YXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSwgMCk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF9zZXRfb3BfcmVzX2dwb2ludGVyKHJlc3VsdC5nZXQoKSwgZGF0YVN0cmVhbSwgZ19vYmpl
Y3RfdW5yZWYpOworICAgIH0gZWxzZSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpU3RyaW5n
KHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShTT1VQX1JFUVVFU1QocmVx
dWVzdC5nZXQoKSkpLCBGQUxTRSkpOworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVzb3VyY2VSZXF1ZXN0KFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKSk7CisgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihXZWJDb3JlOjpjYW5ub3RT
aG93VVJMRXJyb3IocmVzb3VyY2VSZXF1ZXN0KSk7CisgICAgICAgIGdfc2ltcGxlX2FzeW5jX3Jl
c3VsdF9zZXRfZXJyb3IocmVzdWx0LmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNl
RXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgIiVzIiwgcmVzb3VyY2VF
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICBn
X3NpbXBsZV9hc3luY19yZXN1bHRfY29tcGxldGUocmVzdWx0LmdldCgpKTsKK30KKwordm9pZCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1NpbXBsZUFzeW5jUmVzdWx0KiByZXN1bHQpCit7
CisgICAgR1JlZlB0cjxXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWM+IHJlcXVlc3QgPSBhZG9wdEdS
ZWYoV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfYXN5bmNfcmVzdWx0X2dldF9zb3VyY2Vf
b2JqZWN0KEdfQVNZTkNfUkVTVUxUKHJlc3VsdCkpKSk7CisgICAgU291cFVSSSogdXJpID0gc291
cF9yZXF1ZXN0X2dldF91cmkoU09VUF9SRVFVRVNUKHJlcXVlc3QuZ2V0KCkpKTsKKyAgICBHT3du
UHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOworCisg
ICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7CisgICAgbV9y
ZXF1ZXN0TWFwLnNldChyZXF1ZXN0SUQsIHJlc3VsdCk7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpEaWRSZWNl
aXZlVVJJUmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaVN0cmluZy5nZXQoKSksIHJlcXVlc3RJ
RCksIDApOworfQorCitHSW5wdXRTdHJlYW0qIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZmluaXNo
KEdTaW1wbGVBc3luY1Jlc3VsdCogcmVzdWx0KQoreworICAgIHJldHVybiBHX0lOUFVUX1NUUkVB
TShnX29iamVjdF9yZWYoZ19zaW1wbGVfYXN5bmNfcmVzdWx0X2dldF9vcF9yZXNfZ3BvaW50ZXIo
cmVzdWx0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjQzMTYxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJfaAorI2RlZmluZSBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HSW5wdXRTdHJlYW0gR0lucHV0U3Ry
ZWFtOwordHlwZWRlZiBzdHJ1Y3QgX0dTaW1wbGVBc3luY1Jlc3VsdCBHU2ltcGxlQXN5bmNSZXN1
bHQ7CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNz
IENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgTWVzc2FnZUlEOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2VzczsKKworY2xhc3MgV2ViU291
cFJlcXVlc3RNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJTb3VwUmVxdWVz
dE1hbmFnZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNvdXBSZXF1ZXN0TWFuYWdlcihX
ZWJQcm9jZXNzKik7CisgICAgfldlYlNvdXBSZXF1ZXN0TWFuYWdlcigpOworCisgICAgdm9pZCBz
ZW5kKEdTaW1wbGVBc3luY1Jlc3VsdCopOworICAgIEdJbnB1dFN0cmVhbSogZmluaXNoKEdTaW1w
bGVBc3luY1Jlc3VsdCopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb3VwUmVxdWVzdE1hbmFnZXJN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCByZWdpc3RlclVSSVNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSk7CisgICAgdm9pZCBoYW5kbGVVUklSZXF1ZXN0KGNvbnN0IENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50NjRfdCByZXF1ZXN0
SUQpOworCisgICAgV2ViUHJvY2VzcyogbV9wcm9jZXNzOworICAgIEdSZWZQdHI8R1B0ckFycmF5
PiBtX3NjaGVtZXM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR1NpbXBsZUFzeW5jUmVzdWx0Kj4g
bV9yZXF1ZXN0TWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3Vw
UmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDNmYzk2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViU291cFJlcXVlc3RNYW5hZ2Vy
IHsKKyAgICBSZWdpc3RlclVSSVNjaGVtZShXVEY6OlN0cmluZyB1cmlTY2hlbWUpOworICAgIEhh
bmRsZVVSSVJlcXVlc3QoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSByZXF1ZXN0RGF0YSwgV1RGOjpT
dHJpbmcgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDJjMzFhNWQuLjFlZWE0OTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zMTA5
LDYgKzMxMDksNyBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZmlsZV9zdGF0ZQogICAgICAgICAgICAgICAgIGFu
ZCBub3QgKGZpbGVuYW1lLmZpbmQoJ2d0aycpID49IDAgYW5kIG1vZGlmaWVkX2lkZW50aWZpZXIu
c3RhcnRzd2l0aCgnd2Via2l0XycpID49IDApCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2Rp
ZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3RzdF8nKQogICAgICAgICAgICAgICAgIGFuZCBu
b3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJraXRfZG9tX29iamVjdF8nKQor
ICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3
ZWJraXRfc291cCcpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVy
LnN0YXJ0c3dpdGgoJ05QTl8nKQogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRl
bnRpZmllci5zdGFydHN3aXRoKCdOUFBfJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlm
aWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnTlBfJykK
</data>
<flag name="review"
          id="143315"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>