<?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>110978</bug_id>
          
          <creation_ts>2013-02-27 07:10:16 -0800</creation_ts>
          <short_desc>[WK2] Refactoring: unify IPC connection creation - get rid of ifdef hell</short_desc>
          <delta_ts>2016-03-09 13:45:26 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108832</blocked>
    
    <blocked>111310</blocked>
    
    <blocked>110093</blocked>
    
    <blocked>111543</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>abecsi</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>evab.u-szeged</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>lamarque</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lauro.neto</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>nick.diego</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>pmolnar.u-szeged</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>skyul</cc>
    
    <cc>thorton</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>843027</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-27 07:10:16 -0800</bug_when>
    <thetext>This has been raised in https://bugs.webkit.org/show_bug.cgi?id=110093#c6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843029</commentid>
    <comment_count>1</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-27 07:10:49 -0800</bug_when>
    <thetext>*** Bug 109032 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843127</commentid>
    <comment_count>2</comment_count>
      <attachid>190537</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-27 08:57:32 -0800</bug_when>
    <thetext>Created attachment 190537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843141</commentid>
    <comment_count>3</comment_count>
      <attachid>190537</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-27 09:09:58 -0800</bug_when>
    <thetext>Comment on attachment 190537
Patch

Attachment 190537 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/16845001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843159</commentid>
    <comment_count>4</comment_count>
      <attachid>190537</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-27 09:25:52 -0800</bug_when>
    <thetext>Comment on attachment 190537
Patch

Attachment 190537 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16826071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843198</commentid>
    <comment_count>5</comment_count>
      <attachid>190537</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-27 10:04:30 -0800</bug_when>
    <thetext>Comment on attachment 190537
Patch

Attachment 190537 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16804057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844138</commentid>
    <comment_count>6</comment_count>
      <attachid>190734</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-28 09:02:33 -0800</bug_when>
    <thetext>Created attachment 190734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844143</commentid>
    <comment_count>7</comment_count>
      <attachid>190734</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-28 09:09:09 -0800</bug_when>
    <thetext>Comment on attachment 190734
Patch

Attachment 190734 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16787132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844144</commentid>
    <comment_count>8</comment_count>
      <attachid>190736</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-28 09:13:30 -0800</bug_when>
    <thetext>Created attachment 190736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844146</commentid>
    <comment_count>9</comment_count>
      <attachid>190737</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-28 09:22:06 -0800</bug_when>
    <thetext>Created attachment 190737
Patch

Yet another buildfix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844157</commentid>
    <comment_count>10</comment_count>
      <attachid>190737</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-28 09:46:40 -0800</bug_when>
    <thetext>Comment on attachment 190737
Patch

Attachment 190737 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16803283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844175</commentid>
    <comment_count>11</comment_count>
      <attachid>190737</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-28 10:06:08 -0800</bug_when>
    <thetext>Comment on attachment 190737
Patch

Attachment 190737 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16779705</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844181</commentid>
    <comment_count>12</comment_count>
      <attachid>190746</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-02-28 10:14:53 -0800</bug_when>
    <thetext>Created attachment 190746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844195</commentid>
    <comment_count>13</comment_count>
      <attachid>190746</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-28 10:25:55 -0800</bug_when>
    <thetext>Comment on attachment 190746
Patch

Attachment 190746 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16798153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844199</commentid>
    <comment_count>14</comment_count>
      <attachid>190746</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-28 10:27:53 -0800</bug_when>
    <thetext>Comment on attachment 190746
Patch

Attachment 190746 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16842246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845108</commentid>
    <comment_count>15</comment_count>
      <attachid>190948</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-01 05:51:20 -0800</bug_when>
    <thetext>Created attachment 190948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848589</commentid>
    <comment_count>16</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-06 00:55:29 -0800</bug_when>
    <thetext>Any chance to get reviewed by an owner? Actually, I would need somebody showing some love for making the network process cross-platform and nursing my patches blocking bug 108832.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848604</commentid>
    <comment_count>17</comment_count>
      <attachid>190948</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2013-03-06 01:12:32 -0800</bug_when>
    <thetext>Comment on attachment 190948
Patch

The patch looks good to me, but I would like to suggest renaming all the references of &quot;port&quot; to &quot;identifier&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848642</commentid>
    <comment_count>18</comment_count>
      <attachid>190948</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2013-03-06 01:50:09 -0800</bug_when>
    <thetext>Comment on attachment 190948
Patch

s/Aquire/Acquire</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849110</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-03-06 11:19:05 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Any chance to get reviewed by an owner? 

Anders needs to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849118</commentid>
    <comment_count>20</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-03-06 11:27:07 -0800</bug_when>
    <thetext>I&apos;d rather we did this once we have move semantics for IPC objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849122</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-06 11:28:35 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; I&apos;d rather we did this once we have move semantics for IPC objects.

Any ETA on that? Could you shortly explain what you are planning. Thiago Santos expressed some interest in helping out with CoreIPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849910</commentid>
    <comment_count>22</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-07 02:37:23 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 190948 [details])
&gt; The patch looks good to me, but I would like to suggest renaming all the references of &quot;port&quot; to &quot;identifier&quot;.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849911</commentid>
    <comment_count>23</comment_count>
      <attachid>191959</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-07 02:39:43 -0800</bug_when>
    <thetext>Created attachment 191959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849951</commentid>
    <comment_count>24</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-07 04:10:52 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=191959) [details]
&gt; Patch

Removed the &quot;port&quot; terminology from the common interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861404</commentid>
    <comment_count>25</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2013-03-22 06:42:50 -0700</bug_when>
    <thetext>Could someone please review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861510</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-03-22 08:45:45 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Could someone please review this patch?

I believe Anders already expressed that we should wait on this.  Perhaps he can give more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861522</commentid>
    <comment_count>27</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-03-22 08:56:00 -0700</bug_when>
    <thetext>He mentioned we should have move semantics for this, but I wonder how should we use it. I guess he think about these parts:
+    enum ConnectionRequirement {
+        AcquireSendRight,
+        ForwardSendRight
+    };
+
+    Attachment(Connection::Identifier, ConnectionRequirement);

and where it is used, for example

+    Attachment clientPort(descriptor.clientIdentifier(), Attachment::AcquireSendRight);
     parentProcessConnection()-&gt;send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort, m_supportsAsynchronousPluginInitialization), 0);
or
+    reply-&gt;send(CoreIPC::Attachment::nullConnection(CoreIPC::Attachment::ForwardSendRight));

However, since there are 2 different ways we want to &quot;move&quot; an Attachment, I don&apos;t think move constructors really help here.
But I&apos;m just guessing this, probably he was thinking about something different.
In any case we can refactor the code later, so I don&apos;t really understand why does it have to block the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897052</commentid>
    <comment_count>28</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-06-04 14:59:38 -0700</bug_when>
    <thetext>Anders, can you comment on what should be fixed in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904481</commentid>
    <comment_count>29</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-06-28 01:10:52 -0700</bug_when>
    <thetext>Any progress?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906344</commentid>
    <comment_count>30</comment_count>
      <attachid>206130</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-05 02:52:47 -0700</bug_when>
    <thetext>Created attachment 206130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906345</commentid>
    <comment_count>31</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-05 03:06:02 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=206130) [details]
&gt; Patch

I rebased the original patch on top of the HEAD.

In the mean time, I found a bug in the original patch.

Connection::ConnectionDescriptor Connection::createPlatformConnection()
{
    int sockets[2];
    RELEASE_ASSERT(socketpair(AF_UNIX, SOCKET_TYPE, 0, sockets) != -1);

    // Avoid exposing the server socket to the child process or the client socket to any future child.
    for (unsigned i = 0; i &lt; 2; ++i) {
        while (fcntl(sockets[i], F_SETFD, FD_CLOEXEC) == -1)
            RELEASE_ASSERT(errno == EINTR);
    }

    return ConnectionDescriptor(sockets[0], sockets[1]);
}

&quot;or the client socket to any future child.&quot; applies only to NetworkProcess::createNetworkConnectionToWebProcess and SharedWorkerProcess::createNetworkConnectionToWebProcess. ProcessLauncher should not set FD_CLOEXEC on the client socket. 

I changed the method to set FD_CLOEXEC only on the server socket. But now I am not sure how to handle NetworkProcess::createNetworkConnectionToWebProcess and SharedWorkerProcess::createNetworkConnectionToWebProcess. 

I will investigate this issue more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906386</commentid>
    <comment_count>32</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-07-05 06:32:18 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Created an attachment (id=206130) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I rebased the original patch on top of the HEAD.
&gt; 
&gt; In the mean time, I found a bug in the original patch.
&gt; 
&gt; Connection::ConnectionDescriptor Connection::createPlatformConnection()
&gt; {
&gt;     int sockets[2];
&gt;     RELEASE_ASSERT(socketpair(AF_UNIX, SOCKET_TYPE, 0, sockets) != -1);
&gt; 
&gt;     // Avoid exposing the server socket to the child process or the client socket to any future child.
&gt;     for (unsigned i = 0; i &lt; 2; ++i) {
&gt;         while (fcntl(sockets[i], F_SETFD, FD_CLOEXEC) == -1)
&gt;             RELEASE_ASSERT(errno == EINTR);
&gt;     }
&gt; 
&gt;     return ConnectionDescriptor(sockets[0], sockets[1]);
&gt; }
&gt; 
&gt; &quot;or the client socket to any future child.&quot; applies only to NetworkProcess::createNetworkConnectionToWebProcess and SharedWorkerProcess::createNetworkConnectionToWebProcess. ProcessLauncher should not set FD_CLOEXEC on the client socket. 
&gt; 
&gt; I changed the method to set FD_CLOEXEC only on the server socket. But now I am not sure how to handle NetworkProcess::createNetworkConnectionToWebProcess and SharedWorkerProcess::createNetworkConnectionToWebProcess. 
&gt; 
&gt; I will investigate this issue more.

You are right. It&apos;s good to set FD_CLOEXEC on the server socket (the one the creator of the connection use) but only after the connection with the child has been set up. I am not sure how it was not breaking things for me (with my local branch where I pushed all my network process patches together), maybe I just did not test this version of the patch.
You don&apos;t need to do any magic, just explicitly express the difference of these situations. I would add functions that calls fcntl on the client and server sockets. These will be noops on Mac. But maybe you can get up with a nicer approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906387</commentid>
    <comment_count>33</comment_count>
      <attachid>206130</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-07-05 06:34:45 -0700</bug_when>
    <thetext>Comment on attachment 206130
Patch

You should solve the issue with FD_CLOEXEC first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906527</commentid>
    <comment_count>34</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-05 20:15:12 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; You are right. It&apos;s good to set FD_CLOEXEC on the server socket (the one the creator of the connection use) but only after the connection with the child has been set up. I am not sure how it was not breaking things for me (with my local branch where I pushed all my network process patches together), maybe I just did not test this version of the patch.

Why &quot;only after the connection with the child has been set up&quot;? We should set FD_CLOEXEC on the server socket (the one the creator of the connection use) immediately after creating a socketpair because we want to prevent future child processes from accessing the server socket. This is the current behavior and I didn&apos;t change it.

Setting FD_CLOEXEC on the client socket seems to have a different requirement. Here&apos;s my understanding.

PluginProcess passes its client socket to the UIProcess because UIProcess relays the socket to the requesting WebProcess. This means the UIProcess also gets the client socket and the future descendants processes of the UIProess implicitly inherits all these client sockets. To prevent this problem, PluginProcess sets the FD_CLOEXEC on the client socket before sending it to the UIProcess. 

(The Mac port prevents this by sending the port to the WebProcess with MACH_MSG_TYPE_MOVE_SEND option though it seems more strict.)

Bug this is redundant because we already set FD_CLOEXEC on every file descriptor we pass over UNIX domain sockets in readBytesFromSocket. That means when the client socket is passed to the UIProcess, we set FD_CLOEXEC on the socket. So the future child processes of the UIProcess can&apos;t access to this socket.

static ssize_t readBytesFromSocket(int socketDescriptor, uint8_t* buffer, int count, int* fileDescriptors, size_t* fileDescriptorsCount)
{
...
        bool found = false;
        struct cmsghdr* controlMessage;
        for (controlMessage = CMSG_FIRSTHDR(&amp;message); controlMessage; controlMessage = CMSG_NXTHDR(&amp;message, controlMessage)) {
            if (controlMessage-&gt;cmsg_level == SOL_SOCKET &amp;&amp; controlMessage-&gt;cmsg_type == SCM_RIGHTS) {
                *fileDescriptorsCount = (controlMessage-&gt;cmsg_len - CMSG_LEN(0)) / sizeof(int);
                memcpy(fileDescriptors, CMSG_DATA(controlMessage), sizeof(int) * *fileDescriptorsCount);

                for (size_t i = 0; i &lt; *fileDescriptorsCount; ++i) {
                    while (fcntl(fileDescriptors[i], F_SETFL, FD_CLOEXEC) == -1) {
                        if (errno != EINTR) {
                            ASSERT_NOT_REACHED();
                            break;
                        }   
                    }   
                }   

                found = true;
                break;
            }   
        }   

So I think that this patch has no behavior change. But I am not an expert on UNIX domain sockets. So please correct me if I&apos;m wrong or misunderstood something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906558</commentid>
    <comment_count>35</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-05 23:37:23 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (The Mac port prevents this by sending the port to the WebProcess with MACH_MSG_TYPE_MOVE_SEND option though it seems more strict.)

Correction: Mach ports are not inherited. So there is no such problem in the Mac port.

This prevents UIProcess from possessing the port used for communication between PluginProcess and WebProcess. We don&apos;t enforce this on Unix domain sockets yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906629</commentid>
    <comment_count>36</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-07-07 10:25:57 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #32)
&gt; &gt; You are right. It&apos;s good to set FD_CLOEXEC on the server socket (the one the creator of the connection use) but only after the connection with the child has been set up. I am not sure how it was not breaking things for me (with my local branch where I pushed all my network process patches together), maybe I just did not test this version of the patch.
&gt; 
&gt; Why &quot;only after the connection with the child has been set up&quot;? We should set FD_CLOEXEC on the server socket (the one the creator of the connection use) immediately after creating a socketpair because we want to prevent future child processes from accessing the server socket. This is the current behavior and I didn&apos;t change it.

You was mentioning that ProcessLauncher should not set FD_CLOEXEC on the client socket, I was reacting on this. I think this is true because want the child (which we are launching) to inherit the socket. What I was saying is that we can still set the flag after the child has been started (it has finished calling exec).

The situation is different when we are creating the socket at the time when both processes already exist (like at NetworkProcess::createNetworkConnectionToWebProcess). In this case we can set the FD_CLOEXEC flag immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906716</commentid>
    <comment_count>37</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-08 02:53:22 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; You was mentioning that ProcessLauncher should not set FD_CLOEXEC on the client socket, I was reacting on this. I think this is true because want the child (which we are launching) to inherit the socket. What I was saying is that we can still set the flag after the child has been started (it has finished calling exec).

Yeah, you and I speak the same language.
 
&gt; The situation is different when we are creating the socket at the time when both processes already exist (like at NetworkProcess::createNetworkConnectionToWebProcess). In this case we can set the FD_CLOEXEC flag immediately.

Yes, I agree. But the comment in SharedWorkerProcess::createWebProcessConnection is misleading.

// Don&apos;t expose the shared worker process socket to possible future web processes.
while (fcntl(sockets[0], F_SETFD, FD_CLOEXEC) == -1) {
...
}

This code sets the FD_CLOEXEC flag on the client socket immediately to prevent future child processes of SharedWorkerProcess from inheriting the client socket. But the comment says that &quot;Don&apos;t expose the shared worker process socket to possible future web processes&quot;. 

As I mentioned in Comment #34, ConnectionUnix sets the FD_CLOEXEC flag on every file descriptor passed over unix domain sockets. So shared worker process sockets are never exposed to possible future web processes anyway without this code.

So if our intention is actually what the comment says, then I don&apos;t think we need to set the FD_CLOEXEC flag on the client socket here because SharedWorkerProcess never forks off web processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911464</commentid>
    <comment_count>38</comment_count>
      <attachid>207421</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-24 16:59:45 -0700</bug_when>
    <thetext>Created attachment 207421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911468</commentid>
    <comment_count>39</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2013-07-24 17:03:01 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Created an attachment (id=207421) [details]
&gt; Patch

Rebased to the HEAD.

Anders, would you review the patch? This patch has been in dust for a few months hoping for love.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920972</commentid>
    <comment_count>40</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-08-26 05:03:20 -0700</bug_when>
    <thetext>ping for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933490</commentid>
    <comment_count>41</comment_count>
      <attachid>212706</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-26 07:47:19 -0700</bug_when>
    <thetext>Created attachment 212706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933492</commentid>
    <comment_count>42</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-26 07:50:31 -0700</bug_when>
    <thetext>WK2 owners, could you review this patch please? 
( There weren&apos;t any comments, reviews, objections in the last 2 months. :( )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933493</commentid>
    <comment_count>43</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-26 07:51:44 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; Created an attachment (id=212706) [details]
&gt; Patch

I updated the previous patch to ToT:
 - Removed the SharedWorkerProcess change, because it doesn&apos;t exist at all after r156277.
 - Resolved a trivial conflict in ProcessLauncherEfl.cpp after r156063.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933546</commentid>
    <comment_count>44</comment_count>
      <attachid>212706</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-26 09:34:46 -0700</bug_when>
    <thetext>Comment on attachment 212706
Patch

I don’t know when he’ll have time, but I think Anders i the best person to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934546</commentid>
    <comment_count>45</comment_count>
      <attachid>212980</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-30 04:48:41 -0700</bug_when>
    <thetext>Created attachment 212980
Patch

Updated after r156508.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934547</commentid>
    <comment_count>46</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-30 04:51:16 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 212706 [details])
&gt; I don’t know when he’ll have time, but I think Anders i the best person to review this.

(In reply to comment #45)
&gt; Created an attachment (id=212980) [details]
&gt; Patch
&gt; 
&gt; Updated after r156508.

Anders, could you review this patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934921</commentid>
    <comment_count>47</comment_count>
      <attachid>212980</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-10-01 00:28:43 -0700</bug_when>
    <thetext>Comment on attachment 212980
Patch

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

&gt; Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:57
&gt; +    // Make child process inherit parent&apos;s locale.
&gt; +    g_setenv(&quot;LC_ALL&quot;, setlocale(LC_ALL, 0), TRUE);

Why are you bringing this back? this was removed in r145081, see bug #111398.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934946</commentid>
    <comment_count>48</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-01 02:34:36 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (From update of attachment 212980 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212980&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:57
&gt; &gt; +    // Make child process inherit parent&apos;s locale.
&gt; &gt; +    g_setenv(&quot;LC_ALL&quot;, setlocale(LC_ALL, 0), TRUE);
&gt; 
&gt; Why are you bringing this back? this was removed in r145081, see bug #111398.

I think accidentally, because the original patch in 
this bug is older than bug111398. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936184</commentid>
    <comment_count>49</comment_count>
      <attachid>213361</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-04 07:03:28 -0700</bug_when>
    <thetext>Created attachment 213361
Patch

removed localization change, removed Qt related change, resolved trivial conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938312</commentid>
    <comment_count>50</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-10 06:21:26 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; Created an attachment (id=213361) [details]
&gt; Patch
&gt; 
&gt; removed localization change, removed Qt related change, resolved trivial conflicts


Anders, could you review this patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938330</commentid>
    <comment_count>51</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-10 07:27:41 -0700</bug_when>
    <thetext>Add more WK2 owner, maybe somebody have a time to review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938771</commentid>
    <comment_count>52</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-11 04:03:21 -0700</bug_when>
    <thetext>ping for review, please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939912</commentid>
    <comment_count>53</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-15 03:27:21 -0700</bug_when>
    <thetext>WK2 owners, could you review this patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940655</commentid>
    <comment_count>54</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-16 23:17:44 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941176</commentid>
    <comment_count>55</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-18 06:48:40 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941770</commentid>
    <comment_count>56</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-21 02:14:57 -0700</bug_when>
    <thetext>WK2 owners, ping for review please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942161</commentid>
    <comment_count>57</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-21 22:59:22 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942594</commentid>
    <comment_count>58</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-22 23:22:52 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942750</commentid>
    <comment_count>59</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-23 11:09:54 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; ping

Stop!

Please! There are 39 people cced on this bug who will get an e-mail every time. 

I understand that you want this patch to be reviewed, but with every ping you&apos;re pissing more and more people of which will be less and less willing to do the review. This patch is on my review list but I have more important things to attend to right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942823</commentid>
    <comment_count>60</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-23 13:51:29 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (In reply to comment #58)
&gt; &gt; ping
&gt; Stop!

&gt; Please! There are 39 people cced on this bug who will get an e-mail every time. 

If somebody isn&apos;t interested / doesn&apos;t have expertise in this topic, feel
free to remove himself/herself from the cc list. I won&apos;t be angry, I promise
;)

&gt; I understand that you want this patch to be reviewed, but with every ping you&apos;re pissing more and more people of which will be less and less willing to do the review. This patch is on my review list but I have more important things to attend to right now.

Of course, I can understand that you have more important things. But there
are 18 WK2 owner, you aren&apos;t only one. The origial patch was prepared 9
months before, the lateset patch is 19 days old. And we didn&apos;t get _any_
review from _any_ WK2 owner. It is very very disappointing. :(((( 

It would be great if you could give us an ETA for the review time. How much
should we wait, and how many times should we update the patch to ToT again
and again during waiting for review? Is there any chance if you will let other
platforms to enable NetworkProcess building in the near future (in the
following month, year, decade). It is so exhausting to wait, update, wait,
update, wait, update, ask for review again and again. And then getting an r-
because of a minor naming issue and then update and wait again for months ...

It is not about only this bug ... We had to wait months for other bugs too. :(
For example we waited 3 months for https://bugs.webkit.org/show_bug.cgi?id=118520 (which could have been a oneliner, but a WK2 owner
asked this big refactoring ...) and then you rolled it out without any
notification and comment about what was the problem and didn&apos;t give any 
hint how can we fix it.

So is there any chance that WK2 owners will be a little bit 
more responsive in the near future, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942844</commentid>
    <comment_count>61</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-23 14:31:14 -0700</bug_when>
    <thetext>Just to point out what may not be obvious:  While WK2 patches need a WK2 owner to review, that&apos;s not *all* they need.

There&apos;s *way* fewer CoreIPC experts than there are WK2 owners, and this patch needs a close eye from such an expert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942938</commentid>
    <comment_count>62</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2013-10-23 18:10:31 -0700</bug_when>
    <thetext>This patch is a simple refactoring, no deep CoreIPC knowledge needed to understand it and decide whether it makes sense. It does not change any behavior or internal mechanisms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943106</commentid>
    <comment_count>63</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-24 06:40:27 -0700</bug_when>
    <thetext>In my opinion it isn&apos;t correct that you asked this refactoring in
https://bugs.webkit.org/show_bug.cgi?id=110093#c6 and then Balázs
did it in few days, but you hadn&apos;t any time in this ~8 months to
review the patch you asked.

If you don&apos;t have any time for reviewing refactoring you explicitly asked,
please revise your original opinion and let the much more simpler patch to
the trunk - https://bugs.webkit.org/attachment.cgi?id=205781 .

( I reopened https://bugs.webkit.org/show_bug.cgi?id=110093 and asked review again. )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953236</commentid>
    <comment_count>64</comment_count>
      <attachid>217598</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-21 12:34:54 -0800</bug_when>
    <thetext>Created attachment 217598
Patch

updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953246</commentid>
    <comment_count>65</comment_count>
      <attachid>217598</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 12:50:13 -0800</bug_when>
    <thetext>Comment on attachment 217598
Patch

Attachment 217598 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/32608047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953251</commentid>
    <comment_count>66</comment_count>
      <attachid>217598</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 13:04:20 -0800</bug_when>
    <thetext>Comment on attachment 217598
Patch

Attachment 217598 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/32528052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953255</commentid>
    <comment_count>67</comment_count>
      <attachid>217598</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-21 13:06:23 -0800</bug_when>
    <thetext>Comment on attachment 217598
Patch

It seems it needs a fix after https://trac.webkit.org/changeset/158890

I&apos;m going to fix it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953265</commentid>
    <comment_count>68</comment_count>
      <attachid>217605</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-21 13:16:42 -0800</bug_when>
    <thetext>Created attachment 217605
Patch

with speculative Mac buildfix after r158890</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953286</commentid>
    <comment_count>69</comment_count>
      <attachid>217605</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-21 13:56:01 -0800</bug_when>
    <thetext>Comment on attachment 217605
Patch

I think this should go in as smaller patches. There’s no need for it to all be done at once. In particular, it seems that refactoring the Mac to use this new cross-platform API could be done separately from moving over other platforms. Each of those two patches would be considerably easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953290</commentid>
    <comment_count>70</comment_count>
      <attachid>217605</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 14:03:50 -0800</bug_when>
    <thetext>Comment on attachment 217605
Patch

Attachment 217605 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/32948005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953306</commentid>
    <comment_count>71</comment_count>
      <attachid>217605</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-21 14:32:48 -0800</bug_when>
    <thetext>Comment on attachment 217605
Patch

Attachment 217605 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/31988183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004049</commentid>
    <comment_count>72</comment_count>
      <attachid>230165</attachid>
    <who name="Peter Molnar">pmolnar.u-szeged</who>
    <bug_when>2014-04-25 04:29:12 -0700</bug_when>
    <thetext>Created attachment 230165
updated patch

Updated the patch to the current ToT.

I think is makes much more sense to submit this patch as a whole, rather than splitting it into multiple parts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004054</commentid>
    <comment_count>73</comment_count>
      <attachid>230168</attachid>
    <who name="Peter Molnar">pmolnar.u-szeged</who>
    <bug_when>2014-04-25 05:02:12 -0700</bug_when>
    <thetext>Created attachment 230168
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009738</commentid>
    <comment_count>74</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-16 03:28:33 -0700</bug_when>
    <thetext>(In reply to comment #73)
&gt; Created an attachment (id=230168) [details]
&gt; updated patch

Anders, could you possibly review this patch in the near future?
The original patch is more than a year old and was updated to ToT
many many times, because none of the WK2 owner had enough time /
were interested in reviewing it. :-(

I still think that WebKit2 would profit much if we could get rid this
copy/paste ifdef hell once instead of adding more copy/paste code to
DatabaseProcess, &lt;new-fancy-feature&gt;Process again and again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039996</commentid>
    <comment_count>75</comment_count>
      <attachid>239403</attachid>
    <who name="Éva Balázsfalvi">evab.u-szeged</who>
    <bug_when>2014-10-07 03:59:52 -0700</bug_when>
    <thetext>Created attachment 239403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040024</commentid>
    <comment_count>76</comment_count>
      <attachid>239403</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2014-10-07 08:25:46 -0700</bug_when>
    <thetext>Comment on attachment 239403
Patch

I hope there exists a potential reviewer for this. If it doesn&apos;t go this time I don&apos;t think we should continue this story.

Some comments.

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

&gt; Source/WebKit2/Platform/IPC/Connection.h:131
&gt;      struct SocketPair {

Do we still need this struct?

&gt; Source/WebKit2/Platform/IPC/Connection.h:165
&gt; +    static ConnectionDescriptor createPlatformConnection(unsigned options = SetCloexecOnClient | SetCloexecOnServer);

Can we use WebKitish names like SetCloseOnExec? Maybe an enum class would be nice also :)

&gt; Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:-53
&gt; -#define SOCKET_TYPE SOCK_DGRAM

I wonder if it&apos;s actually correct. Maybe QNX wants to use DGRAM? Or maybe we don&apos;t care (in which case you should not introduce the check for OS(QNX))? I think it would be better to leave this alone for now, as this patch supposed to be only a refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046035</commentid>
    <comment_count>77</comment_count>
      <attachid>239403</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-04 02:43:47 -0800</bug_when>
    <thetext>Comment on attachment 239403
Patch

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

&gt;&gt; Source/WebKit2/Platform/IPC/Connection.h:131
&gt;&gt;      struct SocketPair {
&gt; 
&gt; Do we still need this struct?

Good point, it became unused, we can safely remove it.

&gt;&gt; Source/WebKit2/Platform/IPC/Connection.h:165
&gt;&gt; +    static ConnectionDescriptor createPlatformConnection(unsigned options = SetCloexecOnClient | SetCloexecOnServer);
&gt; 
&gt; Can we use WebKitish names like SetCloseOnExec? Maybe an enum class would be nice also :)

It can be reasonable. But I prefer doing it in a separated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046037</commentid>
    <comment_count>78</comment_count>
      <attachid>239403</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-04 03:07:49 -0800</bug_when>
    <thetext>Comment on attachment 239403
Patch

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

&gt;&gt; Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:-53
&gt;&gt; -#define SOCKET_TYPE SOCK_DGRAM
&gt; 
&gt; I wonder if it&apos;s actually correct. Maybe QNX wants to use DGRAM? Or maybe we don&apos;t care (in which case you should not introduce the check for OS(QNX))? I think it would be better to leave this alone for now, as this patch supposed to be only a refactor.

It seems QNX is Qt cruft, we shouldn&apos;t modify this code path at all here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046040</commentid>
    <comment_count>79</comment_count>
      <attachid>240920</attachid>
    <who name="Éva Balázsfalvi">evab.u-szeged</who>
    <bug_when>2014-11-04 04:17:06 -0800</bug_when>
    <thetext>Created attachment 240920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046048</commentid>
    <comment_count>80</comment_count>
    <who name="Éva Balázsfalvi">evab.u-szeged</who>
    <bug_when>2014-11-04 05:35:47 -0800</bug_when>
    <thetext>(In reply to comment #79)
&gt; Created attachment 240920 [details]
&gt; Patch

Updated, based on comment #77 and comment #78.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046049</commentid>
    <comment_count>81</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-11-04 05:47:37 -0800</bug_when>
    <thetext>(In reply to comment #80)
&gt; (In reply to comment #79)
&gt; &gt; Created attachment 240920 [details]
&gt; &gt; Patch
&gt; 
&gt; Updated, based on comment #77 and comment #78.

Dear WebKit2 owners, 

is there any chance to get review for this patch?

You explicitly asked this before letting Linux ports use NetworkProcess - 
https://bugs.webkit.org/show_bug.cgi?id=110093#c6 . But Linux ports can&apos;t
wait _20 months_ for review and added more ifdefs a year before:
http://trac.webkit.org/changeset/160308

I still think we should remove these ifdef hell, but it is impossible
if WK2 owners don&apos;t want to review. (nor negative / nor positive review)

Please review it in the near future. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046171</commentid>
    <comment_count>82</comment_count>
      <attachid>240920</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-04 14:10:52 -0800</bug_when>
    <thetext>Comment on attachment 240920
Patch

I can’t answer for the other WebKit2 owners, but for myself the problem is that this patch is just a little to big and broad for me to review. Is there some intermediate step we could take that would be a smaller patch, or is this the smallest first step?

For example, if I was doing this I might do it one platform at a time and then remove the #if as the platforms become identical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172720</commentid>
    <comment_count>83</comment_count>
      <attachid>240920</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-03-09 13:25:39 -0800</bug_when>
    <thetext>Comment on attachment 240920
Patch

We have a different, more ambitious refactoring of the IPC layer planned. I&apos;ll make sure to send an e-mail to webkit-dev once this is closer to a reality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172736</commentid>
    <comment_count>84</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-03-09 13:45:26 -0800</bug_when>
    <thetext>(In reply to comment #83)
&gt; Comment on attachment 240920 [details]
&gt; Patch
&gt; 
&gt; We have a different, more ambitious refactoring of the IPC layer planned.
&gt; I&apos;ll make sure to send an e-mail to webkit-dev once this is closer to a
&gt; reality.

Wow, a real review after 3 years waiting. :)

In this case let&apos;s close it as wontfix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190537</attachid>
            <date>2013-02-27 08:57:32 -0800</date>
            <delta_ts>2013-02-28 09:02:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130227175329.patch</filename>
            <type>text/plain</type>
            <size>42688</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE2MzYyYWJlNGQxMDJi
YTBlMmEyNTRiNzZhZWJmYmEyZDY3Y2E4Zi4uNzI0MWRiMTQxNmYyZDI1YThkYTQ0MmM5NTU3MTAz
ZThmMTg0NzhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMy0wMi0yNyAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIENoYW5nZSBwbGF0Zm9ybSBzcGVjaWZpYyBs
b2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmg6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgSW5jbHVk
aW5nIEF0dGFjaG1lbnQuaCBpbiBBcmd1bWVudFtFbmNvZGVyL0RlY29kZXJdLmggd291bGQgY2F1
c2UKKyAgICAgICAgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG5vdywgc28gSSBjaGFuZ2VkIGl0IHRv
IGZvcndhcmQgZGVjbGFyYXRpb24KKyAgICAgICAgYW5kIGFkZCBpbmNsdWRlcyB3aGVyZSBpdCBp
cyB1c2VkLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6bWVzc2FnZVR5cGUpOgorICAgICAg
ICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChDb3JlSVBDOjpB
dHRhY2htZW50OjpudWxsUG9ydCk6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50Ojpwb3J0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb25uZWN0aW9u
KToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBJdCB3
YXMgc2ltcGx5IHdyb25nLgorICAgICAgICBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMg
LTEgYW5kIG5vdCAwLgorICAgICAgICAoQ29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBW
ZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3RyYWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAg
ICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rpb25E
ZXNjcmlwdG9yKToKKyAgICAgICAgQ3JlYXRlcyB0aGUgT1Mgc3BlY2lmaWMgSVBDIGNoYW5uZWwu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KToKKyAgICAgICAgKENv
cmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3I6OmNsaWVudFBvcnQpOgorICAgICAgICBUaGVzZSBhcmUgdGhlIHNhbWUgb24gTWFjLgorCisg
ICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgor
ICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAg
ICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKENvcmVJUEMp
OgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbFBvcnQpOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6cG9ydCk6CisgICAgICAgIFBvcnRSaWdodEZsYWdzIGlzIG5vdCBy
ZXNwZWN0ZWQgaGVyZSBzaW5jZSB0aGUgY29uY2VwdCBvZiBtb3Zpbmcgc29ja2V0cyB3aXRoIHRo
ZWlyCisgICAgICAgIHJpZ2h0cyBhY3Jvc3MgcHJvZXNzZXMgaXMgaGFuZGxlZCB2aWEgY29udHJv
bCBtZXNzYWdlcyBpbiBDb25uZWN0aW9uVW5peC5jcHAuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVj
dGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQ
Qyk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6
Y2xpZW50UG9ydCk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBj
cmVhdGlvbi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAg
ICAgICBzaW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBu
byBnb29kIHdheSB0byBkby4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6
CisgICAgICAgIE5ldyB2ZXJzaW9uIG9mIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJz
LiBJIHJlbW92ZWQgdGhlIGJvb2wgcmV0dXJuIHZhbHVlIGFuZAorICAgICAgICB1c2VkIFJFTEVB
U0VfQVNTRVJUIGZvciBlcnJvciBoYW5kbGluZy4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNpZmlj
IGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFNoYXJlZFdv
cmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
VXNlIHRoZSBuZXcgY29tbW9uIGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGNvbW1vbiBpbnRl
cmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGlsZFNldHVwRnVuY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhl
IG5ldyBjb21tb24gaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Q
cm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6
bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGNvbW1vbiBpbnRlcmZhY2UuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9y
RmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIFVzZSB0
aGUgbmV3IGNvbW1vbiBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgY29tbW9uIGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGNvbW1vbiBpbnRlcmZhY2UuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
Y29tbW9uIGludGVyZmFjZS4KKwogMjAxMy0wMi0yNiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NNYWtlXSBVbmRlZmluZWQgcmVmZXJlbmNlcyBzaG91
bGQgYmUgZGV0ZWN0ZWQgYXQgYnVpbGQgdGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFjZWZjYTY4MDA0ZjBjNWE3ZmVmYmQx
MWU4NmU1Y2U1NTA3MmM1MDguLmVjOTBjY2YxMzMxM2E1YTQwM2EzNmM4N2Q4YmYxZTAxYjQ5NThh
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTE3MSwyMCArMTcxLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBt
YWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rh
c2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAg
IHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNv
bm5lY3Rpb24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25u
ZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpD
b25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
PiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShkZXNj
cmlwdG9yLnNlcnZlclBvcnQoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5k
KGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50
UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNo
bWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpLCBBdHRhY2htZW50OjpBcXVp
cmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGNsaWVudFBvcnQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNl
bmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRE
ZWNvZGVyLmNwcAppbmRleCAyMGJiZTc4NjI2M2M2NWQ2MWVmNTg0ZmUzZDljNTViNDJiZDcyNmUw
Li45ODY1ZGUzNzk4NzcwODhjNmQ3YmI1YmEzMjYyZGFlZTQyYzRiNDVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnREZWNv
ZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCmluZGV4IDIxZTgzNThkZWQ1MDcxZTlhNDhkZWUx
YTYyNjE1OTFmMTEwOWI3NWMuLmJmZTRiOTlhMWU3NTdiNTkxNjM0NmNhNDBhMWM4Nzc0NzUyYWMy
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERl
Y29kZXIuaApAQCAtMjcsMTMgKzI3LDEzIEBACiAjZGVmaW5lIEFyZ3VtZW50RGVjb2Rlcl9oCiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0
YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29k
ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuY3BwCmluZGV4IGFlMmIxZmI4MjJhYzJmYjZmNGU1N2YyOWE4NGFjMjcxYjkzMTljMTUu
LmUyYTdmZmQ3ZDhlNGMzNDU0ZTFhYzJlMjg4YTY4YTAzZWYwMmQwZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29k
ZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAppbmRleCBhZTVk
NzRhN2YzY2JkZWU4ZWYzYzA3NjkzZDE4NmE3OGZhNzIxZWYxLi5lNWYxMWMwN2YyYzk5MzMzMDk5
YTYzNjcwOWQ1ZjcyMzkzOWQzODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgQXJn
dW1lbnRFbmNvZGVyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJB
dHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VHlwZVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM1LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyOworY2xhc3MgQXR0
YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcAppbmRl
eCA1ZDE5YmFkMTdmMTZiMGFjODFiMGZmODNhYTQ2ODBmODZmYmE5N2U2Li5hZjE2ZjdlOTU1MGJj
OTQxZTUyZDA5ZjgwYmY3MTA5YjJhZTdkM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKQEAgLTMxLDEyICszMSwyNSBAQAogCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAKLUF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoKQotICAgIDogbV90eXBlKFVu
aW5pdGlhbGl6ZWQpCisjaWYgT1MoREFSV0lOKQorc3RhdGljIGlubGluZSBtYWNoX21zZ190eXBl
X25hbWVfdCBtZXNzYWdlVHlwZShQb3J0UmlnaHRSZXF1aXJlbWVudCByZXF1aXJlbWVudCkKK3sK
KyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXF1aXJlU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4g
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7CisgICAgaWYgKHJlcXVpcmVtZW50ID09IEZvcndhcmRT
ZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBFX01PVkVfU0VORDsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBNQUNIX01TR19UWVBFX01BS0VfU0VO
RDsKK30KKworQXR0YWNobWVudDo6QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFBvcnRSaWdodFJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQorICAgIDogbV90eXBl
KE1hY2hQb3J0VHlwZSkKKyAgICAsIG1fcG9ydC5wb3J0KGlkZW50aWZpZXIucG9ydCkKKyAgICAs
IG1fcG9ydC5kaXNwb3NpdGlvbihtZXNzYWdlVHlwZShyZXF1aXJlbWVudCkpCiB7CiB9CiAKLSNp
ZiBPUyhEQVJXSU4pCiBBdHRhY2htZW50OjpBdHRhY2htZW50KG1hY2hfcG9ydF9uYW1lX3QgcG9y
dCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pCiAgICAgOiBtX3R5cGUoTWFjaFBv
cnRUeXBlKQogewpAQCAtNTcsNiArNzAsMTYgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkK
IHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitjb25zdCBBdHRhY2htZW50JiBB
dHRhY2htZW50OjpudWxsUG9ydChQb3J0UmlnaHRSZXF1aXJlbWVudCByZXF1aXJlbWVudCkKK3sK
KyAgICByZXR1cm4gQXR0YWNobWVudChNQUNIX1BPUlRfTlVMTCwgbWVzc2FnZVR5cGUocmVxdWly
ZW1lbnQpKTsKK30KKworQ29ubmVjdGlvbjo6SWRlbnRpZmllciBBdHRhY2htZW50Ojpwb3J0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRlbnRpZmllcihwb3J0KCkpOworfQog
I2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgK
aW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5ZDVkMjBhNGY0MWFjMGU5Zi4uNzAzOTZmYTI0
ZTYwMDRkZmRmYzQ4NmZkZGMwNDU4OTY0NGYwYzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgQXR0
YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRfaAogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVk
ZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3ICs0MCw5IEBAIGNsYXNzIEFyZ3VtZW50RW5j
b2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBwdWJsaWM6Ci0gICAgQXR0YWNobWVudCgpOwor
ICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQorICAgIHsg
fQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKQEAgLTUxLDYgKzU1
LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKKyAgICBlbnVtIFBvcnRSaWdodFJlcXVp
cmVtZW50IHsKKyAgICAgICAgQXF1aXJlU2VuZFJpZ2h0LAorICAgICAgICBGb3J3YXJkU2VuZFJp
Z2h0CisgICAgfTsKKworICAgIEF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciwgUG9y
dFJpZ2h0UmVxdWlyZW1lbnQpOworCiAjaWYgT1MoREFSV0lOKQogICAgIEF0dGFjaG1lbnQobWFj
aF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190eXBlX25hbWVfdCBkaXNwb3NpdGlvbik7CiAg
ICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNzLCBtYWNoX21zZ19zaXplX3Qgc2l6ZSwgbWFjaF9t
c2dfY29weV9vcHRpb25zX3QgY29weU9wdGlvbnMsIGJvb2wgZGVhbGxvY2F0ZSk7CkBAIC01OSw2
ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwog
I2VuZGlmCiAKKyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsUG9ydChQb3J0UmlnaHRSZXF1aXJl
bWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIHBvcnQoKSBjb25zdDsKKwogICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAjaWYgT1MoREFSV0lOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBkMThl
NjYyMWFhNDk2ODQ3YTI5OTg0ZWFmY2NjZGNiNmQ1MTI2OGRlLi44NjI4MDIxNzA4ZTNiY2M1MTFh
YTAxZGY1NDhhZWE1MmU5Y2ZkYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBSdW5Mb29wOwogCiBuYW1l
c3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBCaW5hcnlTZW1hcGhv
cmU7CiAgICAgCiBlbnVtIE1lc3NhZ2VTZW5kRmxhZ3MgewpAQCAtMTI5LDEzICsxMzAsMzYgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVu
dGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7IH0KICNl
bGlmIE9TKFdJTkRPV1MpCiAgICAgdHlwZWRlZiBIQU5ETEUgSWRlbnRpZmllcjsKLSAgICBzdGF0
aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVyJiBzZXJ2
ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKICAgICBzdGF0aWMg
Ym9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gIWlk
ZW50aWZpZXI7IH0KICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5cGVkZWYg
aW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlm
aWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CisgICAgc3RhdGljIGJvb2wg
aWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZp
ZXIgPT0gLTE7IH0KKwogI2VuZGlmCiAKKyAgICBjbGFzcyBDb25uZWN0aW9uRGVzY3JpcHRvciB7
CisgICAgcHVibGljOgorICAgICAgICBJZGVudGlmaWVyIHNlcnZlclBvcnQoKSBjb25zdDsKKyAg
ICAgICAgSWRlbnRpZmllciBjbGllbnRQb3J0KCkgY29uc3Q7CisgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rpb247CisjaWYgT1MoREFSV0lOKQorICAgICAgICBDb25u
ZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAgICAgQ29u
bmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1fc2VydmVySWRlbnRpZmllcihzZXJ2
ZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRl
bnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9zZXJ2ZXJJZGVudGlm
aWVyOworICAgICAgICBJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKKyNlbmRpZgorICAg
IH07CisKKyAgICBzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZvcm1Db25u
ZWN0aW9uKCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2
ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVu
dFJ1bkxvb3ApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0ZUNsaWVu
dENvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV2ViQ29yZTo6UnVuTG9vcCogY2xpZW50
UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggNjgzYjM0ZDQ4OTI5MDYwZTRi
MDRlZmEyNDM0MzIyZTE3ZDZiNjE5NS4uZjU5OWVkYTcyMjA2OTMwODI2MWQzZTliNWE0NTRmNzdj
ZDVhYzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRGVjb2Rl
ci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5o
IgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcAppbmRleCBlYjA0ZDU0ZjRmZmY3ZTQ0
MTdhOGU1YTUwMDg4NDA0OTUwZjNkNGE4Li5lZWM3M2Q2ZDcyOTBmOGY2NjM3ODgwNzg0ZDVkMTk5
NWM0ODFiYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNv
ZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0dGFjaG1l
bnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVu
Y2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMv
Q29ubmVjdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9D
b25uZWN0aW9uTWFjLmNwcAppbmRleCA2NzgwODlhN2U2ZDJkY2U1YjdhZmVlNWUwMjE4MWY4MDA3
ZjJkZjg2Li5hMWQ2NTUxNTIwMmVmZjA0ZWNkNTE4MWIwZDQxYmJmMzE4OGI3MGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFj
LmNwcApAQCAtNDcsNyArNDcsMjQgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBpbmxpbmVNZXNzYWdl
TWF4U2l6ZSA9IDQwOTY7CiBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMSA8
PCAwCiB9OwotICAgIAorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVu
dGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlm
aWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpj
cmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIG1hY2hfcG9ydF90IHBvcnQ7CisgICAg
bWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNF
SVZFLCAmcG9ydCk7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHBvcnQpOworfQor
CiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgaWYgKCFtX2lz
Q29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0F0dGFjaG1lbnRVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggYThjMDI2OTRmMzAwOWZjZDllMWZhZTE3YmU2
MWI1NzNhYWZmZjNhMC4uMzBiNjgyNTQ0MThlMGFjYzFiZWU4OTYzNzk4ZTg1MjY2MWY0MTllMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1l
bnRVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0
YWNobWVudFVuaXguY3BwCkBAIC0zMiw2ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7
CiAKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlm
aWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAg
ICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50OjpBdHRh
Y2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFw
cGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBA
IC01Miw0ICs1OCwxNSBAQCB2b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAgICB3aGls
ZSAoY2xvc2UobV9maWxlRGVzY3JpcHRvcikgPT0gLTEgJiYgKGVycm5vID09IEVJTlRSKSkgeyB9
CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6bnVsbFBvcnQoUG9ydFJpZ2h0UmVxdWlyZW1l
bnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIEF0dGFjaG1lbnQ6OnBvcnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0g
U29ja2V0VHlwZSk7CisgICAgcmV0dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IGM2YTE4NmVlMTllMTdhNTFiYjI5ZjAy
MTQ4MDFiYzM3YmIwODIzNTguLjgwNWRlM2M0YmUzMzk5MTI5MTZjM2I5ZmU5NjMzMTVlOWNlYTgz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDUsNiArNDUsMTMgQEAKICNpbmNsdWRlIDxnbGliLmg+
CiAjZW5kaWYKIAorLy8gT24gUU5YIFNPQ0tfU0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhv
dWdoIGl0IGlzIGRlZmluZWQpLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1NTUzLgorI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCisj
ZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCisjZWxzZQorI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NUUkVBTQorI2VuZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogc3RhdGlj
IGNvbnN0IHNpemVfdCBtZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CkBAIC01NCw2ICs2MSwzMCBAQCBl
bnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07CiAKK0Nvbm5l
Y3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZl
clBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcklkZW50aWZpZXI7Cit9CisKK0Nv
bm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNs
aWVudFBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7Cit9CisK
K0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRm
b3JtQ29ubmVjdGlvbigpCit7CisgICAgaW50IHNvY2tldHNbMl07CisgICAgUkVMRUFTRV9BU1NF
UlQoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgIT0gLTEpOwor
CisgICAgLy8gQXZvaWQgZXhwb3NpbmcgdGhlIHNlcnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHBy
b2Nlc3Mgb3IgdGhlIGNsaWVudCBzb2NrZXQgdG8gYW55IGZ1dHVyZSBjaGlsZC4KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzW2ldLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVycm5vID09IEVJTlRSKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRl
c2NyaXB0b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZv
IHsKIHB1YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCAxNDg3YjZj
NzYyNzljMjRjMmRkOTgzOTJhMTVmYmE0ZGI3YTI1M2U1Li44MTE1NzMwZDIxNTE5ZDU1NjZhNTQ3
N2RmMmMwYTVkM2U1NzE4OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBAQCBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlmZmVyZW50IGNv
bnN0YW50IG9uIHdpbmRvd3MuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhT
aXplID0gNDA5NjsKIAotYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVu
dGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50SWRlbnRpZmll
cikKK3N0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24o
KQogeworICAgIEhBTkRMRSBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOwogICAg
IFN0cmluZyBwaXBlTmFtZTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwyMyArNjAsMTUg
QEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5E
TEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
aWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUkVMRUFT
RV9BU1NFUlQoc2VydmVySWRlbnRpZmllcik7CiAKICAgICBjbGllbnRJZGVudGlmaWVyID0gOjpD
cmVhdGVGaWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBHRU5F
UklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdf
T1ZFUkxBUFBFRCwgMCk7Ci0gICAgaWYgKCFjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIDo6
Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlQoY2xpZW50SWRlbnRpZmllcik7CiAKICAgICBEV09SRCBt
b2RlID0gUElQRV9SRUFETU9ERV9NRVNTQUdFOwotICAgIGlmICghOjpTZXROYW1lZFBpcGVIYW5k
bGVTdGF0ZShjbGllbnRJZGVudGlmaWVyLCAmbW9kZSwgMCwgMCkpIHsKLSAgICAgICAgOjpDbG9z
ZUhhbmRsZShzZXJ2ZXJJZGVudGlmaWVyKTsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShjbGllbnRJ
ZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBSRUxFQVNFX0FT
U0VSVCg6OlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKGNsaWVudElkZW50aWZpZXIsICZtb2RlLCAw
LCAwKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0
b3Ioc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ29ubmVj
dGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDFhMWFlZDZl
Y2M0MDZhODdmYWYxMzgzM2U3YTFmZGNmMWQxODkwYTQuLjI3YTZmMTZjMTYzOGU1YmYzNDIyYjUz
N2I5OTcxNWI3YWY3ZmFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcApAQCAtNDQsMjQgKzQ0LDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJu
cy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxl
cnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0j
aW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWZkZWYgU09D
S19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0j
aWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UK
LSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0jZW5kaWYgLy8gU09DS19T
RVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY4LDU0ICsxNTAsMTYg
QEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUg
dGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAg
bWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNF
SVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENy
ZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6
Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRm
b3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVj
dGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0
KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVh
c2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChk
ZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNz
UHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIo
QUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3Qg
ZXhwb3NlIHRoZSBwbHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAg
IHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsK
LSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBl
cnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkg
PT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQg
dG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tl
dHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAh
PSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQot
ICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJ
TlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJl
ZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0
aW9uOjpjcmVhdGUoc29ja2V0c1sxXSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBw
ZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKLQotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xp
ZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oY2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAg
aWYgKE5ldHNjYXBlUGx1Z2luTW9kdWxlKiBtb2R1bGUgPSBuZXRzY2FwZVBsdWdpbk1vZHVsZSgp
KSB7CiAgICAgICAgIGlmICghZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29y
a2VyUHJvY2Vzcy5jcHAKaW5kZXggZTU2YzE1ZTkzMjVlZWM0MjU5OTZiZDcyYzA4NjMzYTlhNjc3
ZGE1OS4uMzVkMjcxOTFjZjY2MWViMzhkYzJjZTkzNTI0MzU2ZDJkMTEzNTc3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtl
clByb2Nlc3MuY3BwCkBAIC00MCwyNCArNDAsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+
CiAjZW5kaWYKIAotI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVycm5v
Lmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNs
dWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpZmRlZiBTT0NLX1NF
UVBBQ0tFVAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQ
TEFURk9STShHVEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBB
Q0tFVAotI2VuZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTksNTIgKzEwMSwxNCBAQCB2
b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNv
bnN0IFNoYXJlZFdvcmtlclByb2NlcwogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3Jl
YXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0Owot
ICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRf
UkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwog
Ci0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlBy
b2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBD
b25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6
Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9y
LnNlcnZlclBvcnQoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5l
Y3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChs
aXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBj
bGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpLCBBdHRhY2htZW50OjpBcXVpcmVTZW5k
UmlnaHQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xp
ZW50UG9ydCksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNv
Y2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNv
Y2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHBy
b2Nlc3Mgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0
c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAh
PSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQot
ICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJ
TlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IERvbid0IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJs
ZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9T
RVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChj
bG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAg
ICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlBy
b2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShzb2NrZXRzWzFdKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVj
dGlvbi5yZWxlYXNlKCkpOwotCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQo
c29ja2V0c1swXSk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bihjbGllbnRTb2NrZXQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRp
ZgogCiAgICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAK
aW5kZXggM2EzNjMzNDdmOGVjYWJjMzUyNzVmZWMwYjY1MTNiMGEzNGMyMjg4MS4uMDIwZDAzOTI4
MGM2MTdmNDgyNzdlOGU3ZTZlYTQ5MDRhMjBjZGRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNw
cApAQCAtMzYsMTEgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAo
c29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENv
cmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIENTdHJpbmcgZXhlY3V0
YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vz
c1R5cGUpIHsKQEAgLTU4LDE0ICs1NCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjaGFyIHNvY2tldFs1XTsK
LSAgICBzbnByaW50Zihzb2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsK
KyAgICBjaGFyIHBvcnRBcmd1bWVudFs1XTsKKyAgICBzbnByaW50Zihwb3J0QXJndW1lbnQsIHNp
emVvZihwb3J0QXJndW1lbnQpLCAiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgQ1N0cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoOwogICAgIGlm
ICghbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKSB7CiAgICAgICAg
IFN0cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoU3RyID0gbV9sYXVuY2hPcHRpb25zLnByb2Nl
c3NDbWRQcmVmaXggKyAnICcgKwotICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRh
YmxlUGF0aC5kYXRhKCkpICsgJyAnICsgc29ja2V0ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChw
bHVnaW5QYXRoLmRhdGEoKSk7CisgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV4ZWN1dGFi
bGVQYXRoLmRhdGEoKSkgKyAnICcgKyBwb3J0QXJndW1lbnQgKyAnICcgKyBTdHJpbmc6OmZyb21V
VEY4KHBsdWdpblBhdGguZGF0YSgpKTsKICAgICAgICAgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aCA9
IHByZWZpeGVkRXhlY3V0YWJsZVBhdGhTdHIudXRmOCgpOwogICAgIH0KICNlbmRpZgpAQCAtNzUs
NyArNzEsNiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgLy8g
dGhlIGZvcmsoKSBkb2Vzbid0IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRf
dCBwaWQgPSBmb3JrKCk7CiAgICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAg
ICAgY2xvc2Uoc29ja2V0c1sxXSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBpZiAoIXByZWZp
eGVkRXhlY3V0YWJsZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaW52b2tlcyB0aGUgc2hlbGwKQEAgLTg4LDEyICs4
MywxMiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAg
ICAgICAgZXhpdChFWElUX1NVQ0NFU1MpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZXhl
Y2woZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBleGVjdXRhYmxlUGF0aC5kYXRhKCksIHNvY2tldCwg
cGx1Z2luUGF0aC5kYXRhKCksIHN0YXRpY19jYXN0PGNoYXIqPigwKSk7CisgICAgICAgIGV4ZWNs
KGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBwb3J0QXJndW1l
bnQsIHBsdWdpblBhdGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFyKj4oMCkpOwogICAgIH0gZWxz
ZSBpZiAocGlkID4gMCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0
c1swXSk7CisgICAgICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICAgICAg
bV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1
bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpk
aWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDdjN2YwM2FhZGVlYjQwZDcyNGU2
ODBiZjc2OTQxNjgxZTNhZjllODIuLmM4NGZmOWRkZGRkOTMxYzBiNDcyMGZlNDkzNWUwMmNlNTlk
MTIwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsv
UHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ1LDIxICs0NSwxMiBAQAogI2lu
Y2x1ZGUgPHN5cy9wcmN0bC5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZ
UEUgU09DS19TVFJFQU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRl
ciB1c2VyRGF0YSkKIHsKLSAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRh
KTsKLSAgICBjbG9zZShzb2NrZXQpOwotCiAgICAgLy8gTWFrZSBjaGlsZCBwcm9jZXNzIGluaGVy
aXQgcGFyZW50J3MgbG9jYWxlLgogICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENf
QUxMLCAwKSwgVFJVRSk7CiB9CkBAIC03NCwxNCArNjUsNyBAQCBzdGF0aWMgdm9pZCBjaGlsZEZp
bmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogCiB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgR1BpZCBwaWQgPSAw
OwotCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09D
S0VUX1RZUEUsIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBnX3ByaW50ZXJyKCJDcmVhdGlv
biBvZiBzb2NrZXQgZmFpbGVkOiAlcy5cbiIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rp
b246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3RyaW5nIGV4ZWN1dGFibGVQ
YXRoLCBwbHVnaW5QYXRoOwogICAgIENTdHJpbmcgcmVhbEV4ZWN1dGFibGVQYXRoLCByZWFsUGx1
Z2luUGF0aDsKQEAgLTk0LDEzICs3OCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQo
Z19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAgICBHT3duUHRyPGdjaGFyPiBz
b2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKSk7CiAg
ICAgY2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbEV4
ZWN1dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsxXSA9IHNvY2tldC5nZXQoKTsKICAgICBh
cmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBsdWdpblBhdGguZGF0YSgpKTsKICAgICBh
cmd2WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4g
fCBHX1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBh
cmd2LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4oc3Bhd25GbGFncyksIGNoaWxkU2V0dXBG
dW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRy
KCkpKSB7CkBAIC0xMDgsNyArOTMsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2VzcygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGNsb3Nl
KHNvY2tldHNbMF0pOworICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICBt
X3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gTW9uaXRvciB0aGUgY2hpbGQgcHJv
Y2VzcywgaXQgY2FsbHMgd2FpdHBpZCB0byBwcmV2ZW50IHRoZSBjaGlsZCBwcm9jZXNzIGZyb20g
YmVjb21taW5nIGEgem9tYmllLApAQCAtMTE2LDcgKzEwMSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBnX2NoaWxkX3dhdGNoX2FkZChtX3Byb2Nlc3NJZGVu
dGlmaWVyLCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFd
KSk7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3Nh
Z2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3Bh
dGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhp
cywgbV9wcm9jZXNzSWRlbnRpZmllciwgc29ja2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKSkp
OwogfQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVy
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVu
Y2hlclF0LmNwcAppbmRleCAzNmIzY2RiYWU3ZGFhOTFmNGEwMzNlN2Y3OGE1MjRjZTIxODAzOTNj
Li5hMGQ4ZDU3NDkyZmJhOTkxNjQ1MGYxMWFlMzUxMzFkOTAxODAyNjMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNo
ZXJRdC5jcHAKQEAgLTQyLDE5ICs0MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIGRlZmluZWQoUV9PU19VTklY
KQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8
c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0
ZC5oPgotI2VuZGlmCi0KICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3By
Y3RsLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5j
bHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03Miwx
MyArNjMsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIo
bWFjaF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0v
LyBmb3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFk
ZWZpbmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19T
RVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgot
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDEs
MzYgKzEyNSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAg
QVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5l
ID0gY29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxz
ZQogICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJ
ZGVudGlmaWVyOwotICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5k
Q2xpZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAg
ICAvLyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24oKTsKKyAgICBjb25uZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKTsKKyAg
ICBjbGllbnRJZGVudGlmaWVyID0gZGVzY3JpcHRvci5jbGllbnRQb3J0KCk7CiAgICAgY29tbWFu
ZExpbmUgPSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisK
KyNpZiBPUyhXSU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGlu
aGVyaXRzIHRoZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9u
KGNsaWVudElkZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVS
SVQpOwotI2Vsc2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9V
TklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkg
PDwgIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIERvbid0IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdo
aWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJu
byA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0g
LTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgY29tbWFuZExp
bmUgPSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKKyNlbmRpZiAvLyBPUyhE
QVJXSU4pCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgaWYgKG1fbGF1bmNoT3B0
aW9ucy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzKQpAQCAtMTkzLDE4ICsxNTksNiBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjZWxzZQogICAgIHdlYlByb2Nl
c3NPclNVSURIZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsKICNlbmRpZgotCi0jaWYgT1MoVU5J
WCkgJiYgIU9TKERBUldJTikKLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBzb2NrZXQgdG8g
cG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sw
XSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJ
TlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGRl
bGV0ZSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAoIXdlYlByb2Nlc3NPclNVSURIZWxwZXItPndh
aXRGb3JTdGFydGVkKCkpIHsKICAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIg
PDwgY29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBmMTViZGI0NDJmMGQwODUwNTM4MTU0NjI4MzIxZTdkYjRiNzU1MzU2Li45ZjBm
MDI4MjQ1MTkzNTA2NmU4OWUwYWFmNTJhOTZkMjY2ZmQ5MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTA4LDEyICsxMDksNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVu
Y2goKQogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhp
dGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdo
aWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJl
ZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtl
Rmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQ
Qzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBD
OjpBdHRhY2htZW50OjpudWxsUG9ydChBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiAg
ICAgfQogCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0
IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBi
ZSBkZWxldGVkLgpAQCAtMTU5LDExICsxNTUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6Ogog
ICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0
YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgQ29y
ZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDZiOTc5NzI5ZjM4NTVhNmMwZWVkMzMyYTQ3N2U3ZTNjYTY2MDQ0YjQuLmE3NWZmOWYx
YzJhNDQ2MThjY2Y5OThmZTE4ZTA4YzNkNjcxZDQyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCisjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCkBAIC0xMzMsMTQgKzEzNCw3IEBAIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2go
KQogICAgIC8vIFRoZSBwbHVnLWluIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVk
LCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxl
ICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJz
dCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpB
dHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwotI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFj
aG1lbnQoKSwgZmFsc2UpOwotI2Vsc2UKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRp
ZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50OjpudWxsUG9ydChDb3Jl
SVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwgZmFsc2UpOwogICAgIH0KIAogICAg
IHdoaWxlICghbV9wZW5kaW5nR2V0U2l0ZXNSZXBsaWVzLmlzRW1wdHkoKSkKQEAgLTIzNSwxNCAr
MjI5LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0
IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVu
dGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQotICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSNlbmRpZgorICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklk
ZW50aWZpZXIucG9ydCgpLCBDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiB9CiAKIHZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHAKaW5kZXggMGU5YTZhNDQzYzRiM2VkY2NmYTJmOWRiNTMzOWI5NDVkYWM4Nzhj
MS4uNWMxMWViOTAxM2I4MGExNTg1OWFlNWIwMTJiMDNjZGY3MTRiMjI2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDE1ICs3NSw5IEBAIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdp
blByb2Nlc3NDb25uZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQ
TEFURk9STShNQUMpCiAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKICAgICBp
ZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRp
ZmllcikpCiAgICAgICAgIHJldHVybiAwOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5maWxlRGVzY3JpcHRvcigpOwotICAgIGlm
IChjb25uZWN0aW9uSWRlbnRpZmllciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYK
IAogICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgs
IHByb2Nlc3NUeXBlLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJ
bml0aWFsaXphdGlvbik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGNiMDQzNjcwMTU1NWYxMTIwZDg1M2M0NGVlMjIyYTBiZTIxN2FkZGUuLmEw
MmVkMTljOWMwYzg1N2I5OGNmODA1ZTQ2ZjQ4Y2RlMjhhMGYxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzQ3LDEzICszNDcsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBD
b3JlSVBDOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLnBvcnQoKTsKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRp
ZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSNlbHNl
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190734</attachid>
            <date>2013-02-28 09:02:33 -0800</date>
            <delta_ts>2013-02-28 09:13:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130228175828.patch</filename>
            <type>text/plain</type>
            <size>43644</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE2MzYyYWJlNGQxMDJi
YTBlMmEyNTRiNzZhZWJmYmEyZDY3Y2E4Zi4uYzUwY2FjZDRlNGNmZDZkOTNkNjEwMmRjYTZkZGRj
YzA1NDZlZDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VUeXBlKToKKyAg
ICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNo
bWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6
CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbCk6IEl0IHdhcyBzaW1wbHkgd3JvbmcuCisgICAgICAgIFRoZSBp
bnZhbGlkIGZpbGUgZGVzY3JpcHRvciBpcyAtMSBhbmQgbm90IDAuCisgICAgICAgIChDb25uZWN0
aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJhY3Rpb24g
b2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uRGVzY3JpcHRvcjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBDcmVhdGVzIHRo
ZSBPUyBzcGVjaWZpYyBJUEMgY2hhbm5lbC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZURlY29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
Y3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6
OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAgIFRoZXNl
IGFyZSB0aGUgc2FtZSBvbiBNYWMuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50Ojpjb25uZWN0
aW9uSWRlbnRpZmllcik6CisgICAgICAgIFBvcnRSaWdodEZsYWdzIGlzIG5vdCByZXNwZWN0ZWQg
aGVyZSBzaW5jZSB0aGUgY29uY2VwdCBvZiBtb3Zpbmcgc29ja2V0IHJpZ2h0cworICAgICAgICBh
Y3Jvc3MgcHJvZXNzZXMgaXMgaGFuZGxlZCB2aWEgY29udHJvbCBtZXNzYWdlcyBpbiBDb25uZWN0
aW9uVW5peC5jcHAuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAg
ICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlvbi4gSSB0dXJuZWQgZXJy
b3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBzaW5jZSBlcnJvcnMgd2Fz
IG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkby4KKyAg
ICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIEltcGxlbWVudGVk
IHRoZSBuZXcgaW50ZXJmYWNlIGJhc2VkIG9uIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZp
ZXJzLiBJIHJlbW92ZWQgdGhlIGJvb2wKKyAgICAgICAgcmV0dXJuIHZhbHVlIGFuZCB1c2VkIFJF
TEVBU0VfQVNTRVJUIGZvciBlcnJvciBoYW5kbGluZy4KKworICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNp
ZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFNoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1v
dmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhlIGNoaWxkIHNpZGUKKyAgICAgICAgb2YgdGhlIGZv
cmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdCBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y2hpbGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBz
aW5jZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUg
bmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZh
Y2UuCisKIDIwMTMtMDItMjYgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gVW5kZWZpbmVkIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGRldGVjdGVk
IGF0IGJ1aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBhY2VmY2E2ODAwNGYwYzVhN2ZlZmJkMTFlODZlNWNlNTUwNzJj
NTA4Li5lYzkwY2NmMTMzMTNhNWE0MDNhMzZjODdkOGJmMWUwMWI0OTU4YWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzEs
MjAgKzE3MSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlz
dGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAg
IFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQ
b3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9y
dChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQ
b3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5k
ZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5YzU1YjQyYmQ3MjZlMC4uOTg2NWRlMzc5ODc3
MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVkNTA3MWU5YTQ4ZGVlMWE2MjYxNTkxZjExMDli
NzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQwYTFjODc3NDc1MmFjMmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3
LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3MgQXJndW1lbnREZWNvZGVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRl
eCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRhYzI3MWI5MzE5YzE1Li5lMmE3ZmZkN2Q4ZTRj
MzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKaW5kZXggYWU1ZDc0YTdmM2NiZGVlOGVm
M2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFjMDdmMmM5OTMzMzA5OWE2MzY3MDlkNWY3MjM5
MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9o
CiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSw2ICszNCw3IEBACiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1bWVudEVuY29kZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKaW5kZXggNWQxOWJhZDE3ZjE2
YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4uOTkzZjIyOTgzZTQyMzBlNDg0M2Y2Y2VkYzRk
ODc4Y2MyN2VjMGExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0
dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewog
Ci1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQor
I2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2Fn
ZVR5cGUoUG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgaWYgKHJlcXVp
cmVtZW50ID09IEFxdWlyZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EOworICAgIGlmIChyZXF1aXJlbWVudCA9PSBGb3J3YXJkU2VuZFJpZ2h0KQorICAg
ICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQ7CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0dGFj
aG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBQb3J0
UmlnaHRSZXF1aXJlbWVudCByZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUp
CisgICAgLCBtX3BvcnQucG9ydChpZGVudGlmaWVyLnBvcnQpCisgICAgLCBtX3BvcnQuZGlzcG9z
aXRpb24obWVzc2FnZVR5cGUocmVxdWlyZW1lbnQpKQogewogfQogCi0jaWYgT1MoREFSV0lOKQog
QXR0YWNobWVudDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5
cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAg
LTU3LDYgKzcwLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBl
ID0gVW5pbml0aWFsaXplZDsKIH0KKworY29uc3QgQXR0YWNobWVudCYgQXR0YWNobWVudDo6bnVs
bENvbm5lY3Rpb24oUG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgcmV0
dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VUeXBlKHJlcXVpcmVtZW50KSk7
Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVyKHBvcnQo
KSk7Cit9CiAjZW5kaWYKIAogdm9pZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9BdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFj
aG1lbnQuaAppbmRleCBhNWFmNTU5MmQwM2I0ODI4NjY0OTY4MTlkNWQyMGE0ZjQxYWMwZTlmLi4z
MGNjOTQ2NmNiNjU3ZWEyYzQ1MGJjYzE2YTdlOGVjYTdkMTA4OGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lm
bmRlZiBBdHRhY2htZW50X2gKICNkZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4K
ICNpbmNsdWRlIDxtYWNoL21hY2hfdHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJn
dW1lbnRFbmNvZGVyOwogCiBjbGFzcyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2ht
ZW50KCk7CisgICAgQXR0YWNobWVudCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQp
CisgICAgeyB9CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAt
NTEsNiArNTUsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gUG9ydFJp
Z2h0UmVxdWlyZW1lbnQgeworICAgICAgICBBcXVpcmVTZW5kUmlnaHQsCisgICAgICAgIEZvcndh
cmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlm
aWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNo
bWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0
aW9uKTsKICAgICBBdHRhY2htZW50KHZvaWQqIGFkZHJlc3MsIG1hY2hfbXNnX3NpemVfdCBzaXpl
LCBtYWNoX21zZ19jb3B5X29wdGlvbnNfdCBjb3B5T3B0aW9ucywgYm9vbCBkZWFsbG9jYXRlKTsK
QEAgLTU5LDYgKzcwLDkgQEAgcHVibGljOgogICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlw
dG9yKTsKICNlbmRpZgogCisgICAgc3RhdGljIEF0dGFjaG1lbnQgbnVsbENvbm5lY3Rpb24oUG9y
dFJpZ2h0UmVxdWlyZW1lbnQpOworCisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uaAppbmRleCBkMThlNjYyMWFhNDk2ODQ3YTI5OTg0ZWFmY2NjZGNiNmQ1
MTI2OGRlLi44NjI4MDIxNzA4ZTNiY2M1MTFhYTAxZGY1NDhhZWE1MmU5Y2ZkYzg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAs
NyBAQCBjbGFzcyBSdW5Mb29wOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFj
aG1lbnQ7CiBjbGFzcyBCaW5hcnlTZW1hcGhvcmU7CiAgICAgCiBlbnVtIE1lc3NhZ2VTZW5kRmxh
Z3MgewpAQCAtMTI5LDEzICsxMzAsMzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlkZW50
aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBv
cnQgPT0gTUFDSF9QT1JUX05VTEw7IH0KICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdHlwZWRlZiBI
QU5ETEUgSWRlbnRpZmllcjsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJ
ZGVudGlmaWVycyhJZGVudGlmaWVyJiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGll
bnRJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZp
ZXIgaWRlbnRpZmllcikgeyByZXR1cm4gIWlkZW50aWZpZXI7IH0KICNlbGlmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQogICAgIHR5cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJv
b2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVu
dGlmaWVyOyB9CisgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gLTE7IH0KKwogI2VuZGlmCiAKKyAgICBj
bGFzcyBDb25uZWN0aW9uRGVzY3JpcHRvciB7CisgICAgcHVibGljOgorICAgICAgICBJZGVudGlm
aWVyIHNlcnZlclBvcnQoKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBjbGllbnRQb3J0KCkg
Y29uc3Q7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rpb247Cisj
aWYgT1MoREFSV0lOKQorICAgICAgICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAg
ICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisjZWxpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKKyAgICAgICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBz
ZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgICAgICAg
ICA6IG1fc2VydmVySWRlbnRpZmllcihzZXJ2ZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgLCBt
X2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAg
IElkZW50aWZpZXIgbV9zZXJ2ZXJJZGVudGlmaWVyOworICAgICAgICBJZGVudGlmaWVyIG1fY2xp
ZW50SWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CisKKyAgICBzdGF0aWMgQ29ubmVjdGlvbkRl
c2NyaXB0b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVu
dCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbm5lY3Rpb24+IGNyZWF0ZUNsaWVudENvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50
KiwgV2ViQ29yZTo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5j
cHAKaW5kZXggNjgzYjM0ZDQ4OTI5MDYwZTRiMDRlZmEyNDM0MzIyZTE3ZDZiNjE5NS4uZjU5OWVk
YTcyMjA2OTMwODI2MWQzZTliNWE0NTRmNzdjZDVhYzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJNZXNzYWdlRGVjb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVy
LmNwcAppbmRleCBlYjA0ZDU0ZjRmZmY3ZTQ0MTdhOGU1YTUwMDg4NDA0OTUwZjNkNGE4Li5lZWM3
M2Q2ZDcyOTBmOGY2NjM3ODgwNzg0ZDVkMTk5NWM0ODFiYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3Mu
aCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAppbmRleCA2NzgwODlh
N2U2ZDJkY2U1YjdhZmVlNWUwMjE4MWY4MDA3ZjJkZjg2Li5hMWQ2NTUxNTIwMmVmZjA0ZWNkNTE4
MWIwZDQxYmJmMzE4OGI3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcApAQCAtNDcsNyArNDcsMjQgQEAgc3RhdGlj
IGNvbnN0IHNpemVfdCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiBlbnVtIHsKICAgICBN
ZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMSA8PCAwCiB9OwotICAgIAorCitDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0
aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQorewor
ICAgIG1hY2hfcG9ydF90IHBvcnQ7CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmcG9ydCk7CisgICAgcmV0dXJuIENvbm5l
Y3Rpb25EZXNjcmlwdG9yKHBvcnQpOworfQorCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCiB7CiAgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXgg
YThjMDI2OTRmMzAwOWZjZDllMWZhZTE3YmU2MWI1NzNhYWZmZjNhMC4uMjUxYTU2MThjOTM0NjY0
ZjU1MzE2ZWY5ZWE1ZmJmYTExMDc1NzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCkBAIC0zMiw2ICszMiwx
MiBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29u
bmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCkKKyAg
ICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVy
KQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6
ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURl
c2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01Miw0ICs1OCwxNSBAQCB2b2lkIEF0dGFjaG1l
bnQ6OmRpc3Bvc2UoKQogICAgICAgICB3aGlsZSAoY2xvc2UobV9maWxlRGVzY3JpcHRvcikgPT0g
LTEgJiYgKGVycm5vID09IEVJTlRSKSkgeyB9CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6
bnVsbENvbm5lY3Rpb24oUG9ydFJpZ2h0UmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFj
aG1lbnQoLTEpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5
cGUpOworICAgIHJldHVybiBmaWxlRGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBD
b3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBjNmExODZlZTE5ZTE3YTUxYmIyOWYwMjE0ODAxYmMz
N2JiMDgyMzU4Li44MDVkZTNjNGJlMzM5OTEyOTE2YzNiOWZlOTYzMzE1ZTljZWE4MzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlm
CiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBp
cyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBT
T0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TVFJFQU0KKyNlbmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBz
aXplX3QgbWVzc2FnZU1heFNpemUgPSA0MDk2OwpAQCAtNTQsNiArNjEsMzAgQEAgZW51bSB7CiAg
ICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9u
OjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0
aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKQoreworICAgIGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tl
dHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8v
IEF2b2lkIGV4cG9zaW5nIHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzIG9y
IHRoZSBjbGllbnQgc29ja2V0IHRvIGFueSBmdXR1cmUgY2hpbGQuCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICB3aGlsZSAoZmNudGwoc29ja2V0c1tpXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJubyA9PSBFSU5UUik7CisgICAgfQorCisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9y
KHNvY2tldHNbMF0sIHNvY2tldHNbMV0pOworfQorCiBjbGFzcyBNZXNzYWdlSW5mbyB7CiBwdWJs
aWM6CiAgICAgTWVzc2FnZUluZm8oKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggMTQ4N2I2Yzc2Mjc5YzI0
YzJkZDk4MzkyYTE1ZmJhNGRiN2EyNTNlNS4uODExNTczMGQyMTUxOWQ1NTY2YTU0NzdkZjJjMGE1
ZDNlNTcxODlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93
aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIENvcmVJ
UEMgewogLy8gRklYTUU6IFJlbmFtZSB0aGlzIG9yIHVzZSBhIGRpZmZlcmVudCBjb25zdGFudCBv
biB3aW5kb3dzLgogc3RhdGljIGNvbnN0IHNpemVfdCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSA9IDQw
OTY7CiAKLWJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMo
SEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ETEUmIGNsaWVudElkZW50aWZpZXIpCitzdGF0
aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKIHsKKyAg
ICBIQU5ETEUgc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAgICBTdHJpbmcg
cGlwZU5hbWU7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtNTksMjMgKzYwLDE1IEBAIGJvb2wg
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2
ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghc2Vy
dmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFJFTEVBU0VfQVNTRVJU
KHNlcnZlcklkZW50aWZpZXIpOwogCiAgICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmls
ZVcocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJQ19SRUFE
IHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQ
RUQsIDApOwotICAgIGlmICghY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICA6OkNsb3NlSGFu
ZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUKGNsaWVudElkZW50aWZpZXIpOwogCiAgICAgRFdPUkQgbW9kZSA9IFBJ
UEVfUkVBRE1PREVfTUVTU0FHRTsKLSAgICBpZiAoITo6U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUo
Y2xpZW50SWRlbnRpZmllciwgJm1vZGUsIDAsIDApKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUo
c2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmll
cik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoOjpT
ZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlmaWVyLCAmbW9kZSwgMCwgMCkpOwog
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHNlcnZl
cklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBs
YXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCAxYTFhZWQ2ZWNjNDA2YTg3
ZmFmMTM4MzNlN2ExZmRjZjFkMTg5MGE0Li4yN2E2ZjE2YzE2MzhlNWJmMzQyMmI1MzdiOTk3MTVi
N2FmN2ZhZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2Vzcy5jcHAKQEAgLTQ0LDI0ICs0NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNl
bmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4K
LSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUg
PHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFD
S0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRG
T1JNKEdUSykKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5l
IFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VU
Ci0jZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2OCw1NCArMTUwLDE2IEBAIHZvaWQg
UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyCiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogewotICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9u
cyA9ICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNw
YWNlIENvcmVJUEM7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0
ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9y
dF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxp
c3RlbmluZ1BvcnQpOworICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9
ICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CiAKLSAgICAvLyBDcmVhdGUgYSBs
aXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgpKTsKICAg
ICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwog
Ci0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hf
TVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRv
ci5jbGllbnRQb3J0KCksIEF0dGFjaG1lbnQ6OkFxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgs
IFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0
aGUgcGx1Z2luIHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAo
ZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAg
IGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0g
RUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYm
IGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3Np
YmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBG
X1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp
IHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNs
aWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRz
Y2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAg
ICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nl
c3MuY3BwCmluZGV4IGU1NmMxNWU5MzI1ZWVjNDI1OTk2YmQ3MmMwODYzM2E5YTY3N2RhNTkuLjM1
ZDI3MTkxY2Y2NjFlYjM4ZGMyY2U5MzUyNDM1NmQyZDExMzU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNz
LmNwcApAQCAtNDAsMjQgKzQwLDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlm
CiAKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2lu
Y2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lz
L3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQK
LSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0o
R1RLKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09D
S0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0jZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNl
bmRpZiAvLyBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE5LDUyICsxMDEsMTQgQEAgdm9pZCBTaGFy
ZWRXb3JrZXJQcm9jZXNzOjppbml0aWFsaXplU2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFy
ZWRXb3JrZXJQcm9jZXMKIAogdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbigpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUg
bGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNo
X3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUs
ICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8v
IENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29u
bmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlv
bjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBs
YXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQ
b3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9y
dChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQp
LCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2NrZXRzWzJd
OwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9
PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNv
Y2tldCB0byB0aGUgd2ViIHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZf
U0VURkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp
IHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBl
eHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJl
IHdlYiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZE
X0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29j
a2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29u
bmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0
c1sxXSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVs
ZWFzZSgpKTsKLQotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNb
MF0pOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50
U29ja2V0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAg
IGRpc2FibGVUZXJtaW5hdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCmluZGV4IDNh
MzYzMzQ3ZjhlY2FiYzM1Mjc1ZmVjMGI2NTEzYjBhMzRjMjI4ODEuLjZiOTg2ODUwZDk2ODljNzU2
Njg0MzY2ZGU2OWQ3NWEyNzNlODZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKQEAgLTM2
LDExICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6
bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBh
aXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpD
b25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBDU3RyaW5nIGV4ZWN1
dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nl
c3NUeXBlKSB7CkBAIC01OCwxNCArNTQsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2hhciBzb2NrZXRbNV07
Ci0gICAgc25wcmludGYoc29ja2V0LCBzaXplb2Yoc29ja2V0KSwgIiVkIiwgc29ja2V0c1swXSk7
CisgICAgY2hhciBwb3J0QXJndW1lbnRbNV07CisgICAgc25wcmludGYocG9ydEFyZ3VtZW50LCBz
aXplb2YocG9ydEFyZ3VtZW50KSwgIiVkIiwgZGVzY3JpcHRvci5jbGllbnRQb3J0KCkpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIENTdHJpbmcgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aDsKICAgICBp
ZiAoIW1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkgewogICAgICAg
ICBTdHJpbmcgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aFN0ciA9IG1fbGF1bmNoT3B0aW9ucy5wcm9j
ZXNzQ21kUHJlZml4ICsgJyAnICsKLSAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXhlY3V0
YWJsZVBhdGguZGF0YSgpKSArICcgJyArIHNvY2tldCArICcgJyArIFN0cmluZzo6ZnJvbVVURjgo
cGx1Z2luUGF0aC5kYXRhKCkpOworICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRh
YmxlUGF0aC5kYXRhKCkpICsgJyAnICsgcG9ydEFyZ3VtZW50ICsgJyAnICsgU3RyaW5nOjpmcm9t
VVRGOChwbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAgICAgIHByZWZpeGVkRXhlY3V0YWJsZVBhdGgg
PSBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoU3RyLnV0ZjgoKTsKICAgICB9CiAjZW5kaWYKQEAgLTc1
LDcgKzcxLDYgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIC8v
IHRoZSBmb3JrKCkgZG9lc24ndCBpbmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAgcGlk
X3QgcGlkID0gZm9yaygpOwogICAgIGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0gICAg
ICAgIGNsb3NlKHNvY2tldHNbMV0pOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgaWYgKCFwcmVm
aXhlZEV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGludm9rZXMgdGhlIHNoZWxsCkBAIC04OCwxMiAr
ODMsMTIgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICAg
ICAgICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGV4
ZWNsKGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBzb2NrZXQs
IHBsdWdpblBhdGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFyKj4oMCkpOworICAgICAgICBleGVj
bChleGVjdXRhYmxlUGF0aC5kYXRhKCksIGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgcG9ydEFyZ3Vt
ZW50LCBwbHVnaW5QYXRoLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KDApKTsKICAgICB9IGVs
c2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tl
dHNbMF0pOworICAgICAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAgICAg
IG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxh
dW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgot
ICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6
ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRG
aW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgp
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9n
dGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCA3YzdmMDNhYWRlZWI0MGQ3MjRl
NjgwYmY3Njk0MTY4MWUzYWY5ZTgyLi5jODRmZjlkZGRkZDkzMWMwYjQ3MjBmZTQ5MzVlMDJjZTU5
ZDEyMDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC00NSwyMSArNDUsMTIgQEAKICNp
bmNsdWRlIDxzeXMvcHJjdGwuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNk
ZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU1RSRUFNCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50
ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0
YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKLQogICAgIC8vIE1ha2UgY2hpbGQgcHJvY2VzcyBpbmhl
cml0IHBhcmVudCdzIGxvY2FsZS4KICAgICBnX3NldGVudigiTENfQUxMIiwgc2V0bG9jYWxlKExD
X0FMTCwgMCksIFRSVUUpOwogfQpAQCAtNzQsMTQgKzY1LDcgQEAgc3RhdGljIHZvaWQgY2hpbGRG
aW5pc2hlZEZ1bmN0aW9uKEdQaWQsIGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0YSkKIAog
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0g
MDsKLQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNP
Q0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRp
b24gb2Ygc29ja2V0IGZhaWxlZDogJXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxl
UGF0aCwgcGx1Z2luUGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBs
dWdpblBhdGg7CkBAIC05NCwxMyArNzgsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29ja2V0
KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CisgICAgR093blB0cjxnY2hhcj4g
c29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSkpOwog
ICAgIGNoYXIqIGFyZ3ZbNF07CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxF
eGVjdXRhYmxlUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbMV0gPSBzb2NrZXQuZ2V0KCk7CiAgICAg
YXJndlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxQbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAg
YXJndlszXSA9IDA7CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAgICAgR093blB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIGludCBzcGF3bkZsYWdzID0gR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVO
IHwgR19TUEFXTl9ET19OT1RfUkVBUF9DSElMRDsKICAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwg
YXJndiwgMCwgc3RhdGljX2Nhc3Q8R1NwYXduRmxhZ3M+KHNwYXduRmxhZ3MpLCBjaGlsZFNldHVw
RnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0
cigpKSkgewpAQCAtMTA4LDcgKzkzLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9z
ZShzb2NrZXRzWzBdKTsKKyAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAg
bV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKIAogICAgIC8vIE1vbml0b3IgdGhlIGNoaWxkIHBy
b2Nlc3MsIGl0IGNhbGxzIHdhaXRwaWQgdG8gcHJldmVudCB0aGUgY2hpbGQgcHJvY2VzcyBmcm9t
IGJlY29tbWluZyBhIHpvbWJpZSwKQEAgLTExNiw3ICsxMDEsNyBAQCB2b2lkIFByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgZ19jaGlsZF93YXRjaF9hZGQobV9wcm9jZXNzSWRl
bnRpZmllciwgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc29ja2V0c1sx
XSkpOwogCiAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNz
YWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNw
YXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRo
aXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIHNvY2tldHNbMV0pKTsKKyAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJv
Y2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkp
KTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1
bmNoZXJRdC5jcHAKaW5kZXggMzZiM2NkYmFlN2RhYTkxZjRhMDMzZTdmNzhhNTI0Y2UyMTgwMzkz
Yy4uYTBkOGQ1NzQ5MmZiYTk5MTY0NTBmMTFhZTM1MTMxZDkwMTgwMjYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5j
aGVyUXQuY3BwCkBAIC00MiwxOSArNDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBkZWZpbmVkKFFfT1NfVU5J
WCkKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChRX09TX0xJTlVYKQotI2luY2x1ZGUgPHN5cy9w
cmN0bC5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorI2lu
Y2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgogI2VuZGlmCiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtNzIs
MTMgKzYzLDYgQEAKIGV4dGVybiAiQyIga2Vybl9yZXR1cm5fdCBib290c3RyYXBfcmVnaXN0ZXIy
KG1hY2hfcG9ydF90LCBuYW1lX3QsIG1hY2hfcG9ydF90LCB1aW50NjRfdCk7CiAjZW5kaWYKIAot
Ly8gZm9yIFFOWCB3ZSBuZWVkIFNPQ0tfREdSQU0sIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTU1NTMKLSNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAh
ZGVmaW5lZChRX09TX01BQ1gpICYmICFPUyhRTlgpCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tf
U0VRUEFDS0VUCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTQx
LDM2ICsxMjUsMTggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAg
IEFTU0VSVF9VTlVTRUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CiAKICAgICBjb21tYW5kTGlu
ZSA9IGNvbW1hbmRMaW5lLmFyZyhzZXJ2aWNlTmFtZSk7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2Vs
c2UKICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3RvciwgY2xpZW50
SWRlbnRpZmllcjsKLSAgICBpZiAoIUNvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFu
ZENsaWVudElkZW50aWZpZXJzKGNvbm5lY3RvciwgY2xpZW50SWRlbnRpZmllcikpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGhlcmU/Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVz
Y3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1D
b25uZWN0aW9uKCk7CisgICAgY29ubmVjdG9yID0gZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCk7Cisg
ICAgY2xpZW50SWRlbnRpZmllciA9IGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpOwogICAgIGNvbW1h
bmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHF1bG9uZ2xvbmcoY2xpZW50SWRlbnRpZmllcikpOwor
CisjaWYgT1MoV0lORE9XUykKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgY2hpbGQgcHJvY2VzcyBp
bmhlcml0cyB0aGUgY2xpZW50IGlkZW50aWZpZXIuCiAgICAgOjpTZXRIYW5kbGVJbmZvcm1hdGlv
bihjbGllbnRJZGVudGlmaWVyLCBIQU5ETEVfRkxBR19JTkhFUklULCBIQU5ETEVfRkxBR19JTkhF
UklUKTsKLSNlbHNlCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZf
VU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIHFEZWJ1Zygp
IDw8ICJDcmVhdGlvbiBvZiBzb2NrZXQgZmFpbGVkIHdpdGggZXJybm86IiA8PCBlcnJubzsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBEb24ndCBleHBvc2UgdGhlIHVpIHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MKLSAgICB3
aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0g
ICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGludCBjb25uZWN0b3IgPSBzb2NrZXRzWzFdOwotICAgIGNvbW1hbmRM
aW5lID0gY29tbWFuZExpbmUuYXJnKHNvY2tldHNbMF0pOwogI2VuZGlmCisjZW5kaWYgLy8gT1Mo
REFSV0lOKQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9w
dGlvbnMucHJvY2Vzc1R5cGUgPT0gUGx1Z2luUHJvY2VzcykKQEAgLTE5MywxOCArMTU5LDYgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2Vsc2UKICAgICB3ZWJQcm9j
ZXNzT3JTVUlESGVscGVyLT5zdGFydChjb21tYW5kTGluZSk7CiAjZW5kaWYKLQotI2lmIE9TKFVO
SVgpICYmICFPUyhEQVJXSU4pCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29ja2V0IHRv
IHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vzc2VzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNb
MF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBF
SU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBk
ZWxldGUgd2ViUHJvY2Vzc09yU1VJREhlbHBlcjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKCF3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53
YWl0Rm9yU3RhcnRlZCgpKSB7CiAgICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQi
IDw8IGNvbW1hbmRMaW5lOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKaW5kZXggZjE1YmRiNDQyZjBkMDg1MDUzODE1NDYyODMyMWU3ZGI0Yjc1NTM1Ni4uNjUw
OGRkZmZjM2U1MGU3OWUxNmJmOTA0NTM0NzA3YzgyNGUwYjNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCkKICAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4
aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3
aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFr
ZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJ
UEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQ
Qzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdo
dCkpOwogICAgIH0KIAogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRv
IGZvcmdldCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2Ug
dXMgdG8gYmUgZGVsZXRlZC4KQEAgLTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDCiB7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVj
dGlvbklkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5l
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5Lgog
ICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3Jl
SVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAg
IHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRl
bnRpZmllcigpLCBDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggNmI5Nzk3MjlmMzg1NWE2YzBlZWQzMzJhNDc3ZTdlM2NhNjYw
NDRiNC4uZTc2NTI2YmIxMDQ3MzkxM2Y0MDkxZWU1N2RkM2EwZDM5OWEwYjM0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTEzMywxNCAr
MTM0LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JG
YWlsZWRUb0xhdW5jaCgpCiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jh
c2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhh
dmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5z
ZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxz
ZSk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQo
Q29yZUlQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQ6
Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdHZXRTaXRlc1JlcGxpZXMuaXNF
bXB0eSgpKQpAQCAtMjI5LDIwICsyMjMsMTMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRp
ZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICNl
bmRpZgogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIs
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK3ZvaWQgUGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3Jl
SVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0
aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5
LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNl
bmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVw
bHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZEdldFNpdGVzV2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cAppbmRleCAwZTlhNmE0NDNjNGIzZWRjY2ZhMmY5ZGI1MzM5Yjk0NWRhYzg3OGMxLi5jNDdmMWM2
ZTJjNjI2YTg5ZWJkZjJjZTc0MzU2YjJmYjYxMjliNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNzUsMTUgKzc1LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJ
bml0aWFsaXphdGlvbiksIDApKQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmIChDb3JlSVBDOjpD
b25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25J
ZGVudGlmaWVyID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogCiAgICAgUmVmUHRy
PFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUs
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
KTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
Y2IwNDM2NzAxNTU1ZjExMjBkODUzYzQ0ZWUyMjJhMGJlMjE3YWRkZS4uYTAyZWQxOWM5YzBjODU3
Yjk4Y2Y4MDVlNDZmNDhjZGUyOGEwZjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0zNDcsMTMgKzM0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpOwogICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorCiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190736</attachid>
            <date>2013-02-28 09:13:30 -0800</date>
            <delta_ts>2013-02-28 09:22:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130228180924.patch</filename>
            <type>text/plain</type>
            <size>43680</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE2MzYyYWJlNGQxMDJi
YTBlMmEyNTRiNzZhZWJmYmEyZDY3Y2E4Zi4uYzUwY2FjZDRlNGNmZDZkOTNkNjEwMmRjYTZkZGRj
YzA1NDZlZDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VUeXBlKToKKyAg
ICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNo
bWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6
CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbCk6IEl0IHdhcyBzaW1wbHkgd3JvbmcuCisgICAgICAgIFRoZSBp
bnZhbGlkIGZpbGUgZGVzY3JpcHRvciBpcyAtMSBhbmQgbm90IDAuCisgICAgICAgIChDb25uZWN0
aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJhY3Rpb24g
b2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uRGVzY3JpcHRvcjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBDcmVhdGVzIHRo
ZSBPUyBzcGVjaWZpYyBJUEMgY2hhbm5lbC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZURlY29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
Y3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6
OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAgIFRoZXNl
IGFyZSB0aGUgc2FtZSBvbiBNYWMuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50Ojpjb25uZWN0
aW9uSWRlbnRpZmllcik6CisgICAgICAgIFBvcnRSaWdodEZsYWdzIGlzIG5vdCByZXNwZWN0ZWQg
aGVyZSBzaW5jZSB0aGUgY29uY2VwdCBvZiBtb3Zpbmcgc29ja2V0IHJpZ2h0cworICAgICAgICBh
Y3Jvc3MgcHJvZXNzZXMgaXMgaGFuZGxlZCB2aWEgY29udHJvbCBtZXNzYWdlcyBpbiBDb25uZWN0
aW9uVW5peC5jcHAuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAg
ICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlvbi4gSSB0dXJuZWQgZXJy
b3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBzaW5jZSBlcnJvcnMgd2Fz
IG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkby4KKyAg
ICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIEltcGxlbWVudGVk
IHRoZSBuZXcgaW50ZXJmYWNlIGJhc2VkIG9uIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZp
ZXJzLiBJIHJlbW92ZWQgdGhlIGJvb2wKKyAgICAgICAgcmV0dXJuIHZhbHVlIGFuZCB1c2VkIFJF
TEVBU0VfQVNTRVJUIGZvciBlcnJvciBoYW5kbGluZy4KKworICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNp
ZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFNoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1v
dmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhlIGNoaWxkIHNpZGUKKyAgICAgICAgb2YgdGhlIGZv
cmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdCBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y2hpbGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBz
aW5jZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUg
bmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZh
Y2UuCisKIDIwMTMtMDItMjYgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gVW5kZWZpbmVkIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGRldGVjdGVk
IGF0IGJ1aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBhY2VmY2E2ODAwNGYwYzVhN2ZlZmJkMTFlODZlNWNlNTUwNzJj
NTA4Li5lYzkwY2NmMTMzMTNhNWE0MDNhMzZjODdkOGJmMWUwMWI0OTU4YWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzEs
MjAgKzE3MSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlz
dGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAg
IFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQ
b3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9y
dChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQ
b3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5k
ZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5YzU1YjQyYmQ3MjZlMC4uOTg2NWRlMzc5ODc3
MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVkNTA3MWU5YTQ4ZGVlMWE2MjYxNTkxZjExMDli
NzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQwYTFjODc3NDc1MmFjMmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3
LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3MgQXJndW1lbnREZWNvZGVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRl
eCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRhYzI3MWI5MzE5YzE1Li5lMmE3ZmZkN2Q4ZTRj
MzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKaW5kZXggYWU1ZDc0YTdmM2NiZGVlOGVm
M2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFjMDdmMmM5OTMzMzA5OWE2MzY3MDlkNWY3MjM5
MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9o
CiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSw2ICszNCw3IEBACiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1bWVudEVuY29kZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKaW5kZXggNWQxOWJhZDE3ZjE2
YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4uYzEwZGM2MjU5ZTRiZGRjOTA3NzFhMGY1OTY1
NTBkZmE3MzA5YzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0
dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewog
Ci1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQor
I2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2Fn
ZVR5cGUoQXR0YWNobWVudDo6UG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7Cisg
ICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFxdWlyZVNlbmRSaWdodCkKKyAgICAg
ICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworICAgIGlmIChyZXF1aXJlbWVudCA9
PSBBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQ7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29u
bmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCByZXF1
aXJlbWVudCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCisgICAgLCBtX3BvcnQucG9ydChp
ZGVudGlmaWVyLnBvcnQpCisgICAgLCBtX3BvcnQuZGlzcG9zaXRpb24obWVzc2FnZVR5cGUocmVx
dWlyZW1lbnQpKQogewogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVudDo6QXR0YWNobWVu
dChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9u
KQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAgLTU3LDYgKzcwLDE2IEBAIHZvaWQg
QXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKIH0K
KworY29uc3QgQXR0YWNobWVudCYgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oUG9ydFJpZ2h0
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9Q
T1JUX05VTEwsIG1lc3NhZ2VUeXBlKHJlcXVpcmVtZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246Oklk
ZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAg
IHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVyKHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9p
ZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAppbmRleCBhNWFmNTU5
MmQwM2I0ODI4NjY0OTY4MTlkNWQyMGE0ZjQxYWMwZTlmLi4zMGNjOTQ2NmNiNjU3ZWEyYzQ1MGJj
YzE2YTdlOGVjYTdkMTA4OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBBdHRhY2htZW50X2gKICNk
ZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKICNpZiBPUyhE
QVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hf
dHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogCiBjbGFz
cyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2htZW50KCk7CisgICAgQXR0YWNobWVu
dCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisgICAgeyB9CiAKICAgICBlbnVt
IFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtNTEsNiArNTUsMTMgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gUG9ydFJpZ2h0UmVxdWlyZW1lbnQgeworICAg
ICAgICBBcXVpcmVTZW5kUmlnaHQsCisgICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9Owor
CisgICAgQXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJl
bWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90
IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKTsKICAgICBBdHRhY2htZW50
KHZvaWQqIGFkZHJlc3MsIG1hY2hfbXNnX3NpemVfdCBzaXplLCBtYWNoX21zZ19jb3B5X29wdGlv
bnNfdCBjb3B5T3B0aW9ucywgYm9vbCBkZWFsbG9jYXRlKTsKQEAgLTU5LDYgKzcwLDkgQEAgcHVi
bGljOgogICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yKTsKICNlbmRpZgogCisgICAg
c3RhdGljIEF0dGFjaG1lbnQgbnVsbENvbm5lY3Rpb24oUG9ydFJpZ2h0UmVxdWlyZW1lbnQpOwor
CisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRl
eCBkMThlNjYyMWFhNDk2ODQ3YTI5OTg0ZWFmY2NjZGNiNmQ1MTI2OGRlLi44NjI4MDIxNzA4ZTNi
Y2M1MTFhYTAxZGY1NDhhZWE1MmU5Y2ZkYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBSdW5Mb29wOwog
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBCaW5hcnlT
ZW1hcGhvcmU7CiAgICAgCiBlbnVtIE1lc3NhZ2VTZW5kRmxhZ3MgewpAQCAtMTI5LDEzICsxMzAs
MzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmll
ciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7
IH0KICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdHlwZWRlZiBIQU5ETEUgSWRlbnRpZmllcjsKLSAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVy
JiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKICAgICBz
dGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1
cm4gIWlkZW50aWZpZXI7IH0KICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5
cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CisgICAgc3RhdGlj
IGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlk
ZW50aWZpZXIgPT0gLTE7IH0KKwogI2VuZGlmCiAKKyAgICBjbGFzcyBDb25uZWN0aW9uRGVzY3Jp
cHRvciB7CisgICAgcHVibGljOgorICAgICAgICBJZGVudGlmaWVyIHNlcnZlclBvcnQoKSBjb25z
dDsKKyAgICAgICAgSWRlbnRpZmllciBjbGllbnRQb3J0KCkgY29uc3Q7CisgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rpb247CisjaWYgT1MoREFSV0lOKQorICAgICAg
ICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAg
ICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1fc2VydmVySWRlbnRpZmll
cihzZXJ2ZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xp
ZW50SWRlbnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9zZXJ2ZXJJ
ZGVudGlmaWVyOworICAgICAgICBJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKKyNlbmRp
ZgorICAgIH07CisKKyAgICBzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3Aq
IGNsaWVudFJ1bkxvb3ApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0
ZUNsaWVudENvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV2ViQ29yZTo6UnVuTG9vcCog
Y2xpZW50UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggNjgzYjM0ZDQ4OTI5
MDYwZTRiMDRlZmEyNDM0MzIyZTE3ZDZiNjE5NS4uZjU5OWVkYTcyMjA2OTMwODI2MWQzZTliNWE0
NTRmNzdjZDVhYzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
RGVjb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VG
bGFncy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcAppbmRleCBlYjA0ZDU0ZjRm
ZmY3ZTQ0MTdhOGU1YTUwMDg4NDA0OTUwZjNkNGE4Li5lZWM3M2Q2ZDcyOTBmOGY2NjM3ODgwNzg0
ZDVkMTk5NWM0ODFiYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdS
ZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L21hYy9Db25uZWN0aW9uTWFjLmNwcAppbmRleCA2NzgwODlhN2U2ZDJkY2U1YjdhZmVlNWUwMjE4
MWY4MDA3ZjJkZjg2Li5hMWQ2NTUxNTIwMmVmZjA0ZWNkNTE4MWIwZDQxYmJmMzE4OGI3MGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9u
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcApAQCAtNDcsNyArNDcsMjQgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBpbmxpbmVN
ZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5l
ID0gMSA8PCAwCiB9OwotICAgIAorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
ZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIG1hY2hfcG9ydF90IHBvcnQ7
CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmcG9ydCk7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHBvcnQp
OworfQorCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgaWYg
KCFtX2lzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggYThjMDI2OTRmMzAwOWZjZDllMWZh
ZTE3YmU2MWI1NzNhYWZmZjNhMC4uMjUxYTU2MThjOTM0NjY0ZjU1MzE2ZWY5ZWE1ZmJmYTExMDc1
NzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0
dGFjaG1lbnRVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwCkBAIC0zMiw2ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBl
KQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50
OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5
cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0
b3IpCkBAIC01Miw0ICs1OCwxNSBAQCB2b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAg
ICB3aGlsZSAoY2xvc2UobV9maWxlRGVzY3JpcHRvcikgPT0gLTEgJiYgKGVycm5vID09IEVJTlRS
KSkgeyB9CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oUG9ydFJp
Z2h0UmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxl
RGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApp
bmRleCBjNmExODZlZTE5ZTE3YTUxYmIyOWYwMjE0ODAxYmMzN2JiMDgyMzU4Li44MDVkZTNjNGJl
MzM5OTEyOTE2YzNiOWZlOTYzMzE1ZTljZWE4MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ1LDYg
KzQ1LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NF
UVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNP
Q0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBB
Q0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUg
PSA0MDk2OwpAQCAtNTQsNiArNjEsMzAgQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9m
TGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3Jp
cHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIGludCBz
b2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VU
X1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9zaW5nIHRoZSBz
ZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzIG9yIHRoZSBjbGllbnQgc29ja2V0IHRv
IGFueSBmdXR1cmUgY2hpbGQuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkg
eworICAgICAgICB3aGlsZSAoZmNudGwoc29ja2V0c1tpXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykg
PT0gLTEpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisgICAg
fQorCisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHNvY2tldHNbMF0sIHNvY2tldHNb
MV0pOworfQorCiBjbGFzcyBNZXNzYWdlSW5mbyB7CiBwdWJsaWM6CiAgICAgTWVzc2FnZUluZm8o
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKaW5kZXggMTQ4N2I2Yzc2Mjc5YzI0YzJkZDk4MzkyYTE1ZmJhNGRiN2Ey
NTNlNS4uODExNTczMGQyMTUxOWQ1NTY2YTU0NzdkZjJjMGE1ZDNlNTcxODlmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogLy8gRklYTUU6IFJlbmFt
ZSB0aGlzIG9yIHVzZSBhIGRpZmZlcmVudCBjb25zdGFudCBvbiB3aW5kb3dzLgogc3RhdGljIGNv
bnN0IHNpemVfdCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiAKLWJvb2wgQ29ubmVjdGlv
bjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlm
aWVyLCBIQU5ETEUmIGNsaWVudElkZW50aWZpZXIpCitzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0
b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKIHsKKyAgICBIQU5ETEUgc2VydmVySWRlbnRp
ZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAgICBTdHJpbmcgcGlwZU5hbWU7CiAKICAgICB3aGls
ZSAodHJ1ZSkgewpAQCAtNTksMjMgKzYwLDE1IEBAIGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2Vy
dmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghc2VydmVySWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIFJFTEVBU0VfQVNTRVJUKHNlcnZlcklkZW50aWZpZXIpOwog
CiAgICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwg
MCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xp
ZW50SWRlbnRpZmllcikgewotICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVu
dElkZW50aWZpZXIpOwogCiAgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsK
LSAgICBpZiAoITo6U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1v
ZGUsIDAsIDApKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0g
ICAgICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0
ZShjbGllbnRJZGVudGlmaWVyLCAmbW9kZSwgMCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLmNwcAppbmRleCAxYTFhZWQ2ZWNjNDA2YTg3ZmFmMTM4MzNlN2ExZmRjZjFkMTg5
MGE0Li4yN2E2ZjE2YzE2MzhlNWJmMzQyMmI1MzdiOTk3MTViN2FmN2ZhZjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI0ICs0
NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgot
I2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNs
dWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09D
S0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdS
QU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE2OCw1NCArMTUwLDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlh
bGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAg
IGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIENvcmVJUEM7CiAKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNo
X3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tf
c2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgIGJv
b2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5pc0VtcHR5KCk7CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4K
LSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVu
aW5nUG9ydCkpOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0
b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgpKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6QXR0YWNo
bWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsK
KyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRQb3J0KCksIEF0dGFj
aG1lbnQ6OkFxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGx1Z2luIHByb2Nlc3Mgc29j
a2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9T
RVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikg
ewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAo
Y2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAg
ICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IGV4
cG9zZSB0aGUgd2ViIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vz
c2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9
PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2Nr
ZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0K
LSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9k
dWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlX
ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCmluZGV4IGU1NmMxNWU5
MzI1ZWVjNDI1OTk2YmQ3MmMwODYzM2E5YTY3N2RhNTkuLjM1ZDI3MTkxY2Y2NjFlYjM4ZGMyY2U5
MzUyNDM1NmQyZDExMzU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcApAQCAtNDAsMjQgKzQwLDYg
QEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5j
bHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUg
U09DS19TRVFQQUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQot
I2VuZGlmCi0jZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTE5LDUyICsxMDEsMTQgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0
aWFsaXplU2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXMKIAogdm9p
ZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAg
ICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBj
b25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwor
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBv
cnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKLSNlbGlmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWly
KEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0
IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byB0aGUgd2ViIHByb2Nl
c3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpICA9
PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2Nr
ZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCi0gICAg
d2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0g
ICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sxXSk7Ci0gICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKLQotICAgIENvcmVJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7Ci0jZWxzZQot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGRpc2FibGVUZXJtaW5hdGlvbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCmluZGV4IDNhMzYzMzQ3ZjhlY2FiYzM1Mjc1ZmVj
MGI2NTEzYjBhMzRjMjI4ODEuLjZiOTg2ODUwZDk2ODljNzU2Njg0MzY2ZGU2OWQ3NWEyNzNlODZl
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJv
Y2Vzc0xhdW5jaGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKQEAgLTM2LDExICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0g
ICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJF
QU0sIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCk7CiAKICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRo
OwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC01OCwxNCAr
NTQsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2hhciBzb2NrZXRbNV07Ci0gICAgc25wcmludGYoc29ja2V0
LCBzaXplb2Yoc29ja2V0KSwgIiVkIiwgc29ja2V0c1swXSk7CisgICAgY2hhciBwb3J0QXJndW1l
bnRbNV07CisgICAgc25wcmludGYocG9ydEFyZ3VtZW50LCBzaXplb2YocG9ydEFyZ3VtZW50KSwg
IiVkIiwgZGVzY3JpcHRvci5jbGllbnRQb3J0KCkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIENT
dHJpbmcgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aDsKICAgICBpZiAoIW1fbGF1bmNoT3B0aW9ucy5w
cm9jZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmcgcHJlZml4ZWRFeGVj
dXRhYmxlUGF0aFN0ciA9IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4ICsgJyAnICsK
LSAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXhlY3V0YWJsZVBhdGguZGF0YSgpKSArICcg
JyArIHNvY2tldCArICcgJyArIFN0cmluZzo6ZnJvbVVURjgocGx1Z2luUGF0aC5kYXRhKCkpOwor
ICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRhYmxlUGF0aC5kYXRhKCkpICsgJyAn
ICsgcG9ydEFyZ3VtZW50ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChwbHVnaW5QYXRoLmRhdGEo
KSk7CiAgICAgICAgIHByZWZpeGVkRXhlY3V0YWJsZVBhdGggPSBwcmVmaXhlZEV4ZWN1dGFibGVQ
YXRoU3RyLnV0ZjgoKTsKICAgICB9CiAjZW5kaWYKQEAgLTc1LDcgKzcxLDYgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIC8vIHRoZSBmb3JrKCkgZG9lc24ndCBp
bmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAgcGlkX3QgcGlkID0gZm9yaygpOwogICAg
IGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0gICAgICAgIGNsb3NlKHNvY2tldHNbMV0p
OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgaWYgKCFwcmVmaXhlZEV4ZWN1dGFibGVQYXRoLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBiZWNh
dXNlIGl0IGludm9rZXMgdGhlIHNoZWxsCkBAIC04OCwxMiArODMsMTIgQEAgdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9TVUND
RVNTKTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGV4ZWNsKGV4ZWN1dGFibGVQYXRoLmRh
dGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBzb2NrZXQsIHBsdWdpblBhdGguZGF0YSgpLCBz
dGF0aWNfY2FzdDxjaGFyKj4oMCkpOworICAgICAgICBleGVjbChleGVjdXRhYmxlUGF0aC5kYXRh
KCksIGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgcG9ydEFyZ3VtZW50LCBwbHVnaW5QYXRoLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8Y2hhcio+KDApKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8g
cGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9z
ZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIg
PSBwaWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2Vzcywg
bWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJv
Y2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgpKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcAppbmRleCA3YzdmMDNhYWRlZWI0MGQ3MjRlNjgwYmY3Njk0MTY4MWUzYWY5ZTgy
Li5jODRmZjlkZGRkZDkzMWMwYjQ3MjBmZTQ5MzVlMDJjZTU5ZDEyMDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1
bmNoZXJHdGsuY3BwCkBAIC00NSwyMSArNDUsMTIgQEAKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4K
ICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAg
aW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0
KTsKLQogICAgIC8vIE1ha2UgY2hpbGQgcHJvY2VzcyBpbmhlcml0IHBhcmVudCdzIGxvY2FsZS4K
ICAgICBnX3NldGVudigiTENfQUxMIiwgc2V0bG9jYWxlKExDX0FMTCwgMCksIFRSVUUpOwogfQpA
QCAtNzQsMTQgKzY1LDcgQEAgc3RhdGljIHZvaWQgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQs
IGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0YSkKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDog
JXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0aDsKICAg
ICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBAIC05NCwxMyAr
NzgsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAog
ICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRh
YmxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQi
LCBzb2NrZXRzWzBdKSk7CisgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50
ZigiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSkpOwogICAgIGNoYXIqIGFyZ3ZbNF07CiAg
ICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxFeGVjdXRhYmxlUGF0aC5kYXRhKCkp
OwogICAgIGFyZ3ZbMV0gPSBzb2NrZXQuZ2V0KCk7CiAgICAgYXJndlsyXSA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHJlYWxQbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAgYXJndlszXSA9IDA7CiAKKyAgICBH
UGlkIHBpZCA9IDA7CiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgIGludCBzcGF3bkZs
YWdzID0gR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOIHwgR19TUEFXTl9ET19OT1RfUkVB
UF9DSElMRDsKICAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgc3RhdGljX2Nhc3Q8
R1NwYXduRmxhZ3M+KHNwYXduRmxhZ3MpLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9fUE9J
TlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewpAQCAtMTA4LDcgKzkz
LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShzb2NrZXRzWzBdKTsKKyAgICBj
bG9zZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9
IHBpZDsKIAogICAgIC8vIE1vbml0b3IgdGhlIGNoaWxkIHByb2Nlc3MsIGl0IGNhbGxzIHdhaXRw
aWQgdG8gcHJldmVudCB0aGUgY2hpbGQgcHJvY2VzcyBmcm9tIGJlY29tbWluZyBhIHpvbWJpZSwK
QEAgLTExNiw3ICsxMDEsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgZ19jaGlsZF93YXRjaF9hZGQobV9wcm9jZXNzSWRlbnRpZmllciwgY2hpbGRGaW5pc2hl
ZEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc29ja2V0c1sxXSkpOwogCiAgICAgLy8gV2UndmUg
ZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4g
cnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1
bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZp
ZXIsIHNvY2tldHNbMV0pKTsKKyAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlBy
b2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNz
SWRlbnRpZmllciwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpKTsKIH0KIAogdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKaW5kZXggMzZi
M2NkYmFlN2RhYTkxZjRhMDMzZTdmNzhhNTI0Y2UyMTgwMzkzYy4uYTBkOGQ1NzQ5MmZiYTk5MTY0
NTBmMTFhZTM1MTMxZDkwMTgwMjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBAIC00MiwxOSAr
NDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLSNpZiBkZWZpbmVkKFFfT1NfVU5JWCkKLSNpbmNsdWRlIDxlcnJuby5o
PgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2lu
Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCiAjaWYg
ZGVmaW5lZChRX09TX0xJTlVYKQotI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgogI2luY2x1ZGUgPHNp
Z25hbC5oPgorI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o
PgogI2VuZGlmCiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtNzIsMTMgKzYzLDYgQEAKIGV4dGVybiAi
QyIga2Vybl9yZXR1cm5fdCBib290c3RyYXBfcmVnaXN0ZXIyKG1hY2hfcG9ydF90LCBuYW1lX3Qs
IG1hY2hfcG9ydF90LCB1aW50NjRfdCk7CiAjZW5kaWYKIAotLy8gZm9yIFFOWCB3ZSBuZWVkIFNP
Q0tfREdSQU0sIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1
NTMKLSNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhZGVmaW5lZChRX09TX01BQ1gpICYm
ICFPUyhRTlgpCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTQxLDM2ICsxMjUsMTggQEAgdm9pZCBQ
cm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIEFTU0VSVF9VTlVTRUQoa3IsIGty
ID09IEtFUk5fU1VDQ0VTUyk7CiAKICAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhz
ZXJ2aWNlTmFtZSk7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2Vsc2UKICAgICBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3RvciwgY2xpZW50SWRlbnRpZmllcjsKLSAgICBpZiAo
IUNvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKGNv
bm5lY3RvciwgY2xpZW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hv
dWxkIHdlIGRvIGhlcmU/Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KKyAg
ICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0g
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgY29u
bmVjdG9yID0gZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCk7CisgICAgY2xpZW50SWRlbnRpZmllciA9
IGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpOwogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUu
YXJnKHF1bG9uZ2xvbmcoY2xpZW50SWRlbnRpZmllcikpOworCisjaWYgT1MoV0lORE9XUykKICAg
ICAvLyBFbnN1cmUgdGhhdCB0aGUgY2hpbGQgcHJvY2VzcyBpbmhlcml0cyB0aGUgY2xpZW50IGlk
ZW50aWZpZXIuCiAgICAgOjpTZXRIYW5kbGVJbmZvcm1hdGlvbihjbGllbnRJZGVudGlmaWVyLCBI
QU5ETEVfRkxBR19JTkhFUklULCBIQU5ETEVfRkxBR19JTkhFUklUKTsKLSNlbHNlCi0gICAgaW50
IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAs
IHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJDcmVhdGlvbiBvZiBzb2Nr
ZXQgZmFpbGVkIHdpdGggZXJybm86IiA8PCBlcnJubzsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhl
IHVpIHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MKLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sx
XSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBF
SU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3
aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAg
ICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRS
KSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBj
b25uZWN0b3IgPSBzb2NrZXRzWzFdOwotICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJn
KHNvY2tldHNbMF0pOwogI2VuZGlmCisjZW5kaWYgLy8gT1MoREFSV0lOKQogCiAjaWYgRU5BQkxF
KFBMVUdJTl9QUk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0g
UGx1Z2luUHJvY2VzcykKQEAgLTE5MywxOCArMTU5LDYgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogI2Vsc2UKICAgICB3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT5zdGFy
dChjb21tYW5kTGluZSk7CiAjZW5kaWYKLQotI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pCi0g
ICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIg
cHJvY2Vzc2VzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VY
RUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBkZWxldGUgd2ViUHJvY2Vzc09yU1VJ
REhlbHBlcjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgot
CiAgICAgaWYgKCF3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53YWl0Rm9yU3RhcnRlZCgpKSB7CiAg
ICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1hbmRMaW5lOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZjE1YmRiNDQy
ZjBkMDg1MDUzODE1NDYyODMyMWU3ZGI0Yjc1NTM1Ni4uNjUwOGRkZmZjM2U1MGU3OWUxNmJmOTA0
NTM0NzA3YzgyNGUwYjNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgbmV0
d29yayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGlu
ZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENv
bm5lY3Rpb24oQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogICAgIH0KIAogICAgIC8v
IFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0aGlzIG5l
dHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KQEAg
LTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDCiB7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0
aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5l
Y3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNl
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6
OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBDb3JlSVBDOjpB
dHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
NmI5Nzk3MjlmMzg1NWE2YzBlZWQzMzJhNDc3ZTdlM2NhNjYwNDRiNC4uZTc2NTI2YmIxMDQ3Mzkx
M2Y0MDkxZWU1N2RkM2EwZDM5OWEwYjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTEzMywxNCArMTM0LDcgQEAgdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAg
Ly8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQg
YW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0K
LSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1l
bnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7Ci0jZWxpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgp
LCBmYWxzZSk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAg
ICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJ
UEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAg
d2hpbGUgKCFtX3BlbmRpbmdHZXRTaXRlc1JlcGxpZXMuaXNFbXB0eSgpKQpAQCAtMjI5LDIwICsy
MjMsMTMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICNlbmRpZgogfQogCi12b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQ
Qzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25u
ZWN0aW9uLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiB7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAg
ICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJz
dCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFj
aG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2Vsc2UKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0
YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyKCksIENvcmVJUEM6OkF0dGFj
aG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEdldFNpdGVzV2l0
aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAwZTlhNmE0NDNjNGIz
ZWRjY2ZhMmY5ZGI1MzM5Yjk0NWRhYzg3OGMxLi5jNDdmMWM2ZTJjNjI2YTg5ZWJkZjJjZTc0MzU2
YjJmYjYxMjliNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApA
QCAtNzUsMTUgKzc1LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiksIDApKQog
ICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9u
SWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rp
b25JZGVudGlmaWVyKCkpOwogICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVy
SXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jZWxpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmZp
bGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25JZGVudGlmaWVyID09IC0xKQotICAg
ICAgICByZXR1cm4gMDsKLSNlbmRpZgogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpj
cmVhdGUodGhpcywgcGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUsIGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2IwNDM2NzAxNTU1ZjExMjBkODUz
YzQ0ZWUyMjJhMGJlMjE3YWRkZS4uYTAyZWQxOWM5YzBjODU3Yjk4Y2Y4MDVlNDZmNDhjZGUyOGEw
ZjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNDcs
MTMgKzM0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpOwogICAgIGlmIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRp
ZgorCiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190737</attachid>
            <date>2013-02-28 09:22:06 -0800</date>
            <delta_ts>2013-02-28 10:14:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130228181800.patch</filename>
            <type>text/plain</type>
            <size>43689</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE2MzYyYWJlNGQxMDJi
YTBlMmEyNTRiNzZhZWJmYmEyZDY3Y2E4Zi4uYzUwY2FjZDRlNGNmZDZkOTNkNjEwMmRjYTZkZGRj
YzA1NDZlZDMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VUeXBlKToKKyAg
ICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNo
bWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6
CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbCk6IEl0IHdhcyBzaW1wbHkgd3JvbmcuCisgICAgICAgIFRoZSBp
bnZhbGlkIGZpbGUgZGVzY3JpcHRvciBpcyAtMSBhbmQgbm90IDAuCisgICAgICAgIChDb25uZWN0
aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJhY3Rpb24g
b2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0
aW9uRGVzY3JpcHRvcjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBDcmVhdGVzIHRo
ZSBPUyBzcGVjaWZpYyBJUEMgY2hhbm5lbC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZURlY29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
Y3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6
OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAgIFRoZXNl
IGFyZSB0aGUgc2FtZSBvbiBNYWMuCisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50Ojpjb25uZWN0
aW9uSWRlbnRpZmllcik6CisgICAgICAgIFBvcnRSaWdodEZsYWdzIGlzIG5vdCByZXNwZWN0ZWQg
aGVyZSBzaW5jZSB0aGUgY29uY2VwdCBvZiBtb3Zpbmcgc29ja2V0IHJpZ2h0cworICAgICAgICBh
Y3Jvc3MgcHJvZXNzZXMgaXMgaGFuZGxlZCB2aWEgY29udHJvbCBtZXNzYWdlcyBpbiBDb25uZWN0
aW9uVW5peC5jcHAuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OnNlcnZlclBvcnQpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50UG9ydCk6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAg
ICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlvbi4gSSB0dXJuZWQgZXJy
b3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBzaW5jZSBlcnJvcnMgd2Fz
IG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkby4KKyAg
ICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIEltcGxlbWVudGVk
IHRoZSBuZXcgaW50ZXJmYWNlIGJhc2VkIG9uIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZp
ZXJzLiBJIHJlbW92ZWQgdGhlIGJvb2wKKyAgICAgICAgcmV0dXJuIHZhbHVlIGFuZCB1c2VkIFJF
TEVBU0VfQVNTRVJUIGZvciBlcnJvciBoYW5kbGluZy4KKworICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNp
ZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFNoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9l
ZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1v
dmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhlIGNoaWxkIHNpZGUKKyAgICAgICAgb2YgdGhlIGZv
cmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdCBhdXRvbWF0aWNhbGx5LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y2hpbGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBz
aW5jZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUg
bmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToK
KyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nl
c3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZh
Y2UuCisKIDIwMTMtMDItMjYgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDTWFrZV0gVW5kZWZpbmVkIHJlZmVyZW5jZXMgc2hvdWxkIGJlIGRldGVjdGVk
IGF0IGJ1aWxkIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBhY2VmY2E2ODAwNGYwYzVhN2ZlZmJkMTFlODZlNWNlNTUwNzJj
NTA4Li5lYzkwY2NmMTMzMTNhNWE0MDNhMzZjODdkOGJmMWUwMWI0OTU4YWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzEs
MjAgKzE3MSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlz
dGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAg
IFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQ
b3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9y
dChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQ
b3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5k
ZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5YzU1YjQyYmQ3MjZlMC4uOTg2NWRlMzc5ODc3
MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVkNTA3MWU5YTQ4ZGVlMWE2MjYxNTkxZjExMDli
NzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQwYTFjODc3NDc1MmFjMmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3
LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3MgQXJndW1lbnREZWNvZGVyIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRl
eCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRhYzI3MWI5MzE5YzE1Li5lMmE3ZmZkN2Q4ZTRj
MzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAKKyNpbmNs
dWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKaW5kZXggYWU1ZDc0YTdmM2NiZGVlOGVm
M2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFjMDdmMmM5OTMzMzA5OWE2MzY3MDlkNWY3MjM5
MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1
bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9o
CiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSw2ICszNCw3IEBACiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFz
cyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1bWVudEVuY29kZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKaW5kZXggNWQxOWJhZDE3ZjE2
YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4uYzEwZGM2MjU5ZTRiZGRjOTA3NzFhMGY1OTY1
NTBkZmE3MzA5YzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0
dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewog
Ci1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQor
I2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2Fn
ZVR5cGUoQXR0YWNobWVudDo6UG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7Cisg
ICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFxdWlyZVNlbmRSaWdodCkKKyAgICAg
ICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworICAgIGlmIChyZXF1aXJlbWVudCA9
PSBBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQ7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
TUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29u
bmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCByZXF1
aXJlbWVudCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCisgICAgLCBtX3BvcnQucG9ydChp
ZGVudGlmaWVyLnBvcnQpCisgICAgLCBtX3BvcnQuZGlzcG9zaXRpb24obWVzc2FnZVR5cGUocmVx
dWlyZW1lbnQpKQogewogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVudDo6QXR0YWNobWVu
dChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9u
KQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAgLTU3LDYgKzcwLDE2IEBAIHZvaWQg
QXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKIH0K
KworY29uc3QgQXR0YWNobWVudCYgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oUG9ydFJpZ2h0
UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9Q
T1JUX05VTEwsIG1lc3NhZ2VUeXBlKHJlcXVpcmVtZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246Oklk
ZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAg
IHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVyKHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9p
ZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAppbmRleCBhNWFmNTU5
MmQwM2I0ODI4NjY0OTY4MTlkNWQyMGE0ZjQxYWMwZTlmLi4zMGNjOTQ2NmNiNjU3ZWEyYzQ1MGJj
YzE2YTdlOGVjYTdkMTA4OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBBdHRhY2htZW50X2gKICNk
ZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKICNpZiBPUyhE
QVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hf
dHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogCiBjbGFz
cyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2htZW50KCk7CisgICAgQXR0YWNobWVu
dCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisgICAgeyB9CiAKICAgICBlbnVt
IFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtNTEsNiArNTUsMTMgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gUG9ydFJpZ2h0UmVxdWlyZW1lbnQgeworICAg
ICAgICBBcXVpcmVTZW5kUmlnaHQsCisgICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9Owor
CisgICAgQXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJl
bWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90
IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKTsKICAgICBBdHRhY2htZW50
KHZvaWQqIGFkZHJlc3MsIG1hY2hfbXNnX3NpemVfdCBzaXplLCBtYWNoX21zZ19jb3B5X29wdGlv
bnNfdCBjb3B5T3B0aW9ucywgYm9vbCBkZWFsbG9jYXRlKTsKQEAgLTU5LDYgKzcwLDkgQEAgcHVi
bGljOgogICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yKTsKICNlbmRpZgogCisgICAg
c3RhdGljIEF0dGFjaG1lbnQgbnVsbENvbm5lY3Rpb24oUG9ydFJpZ2h0UmVxdWlyZW1lbnQpOwor
CisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRl
eCBkMThlNjYyMWFhNDk2ODQ3YTI5OTg0ZWFmY2NjZGNiNmQ1MTI2OGRlLi44NjI4MDIxNzA4ZTNi
Y2M1MTFhYTAxZGY1NDhhZWE1MmU5Y2ZkYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBSdW5Mb29wOwog
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBCaW5hcnlT
ZW1hcGhvcmU7CiAgICAgCiBlbnVtIE1lc3NhZ2VTZW5kRmxhZ3MgewpAQCAtMTI5LDEzICsxMzAs
MzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmll
ciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7
IH0KICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdHlwZWRlZiBIQU5ETEUgSWRlbnRpZmllcjsKLSAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVy
JiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKICAgICBz
dGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1
cm4gIWlkZW50aWZpZXI7IH0KICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5
cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CisgICAgc3RhdGlj
IGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlk
ZW50aWZpZXIgPT0gLTE7IH0KKwogI2VuZGlmCiAKKyAgICBjbGFzcyBDb25uZWN0aW9uRGVzY3Jp
cHRvciB7CisgICAgcHVibGljOgorICAgICAgICBJZGVudGlmaWVyIHNlcnZlclBvcnQoKSBjb25z
dDsKKyAgICAgICAgSWRlbnRpZmllciBjbGllbnRQb3J0KCkgY29uc3Q7CisgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIENvbm5lY3Rpb247CisjaWYgT1MoREFSV0lOKQorICAgICAg
ICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAg
ICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1fc2VydmVySWRlbnRpZmll
cihzZXJ2ZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xp
ZW50SWRlbnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9zZXJ2ZXJJ
ZGVudGlmaWVyOworICAgICAgICBJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKKyNlbmRp
ZgorICAgIH07CisKKyAgICBzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3Aq
IGNsaWVudFJ1bkxvb3ApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0
ZUNsaWVudENvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV2ViQ29yZTo6UnVuTG9vcCog
Y2xpZW50UnVuTG9vcCk7CiAgICAgfkNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggNjgzYjM0ZDQ4OTI5
MDYwZTRiMDRlZmEyNDM0MzIyZTE3ZDZiNjE5NS4uZjU5OWVkYTcyMjA2OTMwODI2MWQzZTliNWE0
NTRmNzdjZDVhYzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
RGVjb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VG
bGFncy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcAppbmRleCBlYjA0ZDU0ZjRm
ZmY3ZTQ0MTdhOGU1YTUwMDg4NDA0OTUwZjNkNGE4Li5lZWM3M2Q2ZDcyOTBmOGY2NjM3ODgwNzg0
ZDVkMTk5NWM0ODFiYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdS
ZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L21hYy9Db25uZWN0aW9uTWFjLmNwcAppbmRleCA2NzgwODlhN2U2ZDJkY2U1YjdhZmVlNWUwMjE4
MWY4MDA3ZjJkZjg2Li5hMWQ2NTUxNTIwMmVmZjA0ZWNkNTE4MWIwZDQxYmJmMzE4OGI3MGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9u
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcApAQCAtNDcsNyArNDcsMjQgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBpbmxpbmVN
ZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5l
ID0gMSA8PCAwCiB9OwotICAgIAorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
ZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIG1hY2hfcG9ydF90IHBvcnQ7
CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmcG9ydCk7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHBvcnQp
OworfQorCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgaWYg
KCFtX2lzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggYThjMDI2OTRmMzAwOWZjZDllMWZh
ZTE3YmU2MWI1NzNhYWZmZjNhMC4uMjUxYTU2MThjOTM0NjY0ZjU1MzE2ZWY5ZWE1ZmJmYTExMDc1
NzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0
dGFjaG1lbnRVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwCkBAIC0zMiw2ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBp
ZGVudGlmaWVyLCBQb3J0UmlnaHRSZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBl
KQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50
OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5
cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0
b3IpCkBAIC01Miw0ICs1OCwxNSBAQCB2b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAg
ICB3aGlsZSAoY2xvc2UobV9maWxlRGVzY3JpcHRvcikgPT0gLTEgJiYgKGVycm5vID09IEVJTlRS
KSkgeyB9CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oUG9ydFJp
Z2h0UmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxl
RGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApp
bmRleCBjNmExODZlZTE5ZTE3YTUxYmIyOWYwMjE0ODAxYmMzN2JiMDgyMzU4Li44MDVkZTNjNGJl
MzM5OTEyOTE2YzNiOWZlOTYzMzE1ZTljZWE4MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ1LDYg
KzQ1LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NF
UVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNP
Q0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBB
Q0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUg
PSA0MDk2OwpAQCAtNTQsNiArNjEsMzAgQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9m
TGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRQb3J0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3Jp
cHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIGludCBz
b2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VU
X1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9zaW5nIHRoZSBz
ZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzIG9yIHRoZSBjbGllbnQgc29ja2V0IHRv
IGFueSBmdXR1cmUgY2hpbGQuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkg
eworICAgICAgICB3aGlsZSAoZmNudGwoc29ja2V0c1tpXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykg
PT0gLTEpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisgICAg
fQorCisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHNvY2tldHNbMF0sIHNvY2tldHNb
MV0pOworfQorCiBjbGFzcyBNZXNzYWdlSW5mbyB7CiBwdWJsaWM6CiAgICAgTWVzc2FnZUluZm8o
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKaW5kZXggMTQ4N2I2Yzc2Mjc5YzI0YzJkZDk4MzkyYTE1ZmJhNGRiN2Ey
NTNlNS4uODExNTczMGQyMTUxOWQ1NTY2YTU0NzdkZjJjMGE1ZDNlNTcxODlmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogLy8gRklYTUU6IFJlbmFt
ZSB0aGlzIG9yIHVzZSBhIGRpZmZlcmVudCBjb25zdGFudCBvbiB3aW5kb3dzLgogc3RhdGljIGNv
bnN0IHNpemVfdCBpbmxpbmVNZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiAKLWJvb2wgQ29ubmVjdGlv
bjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlm
aWVyLCBIQU5ETEUmIGNsaWVudElkZW50aWZpZXIpCitzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0
b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKIHsKKyAgICBIQU5ETEUgc2VydmVySWRlbnRp
ZmllciwgY2xpZW50SWRlbnRpZmllcjsKICAgICBTdHJpbmcgcGlwZU5hbWU7CiAKICAgICB3aGls
ZSAodHJ1ZSkgewpAQCAtNTksMjMgKzYwLDE1IEBAIGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2Vy
dmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghc2VydmVySWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIFJFTEVBU0VfQVNTRVJUKHNlcnZlcklkZW50aWZpZXIpOwog
CiAgICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwg
MCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xp
ZW50SWRlbnRpZmllcikgewotICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVu
dElkZW50aWZpZXIpOwogCiAgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsK
LSAgICBpZiAoITo6U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1v
ZGUsIDAsIDApKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0g
ICAgICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0
ZShjbGllbnRJZGVudGlmaWVyLCAmbW9kZSwgMCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Qcm9jZXNzLmNwcAppbmRleCAxYTFhZWQ2ZWNjNDA2YTg3ZmFmMTM4MzNlN2ExZmRjZjFkMTg5
MGE0Li4yN2E2ZjE2YzE2MzhlNWJmMzQyMmI1MzdiOTk3MTViN2FmN2ZhZjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI0ICs0
NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgot
I2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNs
dWRlIDx1bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09D
S0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdS
QU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE2OCw1NCArMTUwLDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlh
bGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAK
IHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAg
IGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIENvcmVJUEM7CiAKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNo
X3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tf
c2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgIGJv
b2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5pc0VtcHR5KCk7CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4K
LSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVu
aW5nUG9ydCkpOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0
b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgpKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6QXR0YWNo
bWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsK
KyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRQb3J0KCksIEF0dGFj
aG1lbnQ6OkFxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGx1Z2luIHByb2Nlc3Mgc29j
a2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9T
RVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikg
ewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAo
Y2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAg
ICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IGV4
cG9zZSB0aGUgd2ViIHByb2Nlc3Mgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJvY2Vz
c2VzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9
PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2Nr
ZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAg
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0K
LSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9k
dWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlX
ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCmluZGV4IGU1NmMxNWU5
MzI1ZWVjNDI1OTk2YmQ3MmMwODYzM2E5YTY3N2RhNTkuLjM1ZDI3MTkxY2Y2NjFlYjM4ZGMyY2U5
MzUyNDM1NmQyZDExMzU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtl
clByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcApAQCAtNDAsMjQgKzQwLDYg
QEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5j
bHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUg
U09DS19TRVFQQUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQot
I2VuZGlmCi0jZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMTE5LDUyICsxMDEsMTQgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0
aWFsaXplU2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXMKIAogdm9p
ZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAg
ICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBj
b25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwor
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3Jl
SVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBv
cnQoKSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKLSNlbGlmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWly
KEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0
IGV4cG9zZSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byB0aGUgd2ViIHByb2Nl
c3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpICA9
PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMF0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2Nr
ZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3Jr
ZXIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCi0gICAg
d2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0g
ICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09
IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sxXSk7Ci0gICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKLQotICAgIENvcmVJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0KSwgMCk7Ci0jZWxzZQot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGRpc2FibGVUZXJtaW5hdGlvbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCmluZGV4IDNhMzYzMzQ3ZjhlY2FiYzM1Mjc1ZmVj
MGI2NTEzYjBhMzRjMjI4ODEuLjZiOTg2ODUwZDk2ODljNzU2Njg0MzY2ZGU2OWQ3NWEyNzNlODZl
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJv
Y2Vzc0xhdW5jaGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKQEAgLTM2LDExICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0g
ICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJF
QU0sIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCk7CiAKICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRo
OwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC01OCwxNCAr
NTQsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2hhciBzb2NrZXRbNV07Ci0gICAgc25wcmludGYoc29ja2V0
LCBzaXplb2Yoc29ja2V0KSwgIiVkIiwgc29ja2V0c1swXSk7CisgICAgY2hhciBwb3J0QXJndW1l
bnRbNV07CisgICAgc25wcmludGYocG9ydEFyZ3VtZW50LCBzaXplb2YocG9ydEFyZ3VtZW50KSwg
IiVkIiwgZGVzY3JpcHRvci5jbGllbnRQb3J0KCkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIENT
dHJpbmcgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aDsKICAgICBpZiAoIW1fbGF1bmNoT3B0aW9ucy5w
cm9jZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmcgcHJlZml4ZWRFeGVj
dXRhYmxlUGF0aFN0ciA9IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4ICsgJyAnICsK
LSAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXhlY3V0YWJsZVBhdGguZGF0YSgpKSArICcg
JyArIHNvY2tldCArICcgJyArIFN0cmluZzo6ZnJvbVVURjgocGx1Z2luUGF0aC5kYXRhKCkpOwor
ICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRhYmxlUGF0aC5kYXRhKCkpICsgJyAn
ICsgcG9ydEFyZ3VtZW50ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChwbHVnaW5QYXRoLmRhdGEo
KSk7CiAgICAgICAgIHByZWZpeGVkRXhlY3V0YWJsZVBhdGggPSBwcmVmaXhlZEV4ZWN1dGFibGVQ
YXRoU3RyLnV0ZjgoKTsKICAgICB9CiAjZW5kaWYKQEAgLTc1LDcgKzcxLDYgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIC8vIHRoZSBmb3JrKCkgZG9lc24ndCBp
bmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAgcGlkX3QgcGlkID0gZm9yaygpOwogICAg
IGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0gICAgICAgIGNsb3NlKHNvY2tldHNbMV0p
OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgaWYgKCFwcmVmaXhlZEV4ZWN1dGFibGVQYXRoLmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBiZWNh
dXNlIGl0IGludm9rZXMgdGhlIHNoZWxsCkBAIC04OCwxMiArODMsMTIgQEAgdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9TVUND
RVNTKTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGV4ZWNsKGV4ZWN1dGFibGVQYXRoLmRh
dGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBzb2NrZXQsIHBsdWdpblBhdGguZGF0YSgpLCBz
dGF0aWNfY2FzdDxjaGFyKj4oMCkpOworICAgICAgICBleGVjbChleGVjdXRhYmxlUGF0aC5kYXRh
KCksIGV4ZWN1dGFibGVQYXRoLmRhdGEoKSwgcG9ydEFyZ3VtZW50LCBwbHVnaW5QYXRoLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8Y2hhcio+KDApKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8g
cGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9z
ZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIg
PSBwaWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2Vzcywg
bWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJv
Y2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVyUG9ydCgpKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcAppbmRleCA3YzdmMDNhYWRlZWI0MGQ3MjRlNjgwYmY3Njk0MTY4MWUzYWY5ZTgy
Li5mNWZiYWE3NDBjYjc3ZjlhMDIzMzJkNDcyYWRhOGY3NzdhMzM1ZTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1
bmNoZXJHdGsuY3BwCkBAIC00NSwyMSArNDUsMTIgQEAKICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4K
ICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZW5k
aWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAg
aW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0
KTsKLQogICAgIC8vIE1ha2UgY2hpbGQgcHJvY2VzcyBpbmhlcml0IHBhcmVudCdzIGxvY2FsZS4K
ICAgICBnX3NldGVudigiTENfQUxMIiwgc2V0bG9jYWxlKExDX0FMTCwgMCksIFRSVUUpOwogfQpA
QCAtNzQsMTQgKzY1LDcgQEAgc3RhdGljIHZvaWQgY2hpbGRGaW5pc2hlZEZ1bmN0aW9uKEdQaWQs
IGdpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyRGF0YSkKIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDog
JXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQ
bGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2lu
UGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBA
IC05NCwxMyArNzgsMTQgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQog
ICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3By
aW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CisgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3Ry
ZHVwX3ByaW50ZigiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSkpOwogICAgIGNoYXIqIGFy
Z3ZbNF07CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxFeGVjdXRhYmxlUGF0
aC5kYXRhKCkpOwogICAgIGFyZ3ZbMV0gPSBzb2NrZXQuZ2V0KCk7CiAgICAgYXJndlsyXSA9IGNv
bnN0X2Nhc3Q8Y2hhcio+KHJlYWxQbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAgYXJndlszXSA9IDA7
CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgIGlu
dCBzcGF3bkZsYWdzID0gR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOIHwgR19TUEFXTl9E
T19OT1RfUkVBUF9DSElMRDsKICAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgc3Rh
dGljX2Nhc3Q8R1NwYXduRmxhZ3M+KHNwYXduRmxhZ3MpLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJ
TlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewpAQCAt
MTA4LDcgKzkzLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShzb2NrZXRzWzBd
KTsKKyAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAgICAgbV9wcm9jZXNzSWRl
bnRpZmllciA9IHBpZDsKIAogICAgIC8vIE1vbml0b3IgdGhlIGNoaWxkIHByb2Nlc3MsIGl0IGNh
bGxzIHdhaXRwaWQgdG8gcHJldmVudCB0aGUgY2hpbGQgcHJvY2VzcyBmcm9tIGJlY29tbWluZyBh
IHpvbWJpZSwKQEAgLTExNiw3ICsxMDEsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiAgICAgZ19jaGlsZF93YXRjaF9hZGQobV9wcm9jZXNzSWRlbnRpZmllciwgY2hp
bGRGaW5pc2hlZEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoc29ja2V0c1sxXSkpOwogCiAgICAg
Ly8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8g
dGhlIG1haW4gcnVuIGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQ
cm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vz
c0lkZW50aWZpZXIsIHNvY2tldHNbMV0pKTsKKyAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNo
KGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywg
bV9wcm9jZXNzSWRlbnRpZmllciwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpKTsKIH0KIAogdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAK
aW5kZXggMzZiM2NkYmFlN2RhYTkxZjRhMDMzZTdmNzhhNTI0Y2UyMTgwMzkzYy4uYTBkOGQ1NzQ5
MmZiYTk5MTY0NTBmMTFhZTM1MTMxZDkwMTgwMjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCkBA
IC00MiwxOSArNDIsMTAgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBkZWZpbmVkKFFfT1NfVU5JWCkKLSNpbmNsdWRl
IDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJj
ZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRp
ZgotCiAjaWYgZGVmaW5lZChRX09TX0xJTlVYKQotI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgogI2lu
Y2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorI2luY2x1ZGUgPHN5cy9y
ZXNvdXJjZS5oPgogI2VuZGlmCiAKICNpZiBPUyhXSU5ET1dTKQpAQCAtNzIsMTMgKzYzLDYgQEAK
IGV4dGVybiAiQyIga2Vybl9yZXR1cm5fdCBib290c3RyYXBfcmVnaXN0ZXIyKG1hY2hfcG9ydF90
LCBuYW1lX3QsIG1hY2hfcG9ydF90LCB1aW50NjRfdCk7CiAjZW5kaWYKIAotLy8gZm9yIFFOWCB3
ZSBuZWVkIFNPQ0tfREdSQU0sIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU1NTMKLSNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhZGVmaW5lZChRX09T
X01BQ1gpICYmICFPUyhRTlgpCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0j
ZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTQxLDM2ICsxMjUsMTgg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIEFTU0VSVF9VTlVT
RUQoa3IsIGtyID09IEtFUk5fU1VDQ0VTUyk7CiAKICAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRM
aW5lLmFyZyhzZXJ2aWNlTmFtZSk7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2Vsc2UKICAgICBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3RvciwgY2xpZW50SWRlbnRpZmllcjsK
LSAgICBpZiAoIUNvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50
aWZpZXJzKGNvbm5lY3RvciwgY2xpZW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgLy8gRklYTUU6
IFdoYXQgc2hvdWxkIHdlIGRvIGhlcmU/Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7
CisgICAgY29ubmVjdG9yID0gZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCk7CisgICAgY2xpZW50SWRl
bnRpZmllciA9IGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpOwogICAgIGNvbW1hbmRMaW5lID0gY29t
bWFuZExpbmUuYXJnKHF1bG9uZ2xvbmcoY2xpZW50SWRlbnRpZmllcikpOworCisjaWYgT1MoV0lO
RE9XUykKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgY2hpbGQgcHJvY2VzcyBpbmhlcml0cyB0aGUg
Y2xpZW50IGlkZW50aWZpZXIuCiAgICAgOjpTZXRIYW5kbGVJbmZvcm1hdGlvbihjbGllbnRJZGVu
dGlmaWVyLCBIQU5ETEVfRkxBR19JTkhFUklULCBIQU5ETEVfRkxBR19JTkhFUklUKTsKLSNlbHNl
Ci0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VU
X1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIHFEZWJ1ZygpIDw8ICJDcmVhdGlv
biBvZiBzb2NrZXQgZmFpbGVkIHdpdGggZXJybm86IiA8PCBlcnJubzsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBl
eHBvc2UgdGhlIHVpIHNvY2tldCB0byB0aGUgd2ViIHByb2Nlc3MKLSAgICB3aGlsZSAoZmNudGwo
c29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChl
cnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIp
IHsgfQotICAgICAgICAgICAgd2hpbGUgKGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5v
ID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGludCBjb25uZWN0b3IgPSBzb2NrZXRzWzFdOwotICAgIGNvbW1hbmRMaW5lID0gY29tbWFu
ZExpbmUuYXJnKHNvY2tldHNbMF0pOwogI2VuZGlmCisjZW5kaWYgLy8gT1MoREFSV0lOKQogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vz
c1R5cGUgPT0gUGx1Z2luUHJvY2VzcykKQEAgLTE5MywxOCArMTU5LDYgQEAgdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2Vsc2UKICAgICB3ZWJQcm9jZXNzT3JTVUlESGVs
cGVyLT5zdGFydChjb21tYW5kTGluZSk7CiAjZW5kaWYKLQotI2lmIE9TKFVOSVgpICYmICFPUyhE
QVJXSU4pCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29ja2V0IHRvIHBvc3NpYmxlIGZ1
dHVyZSB3ZWIgcHJvY2Vzc2VzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQs
IEZEX0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBkZWxldGUgd2ViUHJv
Y2Vzc09yU1VJREhlbHBlcjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LSNlbmRpZgotCiAgICAgaWYgKCF3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53YWl0Rm9yU3RhcnRl
ZCgpKSB7CiAgICAgICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1hbmRM
aW5lOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
ZjE1YmRiNDQyZjBkMDg1MDUzODE1NDYyODMyMWU3ZGI0Yjc1NTM1Ni4uNjUwOGRkZmZjM2U1MGU3
OWUxNmJmOTA0NTM0NzA3YzgyNGUwYjNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2ht
ZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1
ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAv
LyBUaGUgbmV0d29yayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBh
bnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0K
LSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1l
bnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVu
dDo6bnVsbENvbm5lY3Rpb24oQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogICAgIH0K
IAogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91
dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVs
ZXRlZC4KQEAgLTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDCiB7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZp
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAg
Ly8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3Qo
KTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2ht
ZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
KTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5k
KENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBD
b3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKaW5kZXggNmI5Nzk3MjlmMzg1NWE2YzBlZWQzMzJhNDc3ZTdlM2NhNjYwNDRiNC4uZTc2NTI2
YmIxMDQ3MzkxM2Y0MDkxZWU1N2RkM2EwZDM5OWEwYjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNpbmNsdWRlICJB
dHRhY2htZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTEzMywxNCArMTM0LDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5j
aCgpCiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0
ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hp
bGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6
OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7Ci0jZWxpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0
YWNobWVudCgpLCBmYWxzZSk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2Vu
ZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0
aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdHZXRTaXRlc1JlcGxpZXMuaXNFbXB0eSgpKQpAQCAt
MjI5LDIwICsyMjMsMTMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5j
aGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICNlbmRpZgogfQogCi12
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2ht
ZW50JiBjb25uZWN0aW9uLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5Lgog
ICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJ
UEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwot
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlv
bklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwot
I2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQoQ29y
ZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyKCksIENvcmVJ
UEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEdl
dFNpdGVzV2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxs
YmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAwZTlh
NmE0NDNjNGIzZWRjY2ZhMmY5ZGI1MzM5Yjk0NWRhYzg3OGMxLi5jNDdmMWM2ZTJjNjI2YTg5ZWJk
ZjJjZTc0MzU2YjJmYjYxMjliNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcApAQCAtNzUsMTUgKzc1LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlv
biksIDApKQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRD
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjpp
ZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25JZGVudGlmaWVyID09
IC0xKQotICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwgcHJvY2Vzc1R5cGUsIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2IwNDM2NzAxNTU1
ZjExMjBkODUzYzQ0ZWUyMjJhMGJlMjE3YWRkZS4uYTAyZWQxOWM5YzBjODU3Yjk4Y2Y4MDVlNDZm
NDhjZGUyOGEwZjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC0zNDcsMTMgKzM0NywxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
KSwgMCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpOwogICAg
IGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSNlbmRpZgorCiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190746</attachid>
            <date>2013-02-28 10:14:53 -0800</date>
            <delta_ts>2013-03-01 05:51:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130228191047.patch</filename>
            <type>text/plain</type>
            <size>43754</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRhZTE1Yzc3OTgwOGUy
NTQ5MGZmMTMwYTdmZGUxY2MyZjM4NzQ3YS4uNzY4YTBmMWM1M2Q3MTQyYWFjZmE4YmIzYzhhNDMw
Y2U2MTMwOTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlv
bik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6
OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAg
ICAoQ29yZUlQQyk6CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgorICAgICAg
ICBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAgICAgICAo
Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBWZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3Ry
YWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rpb25EZXNjcmlwdG9yKToKKyAgICAgICAgQ3Jl
YXRlcyB0aGUgT1Mgc3BlY2lmaWMgSVBDIGNoYW5uZWwuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJQb3J0KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQpOgorICAgICAg
ICBUaGVzZSBhcmUgdGhlIHNhbWUgb24gTWFjLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToKKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
OjpBdHRhY2htZW50KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6QXR0
YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBQb3J0UmlnaHRGbGFncyBpcyBub3QgcmVz
cGVjdGVkIGhlcmUgc2luY2UgdGhlIGNvbmNlcHQgb2YgbW92aW5nIHNvY2tldCByaWdodHMKKyAg
ICAgICAgYWNyb3NzIHByb2Vzc2VzIGlzIGhhbmRsZWQgdmlhIGNvbnRyb2wgbWVzc2FnZXMgaW4g
Q29ubmVjdGlvblVuaXguY3BwLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAo
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQpOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToK
KyAgICAgICAgQ29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBzb2NrZXQgY3JlYXRpb24uIEkgdHVy
bmVkIGVycm9yIGhhbmRsaW5nIHRvIFJFTEVBU0VfQVNTRVJUJ3MKKyAgICAgICAgc2luY2UgZXJy
b3JzIHdhcyBuZXZlciBoYW5kbGVkIGFueXdheSBhbmQgdGhlcmUgaXMgbm8gZ29vZCB3YXkgdG8g
ZG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAgICBJbXBs
ZW1lbnRlZCB0aGUgbmV3IGludGVyZmFjZSBiYXNlZCBvbiBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJ
ZGVudGlmaWVycy4gSSByZW1vdmVkIHRoZSBib29sCisgICAgICAgIHJldHVybiB2YWx1ZSBhbmQg
dXNlZCBSRUxFQVNFX0FTU0VSVCBmb3IgZXJyb3IgaGFuZGxpbmcuCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIENoYW5nZSBwbGF0Zm9y
bSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAg
KiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFj
ZS4gUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBmcm9tIHRoZSBjaGlsZCBzaWRlCisgICAgICAgIG9m
IHRoZSBmb3JrIGJlY2F1c2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQgYXV0b21hdGljYWxseS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3Nl
IGNhbGwgc2luY2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBV
c2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorCiAyMDEzLTAyLTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgQlVJTEQgRklYIChyMTQ0MjIxKTogU2V0U21hcnRJbnNlcnREZWxldGVF
bmFibGVkIHNob3VsZCBiZSB3cmFwcGVkIGluIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhY2VmY2E2ODAw
NGYwYzVhN2ZlZmJkMTFlODZlNWNlNTUwNzJjNTA4Li5lYzkwY2NmMTMzMTNhNWE0MDNhMzZjODdk
OGJmMWUwMWI0OTU4YWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzEsMjAgKzE3MSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5n
IHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxs
b2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5p
bmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRh
Y2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQp
OworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0
YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5
YzU1YjQyYmQ3MjZlMC4uOTg2NWRlMzc5ODc3MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVk
NTA3MWU5YTQ4ZGVlMWE2MjYxNTkxZjExMDliNzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQw
YTFjODc3NDc1MmFjMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVu
dERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBl
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7
CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3Mg
QXJndW1lbnREZWNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRleCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRh
YzI3MWI5MzE5YzE1Li5lMmE3ZmZkN2Q4ZTRjMzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29k
ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QXJndW1lbnRFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVy
LmgKaW5kZXggYWU1ZDc0YTdmM2NiZGVlOGVmM2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFj
MDdmMmM5OTMzMzA5OWE2MzY3MDlkNWY3MjM5MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9oCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgi
Ci0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NSw2ICszNCw3IEBACiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
cjsKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1
bWVudEVuY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNo
bWVudC5jcHAKaW5kZXggNWQxOWJhZDE3ZjE2YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4u
MmYzNDIzOWY0NWI5ZjFkNzA1NWExNGUyNmI2YWU5OTg4YWZjNzQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUg
QEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAg
ICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQorI2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUg
bWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2FnZURpc3Bvc2l0aW9uKEF0dGFjaG1lbnQ6OlBvcnRS
aWdodFJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogeworICAgIGlmIChyZXF1aXJlbWVudCA9PSBB
dHRhY2htZW50OjpBcXVpcmVTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBF
X01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6Rm9yd2FyZFNl
bmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EOworCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
OworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRl
bnRpZmllciwgQXR0YWNobWVudDo6UG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCisg
ICAgOiBtX3R5cGUoTWFjaFBvcnRUeXBlKQoreworICAgIG1fcG9ydC5wb3J0ID0gaWRlbnRpZmll
ci5wb3J0OworICAgIG1fcG9ydC5kaXNwb3NpdGlvbiA9IG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1
aXJlbWVudCk7CiB9CiAKLSNpZiBPUyhEQVJXSU4pCiBBdHRhY2htZW50OjpBdHRhY2htZW50KG1h
Y2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pCiAg
ICAgOiBtX3R5cGUoTWFjaFBvcnRUeXBlKQogewpAQCAtNTcsNiArNzAsMTYgQEAgdm9pZCBBdHRh
Y2htZW50OjpyZWxlYXNlKCkKIHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitB
dHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKEF0dGFjaG1lbnQ6OlBvcnRSaWdo
dFJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQoreworICAgIHJldHVybiBBdHRhY2htZW50KE1BQ0hf
UE9SVF9OVUxMLCBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpKTsKK30KKworQ29ubmVj
dGlvbjo6SWRlbnRpZmllciBBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIENvbm5lY3Rpb246OklkZW50aWZpZXIocG9ydCgpKTsKK30KICNlbmRp
ZgogCiB2b2lkIEF0dGFjaG1lbnQ6OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCmluZGV4
IGE1YWY1NTkyZDAzYjQ4Mjg2NjQ5NjgxOWQ1ZDIwYTRmNDFhYzBlOWYuLjMwY2M5NDY2Y2I2NTdl
YTJjNDUwYmNjMTZhN2U4ZWNhN2QxMDg4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXR0YWNobWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIEF0dGFjaG1l
bnRfaAogI2RlZmluZSBBdHRhY2htZW50X2gKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKwog
I2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgogI2luY2x1ZGUgPG1h
Y2gvbWFjaF90cmFwcy5oPgpAQCAtMzgsNyArNDAsOSBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7
CiAKIGNsYXNzIEF0dGFjaG1lbnQgewogcHVibGljOgotICAgIEF0dGFjaG1lbnQoKTsKKyAgICBB
dHRhY2htZW50KCkKKyAgICAgICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyAgICB7IH0KIAog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC01MSw2ICs1NSwxMyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCisgICAgZW51bSBQb3J0UmlnaHRSZXF1aXJlbWVu
dCB7CisgICAgICAgIEFxdWlyZVNlbmRSaWdodCwKKyAgICAgICAgRm9yd2FyZFNlbmRSaWdodAor
ICAgIH07CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIsIFBvcnRSaWdo
dFJlcXVpcmVtZW50KTsKKwogI2lmIE9TKERBUldJTikKICAgICBBdHRhY2htZW50KG1hY2hfcG9y
dF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pOwogICAgIEF0
dGFjaG1lbnQodm9pZCogYWRkcmVzcywgbWFjaF9tc2dfc2l6ZV90IHNpemUsIG1hY2hfbXNnX2Nv
cHlfb3B0aW9uc190IGNvcHlPcHRpb25zLCBib29sIGRlYWxsb2NhdGUpOwpAQCAtNTksNiArNzAs
OSBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwogI2VuZGlm
CiAKKyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVjdGlvbihQb3J0UmlnaHRSZXF1aXJl
bWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNp
ZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCmluZGV4IGQxOGU2NjIxYWE0OTY4NDdhMjk5ODRlYWZjY2NkY2I2ZDUxMjY4ZGUuLjg2Mjgw
MjE3MDhlM2JjYzUxMWFhMDFkZjU0OGFlYTUyZTljZmRjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIFJ1
bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNz
IEJpbmFyeVNlbWFwaG9yZTsKICAgICAKIGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CkBAIC0xMjks
MTMgKzEzMCwzNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIucG9ydCA9PSBNQUNIX1BP
UlRfTlVMTDsgfQogI2VsaWYgT1MoV0lORE9XUykKICAgICB0eXBlZGVmIEhBTkRMRSBJZGVudGlm
aWVyOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKElk
ZW50aWZpZXImIHNlcnZlcklkZW50aWZpZXIsIElkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIp
OwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVy
KSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CiAgICAgdHlwZWRlZiBpbnQgSWRlbnRpZmllcjsKLSAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVy
SXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gIWlkZW50aWZpZXI7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBy
ZXR1cm4gaWRlbnRpZmllciA9PSAtMTsgfQorCiAjZW5kaWYKIAorICAgIGNsYXNzIENvbm5lY3Rp
b25EZXNjcmlwdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElkZW50aWZpZXIgc2VydmVyUG9y
dCgpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGNsaWVudFBvcnQoKSBjb25zdDsKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29ubmVjdGlvbjsKKyNpZiBPUyhEQVJXSU4p
CisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgIHsgfQorICAgICAg
ICBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQorICAgICAgICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIHNlcnZlcklkZW50aWZp
ZXIsIElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIDogbV9zZXJ2ZXJJ
ZGVudGlmaWVyKHNlcnZlcklkZW50aWZpZXIpCisgICAgICAgICAgICAsIG1fY2xpZW50SWRlbnRp
ZmllcihjbGllbnRJZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBt
X3NlcnZlcklkZW50aWZpZXI7CisgICAgICAgIElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVy
OworI2VuZGlmCisgICAgfTsKKworICAgIHN0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rp
b24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV2ViQ29yZTo6
UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlv
bj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVudGlmaWVyLCBDbGllbnQqLCBXZWJDb3JlOjpS
dW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICB+Q29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCA2ODNi
MzRkNDg5MjkwNjBlNGIwNGVmYTI0MzQzMjJlMTdkNmI2MTk1Li5mNTk5ZWRhNzIyMDY5MzA4MjYx
ZDNlOWI1YTQ1NGY3N2NkNWFjOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGVi
MDRkNTRmNGZmZjdlNDQxN2E4ZTVhNTAwODg0MDQ5NTBmM2Q0YTguLmVlYzczZDZkNzI5MGY4ZjY2
Mzc4ODA3ODRkNWQxOTk1YzQ4MWJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUg
IlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDY3ODA4OWE3ZTZkMmRjZTViN2Fm
ZWU1ZTAyMTgxZjgwMDdmMmRmODYuLmExZDY1NTE1MjAyZWZmMDRlY2Q1MTgxYjBkNDFiYmYzMTg4
YjcwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nv
bm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFj
L0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00Nyw3ICs0NywyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNP
dXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlclBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVj
dGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9y
IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgbWFjaF9wb3J0
X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9Q
T1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0
b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsK
ICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRleCBhOGMwMjY5NGYzMDA5
ZmNkOWUxZmFlMTdiZTYxYjU3M2FhZmZmM2EwLi4yNTFhNTYxOGM5MzQ2NjRmNTUzMTZlZjllYTVm
YmZhMTEwNzU3NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTMyLDYgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBvcnRSaWdodFJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKFNv
Y2tldFR5cGUpCisgICAgLCBtX2ZpbGVEZXNjcmlwdG9yKGlkZW50aWZpZXIpCit7Cit9CisKIEF0
dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKICAg
ICA6IG1fdHlwZShNYXBwZWRNZW1vcnlUeXBlKQogICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxl
RGVzY3JpcHRvcikKQEAgLTUyLDQgKzU4LDE1IEBAIHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgp
CiAgICAgICAgIHdoaWxlIChjbG9zZShtX2ZpbGVEZXNjcmlwdG9yKSA9PSAtMSAmJiAoZXJybm8g
PT0gRUlOVFIpKSB7IH0KIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlv
bihQb3J0UmlnaHRSZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudCgtMSk7Cit9
CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU29ja2V0VHlwZSk7CisgICAgcmV0
dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCmluZGV4IGM2YTE4NmVlMTllMTdhNTFiYjI5ZjAyMTQ4MDFiYzM3YmIwODIzNTguLjgw
NWRlM2M0YmUzMzk5MTI5MTZjM2I5ZmU5NjMzMTVlOWNlYTgzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApA
QCAtNDUsNiArNDUsMTMgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjZW5kaWYKIAorLy8gT24gUU5Y
IFNPQ0tfU0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmluZWQpLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgorI2lmIGRl
ZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCisjZGVmaW5lIFNPQ0tFVF9UWVBFIFNP
Q0tfU0VRUEFDS0VUCisjZWxzZQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBtZXNzYWdl
TWF4U2l6ZSA9IDQwOTY7CkBAIC01NCw2ICs2MSwzMCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9k
eUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlclBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NlcnZlcklkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7Cisg
ICAgaW50IHNvY2tldHNbMl07CisgICAgUkVMRUFTRV9BU1NFUlQoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgIT0gLTEpOworCisgICAgLy8gQXZvaWQgZXhwb3Np
bmcgdGhlIHNlcnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3Mgb3IgdGhlIGNsaWVudCBz
b2NrZXQgdG8gYW55IGZ1dHVyZSBjaGlsZC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjsgKytpKSB7CisgICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzW2ldLCBGX1NFVEZELCBGRF9D
TE9FWEVDKSA9PSAtMSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vID09IEVJTlRS
KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Ioc29ja2V0c1swXSwg
c29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZvIHsKIHB1YmxpYzoKICAgICBNZXNz
YWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCAxNDg3YjZjNzYyNzljMjRjMmRkOTgzOTJhMTVm
YmE0ZGI3YTI1M2U1Li44MTE1NzMwZDIxNTE5ZDU1NjZhNTQ3N2RmMmMwYTVkM2U1NzE4OWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAvLyBGSVhN
RTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlmZmVyZW50IGNvbnN0YW50IG9uIHdpbmRvd3MuCiBz
dGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIAotYm9vbCBD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZl
cklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50SWRlbnRpZmllcikKK3N0YXRpYyBDb25uZWN0aW9u
RGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQogeworICAgIEhBTkRMRSBzZXJ2
ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOwogICAgIFN0cmluZyBwaXBlTmFtZTsKIAog
ICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwyMyArNjAsMTUgQEAgYm9vbCBDb25uZWN0aW9uOjpj
cmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIs
IEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUkVMRUFTRV9BU1NFUlQoc2VydmVySWRlbnRp
Zmllcik7CiAKICAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxlVyhwaXBlTmFtZS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dS
SVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7Ci0gICAg
aWYgKCFjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRl
bnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlQoY2xpZW50SWRlbnRpZmllcik7CiAKICAgICBEV09SRCBtb2RlID0gUElQRV9SRUFETU9ERV9N
RVNTQUdFOwotICAgIGlmICghOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlm
aWVyLCAmbW9kZSwgMCwgMCkpIHsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShzZXJ2ZXJJZGVudGlm
aWVyKTsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVCg6OlNldE5hbWVkUGlwZUhh
bmRsZVN0YXRlKGNsaWVudElkZW50aWZpZXIsICZtb2RlLCAwLCAwKSk7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Ioc2VydmVySWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFs
aXplKElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDFhMWFlZDZlY2M0MDZhODdmYWYxMzgzM2U3YTFm
ZGNmMWQxODkwYTQuLjI3YTZmMTZjMTYzOGU1YmYzNDIyYjUzN2I5OTcxNWI3YWY3ZmFmNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAt
NDQsMjQgKzQ0LDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUg
U09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUg
U09DS19ER1JBTQotI2VuZGlmCi0jZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTY4LDU0ICsxNTAsMTYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
Ojppbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigp
CiB7Ci0gICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0Lgot
ICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7
CisgICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25u
ZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3Ig
ZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAg
IFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBD
OjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtF
X1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBvcnQo
KSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
aW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUs
IDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4gcHJv
Y2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRz
WzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9
IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlO
VFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
RG9uJ3QgZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdl
YiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NM
T0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sx
XSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKLQotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0p
OwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblBy
b2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0LCBt
X3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pLCAwKTsKLSNlbHNlCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAgaWYgKE5ldHNjYXBlUGx1Z2luTW9k
dWxlKiBtb2R1bGUgPSBuZXRzY2FwZVBsdWdpbk1vZHVsZSgpKSB7CiAgICAgICAgIGlmICghZGlk
SGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKaW5kZXgg
ZTU2YzE1ZTkzMjVlZWM0MjU5OTZiZDcyYzA4NjMzYTlhNjc3ZGE1OS4uMzVkMjcxOTFjZjY2MWVi
MzhkYzJjZTkzNTI0MzU2ZDJkMTEzNTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCkBAIC00MCwy
NCArNDAsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAotI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwu
aD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0j
aW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NL
RVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMTksNTIgKzEwMSwxNCBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nl
cwogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9y
dC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0
ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1Bv
cnQpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlz
dGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlclBvcnQoKSk7CiAgICAg
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAot
ICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01T
R19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3Iu
Y2xpZW50UG9ydCgpLCBBdHRhY2htZW50OjpBcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCksIDApOwotI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNv
Y2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3
ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xP
RVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgc2hh
cmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nl
cy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0g
LTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAt
MSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKLSAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0g
ICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7Ci0gICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAgZGlzYWJsZVRlcm1p
bmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXggM2EzNjMzNDdmOGVjYWJj
MzUyNzVmZWMwYjY1MTNiMGEzNGMyMjg4MS4uNmI5ODY4NTBkOTY4OWM3NTY2ODQzNjZkZTY5ZDc1
YTI3M2U4NmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApAQCAtMzYsMTEgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKIHsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBT
T0NLX1NUUkVBTSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBs
dWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsKQEAg
LTU4LDE0ICs1NCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjaGFyIHNvY2tldFs1XTsKLSAgICBzbnByaW50
Zihzb2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsKKyAgICBjaGFyIHBv
cnRBcmd1bWVudFs1XTsKKyAgICBzbnByaW50Zihwb3J0QXJndW1lbnQsIHNpemVvZihwb3J0QXJn
dW1lbnQpLCAiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgQ1N0cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoOwogICAgIGlmICghbV9sYXVuY2hP
cHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBwcmVm
aXhlZEV4ZWN1dGFibGVQYXRoU3RyID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXgg
KyAnICcgKwotICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRhYmxlUGF0aC5kYXRh
KCkpICsgJyAnICsgc29ja2V0ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChwbHVnaW5QYXRoLmRh
dGEoKSk7CisgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV4ZWN1dGFibGVQYXRoLmRhdGEo
KSkgKyAnICcgKyBwb3J0QXJndW1lbnQgKyAnICcgKyBTdHJpbmc6OmZyb21VVEY4KHBsdWdpblBh
dGguZGF0YSgpKTsKICAgICAgICAgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aCA9IHByZWZpeGVkRXhl
Y3V0YWJsZVBhdGhTdHIudXRmOCgpOwogICAgIH0KICNlbmRpZgpAQCAtNzUsNyArNzEsNiBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgLy8gdGhlIGZvcmsoKSBk
b2Vzbid0IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRfdCBwaWQgPSBmb3Jr
KCk7CiAgICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgY2xvc2Uoc29j
a2V0c1sxXSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBpZiAoIXByZWZpeGVkRXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3Jy
ZWN0IGJlY2F1c2UgaXQgaW52b2tlcyB0aGUgc2hlbGwKQEAgLTg4LDEyICs4MywxMiBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICAgICAgZXhpdChF
WElUX1NVQ0NFU1MpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZXhlY2woZXhlY3V0YWJs
ZVBhdGguZGF0YSgpLCBleGVjdXRhYmxlUGF0aC5kYXRhKCksIHNvY2tldCwgcGx1Z2luUGF0aC5k
YXRhKCksIHN0YXRpY19jYXN0PGNoYXIqPigwKSk7CisgICAgICAgIGV4ZWNsKGV4ZWN1dGFibGVQ
YXRoLmRhdGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBwb3J0QXJndW1lbnQsIHBsdWdpblBh
dGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFyKj4oMCkpOwogICAgIH0gZWxzZSBpZiAocGlkID4g
MCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAg
ICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICAgICAgbV9wcm9jZXNzSWRl
bnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBw
cm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVu
Y2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1
bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDdjN2YwM2FhZGVlYjQwZDcyNGU2ODBiZjc2OTQxNjgx
ZTNhZjllODIuLmY1ZmJhYTc0MGNiNzdmOWEwMjMzMmQ0NzJhZGE4Zjc3N2EzMzVlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ1LDIxICs0NSwxMiBAQAogI2luY2x1ZGUgPHN5cy9w
cmN0bC5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJF
QU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkK
IHsKLSAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRhKTsKLSAgICBjbG9z
ZShzb2NrZXQpOwotCiAgICAgLy8gTWFrZSBjaGlsZCBwcm9jZXNzIGluaGVyaXQgcGFyZW50J3Mg
bG9jYWxlLgogICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENfQUxMLCAwKSwgVFJV
RSk7CiB9CkBAIC03NCwxNCArNjUsNyBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rp
b24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogCiB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgR1BpZCBwaWQgPSAwOwotCi0gICAgaW50
IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAs
IHNvY2tldHMpIDwgMCkgewotICAgICAgICBnX3ByaW50ZXJyKCJDcmVhdGlvbiBvZiBzb2NrZXQg
ZmFpbGVkOiAlcy5cbiIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvcmVJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3RyaW5nIGV4ZWN1dGFibGVQYXRo
LCBwbHVnaW5QYXRoOwogICAgIENTdHJpbmcgcmVhbEV4ZWN1dGFibGVQYXRoLCByZWFsUGx1Z2lu
UGF0aDsKQEAgLTk0LDEzICs3OCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19z
dHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAgICBHT3duUHRyPGdjaGFyPiBzb2Nr
ZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKSk7CiAgICAg
Y2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbEV4ZWN1
dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsxXSA9IHNvY2tldC5nZXQoKTsKICAgICBhcmd2
WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBsdWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2
WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4gfCBH
X1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2
LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4oc3Bhd25GbGFncyksIGNoaWxkU2V0dXBGdW5j
dGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkp
KSB7CkBAIC0xMDgsNyArOTMsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGNsb3NlKHNv
Y2tldHNbMF0pOworICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICBtX3By
b2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gTW9uaXRvciB0aGUgY2hpbGQgcHJvY2Vz
cywgaXQgY2FsbHMgd2FpdHBpZCB0byBwcmV2ZW50IHRoZSBjaGlsZCBwcm9jZXNzIGZyb20gYmVj
b21taW5nIGEgem9tYmllLApAQCAtMTE2LDcgKzEwMSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVy
OjpsYXVuY2hQcm9jZXNzKCkKICAgICBnX2NoaWxkX3dhdGNoX2FkZChtX3Byb2Nlc3NJZGVudGlm
aWVyLCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSk7
CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2Ug
YmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNo
KGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywg
bV9wcm9jZXNzSWRlbnRpZmllciwgc29ja2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKSkpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcAppbmRleCAzNmIzY2RiYWU3ZGFhOTFmNGEwMzNlN2Y3OGE1MjRjZTIxODAzOTNjLi5h
MGQ4ZDU3NDkyZmJhOTkxNjQ1MGYxMWFlMzUxMzFkOTAxODAyNjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJR
dC5jcHAKQEAgLTQyLDE5ICs0MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIGRlZmluZWQoUV9PU19VTklYKQot
I2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3lz
L3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5o
PgotI2VuZGlmCi0KICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3Rs
Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVk
ZSA8c3lzL3Jlc291cmNlLmg+CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03MiwxMyAr
NjMsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFj
aF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBm
b3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZp
bmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQ
QUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDEsMzYg
KzEyNSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNT
RVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0g
Y29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQog
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVu
dGlmaWVyOwotICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xp
ZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICAv
LyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKTsKKyAgICBjb25uZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKTsKKyAgICBj
bGllbnRJZGVudGlmaWVyID0gZGVzY3JpcHRvci5jbGllbnRQb3J0KCk7CiAgICAgY29tbWFuZExp
bmUgPSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisKKyNp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVy
aXRzIHRoZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNs
aWVudElkZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQp
OwotI2Vsc2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkgPDwg
IkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IERvbid0IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdoaWxl
IChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAg
ICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9
PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEg
JiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgY29tbWFuZExpbmUg
PSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKKyNlbmRpZiAvLyBPUyhEQVJX
SU4pCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgaWYgKG1fbGF1bmNoT3B0aW9u
cy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzKQpAQCAtMTkzLDE4ICsxNTksNiBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjZWxzZQogICAgIHdlYlByb2Nlc3NP
clNVSURIZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsKICNlbmRpZgotCi0jaWYgT1MoVU5JWCkg
JiYgIU9TKERBUldJTikKLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBzb2NrZXQgdG8gcG9z
c2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRS
KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGRlbGV0
ZSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAoIXdlYlByb2Nlc3NPclNVSURIZWxwZXItPndhaXRG
b3JTdGFydGVkKCkpIHsKICAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIgPDwg
Y29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBmMTViZGI0NDJmMGQwODUwNTM4MTU0NjI4MzIxZTdkYjRiNzU1MzU2Li42NTA4ZGRm
ZmMzZTUwZTc5ZTE2YmY5MDQ1MzQ3MDdjODI0ZTBiM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTA4LDEyICsxMDksNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2go
KQogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVk
LCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxl
ICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmly
c3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6
QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpB
dHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7
CiAgICAgfQogCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9y
Z2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0
byBiZSBkZWxldGVkLgpAQCAtMTUyLDE4ICsxNDgsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEMKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlv
bikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7
CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCiAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRh
a2VGaXJzdCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6
OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVw
bHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2Yjk3OTcyOWYzODU1YTZjMGVlZDMzMmE0NzdlN2UzY2E2NjA0NGI0
Li5lNzY1MjZiYjEwNDczOTEzZjQwOTFlZTU3ZGQzYTBkMzk5YTBiMzRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTMzLDE0ICsxMzQs
NyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVk
IG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4K
ICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAg
ICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQo
Q29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsK
LSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChDb3Jl
SVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVs
bENvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZhbHNl
KTsKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0VtcHR5
KCkpCkBAIC0yMjksMjAgKzIyMywxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogI2VuZGlm
CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9v
bCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6
OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24g
cmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNl
bmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbik7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChj
b25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIo
KSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6ZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDBlOWE2YTQ0M2M0YjNlZGNjZmEyZjlkYjUzMzliOTQ1ZGFjODc4YzEuLmM0N2YxYzZlMmM2
MjZhODllYmRmMmNlNzQzNTZiMmZiNjEyOWI2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwCkBAIC03NSwxNSArNzUsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICBy
ZXR1cm4gMDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVj
dGlvbklkZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVjdGlvbklkZW50
aWZpZXIgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBSZWZQdHI8UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSwgY29u
bmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwog
ICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjYjA0
MzY3MDE1NTVmMTEyMGQ4NTNjNDRlZTIyMmEwYmUyMTdhZGRlLi5hMDJlZDE5YzljMGM4NTdiOThj
ZjgwNWU0NmY0OGNkZTI4YTBmMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTM0NywxMyArMzQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCk7CiAgICAgaWYgKENvcmVJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVj
dGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotI2VuZGlmCisKICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190948</attachid>
            <date>2013-03-01 05:51:20 -0800</date>
            <delta_ts>2013-03-07 02:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130301144729.patch</filename>
            <type>text/plain</type>
            <size>43791</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRhZTE1Yzc3OTgwOGUy
NTQ5MGZmMTMwYTdmZGUxY2MyZjM4NzQ3YS4uNzY4YTBmMWM1M2Q3MTQyYWFjZmE4YmIzYzhhNDMw
Y2U2MTMwOTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlv
bik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6
OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAg
ICAoQ29yZUlQQyk6CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgorICAgICAg
ICBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAgICAgICAo
Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBWZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3Ry
YWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rpb25EZXNjcmlwdG9yKToKKyAgICAgICAgQ3Jl
YXRlcyB0aGUgT1Mgc3BlY2lmaWMgSVBDIGNoYW5uZWwuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJQb3J0KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQpOgorICAgICAg
ICBUaGVzZSBhcmUgdGhlIHNhbWUgb24gTWFjLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToKKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
OjpBdHRhY2htZW50KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6QXR0
YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6
Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBQb3J0UmlnaHRGbGFncyBpcyBub3QgcmVz
cGVjdGVkIGhlcmUgc2luY2UgdGhlIGNvbmNlcHQgb2YgbW92aW5nIHNvY2tldCByaWdodHMKKyAg
ICAgICAgYWNyb3NzIHByb2Vzc2VzIGlzIGhhbmRsZWQgdmlhIGNvbnRyb2wgbWVzc2FnZXMgaW4g
Q29ubmVjdGlvblVuaXguY3BwLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpzZXJ2ZXJQb3J0KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAo
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQpOgor
ICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToK
KyAgICAgICAgQ29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBzb2NrZXQgY3JlYXRpb24uIEkgdHVy
bmVkIGVycm9yIGhhbmRsaW5nIHRvIFJFTEVBU0VfQVNTRVJUJ3MKKyAgICAgICAgc2luY2UgZXJy
b3JzIHdhcyBuZXZlciBoYW5kbGVkIGFueXdheSBhbmQgdGhlcmUgaXMgbm8gZ29vZCB3YXkgdG8g
ZG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAgICBJbXBs
ZW1lbnRlZCB0aGUgbmV3IGludGVyZmFjZSBiYXNlZCBvbiBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJ
ZGVudGlmaWVycy4gSSByZW1vdmVkIHRoZSBib29sCisgICAgICAgIHJldHVybiB2YWx1ZSBhbmQg
dXNlZCBSRUxFQVNFX0FTU0VSVCBmb3IgZXJyb3IgaGFuZGxpbmcuCisKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9j
ZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIENoYW5nZSBwbGF0Zm9y
bSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAg
KiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFj
ZS4gUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBmcm9tIHRoZSBjaGlsZCBzaWRlCisgICAgICAgIG9m
IHRoZSBmb3JrIGJlY2F1c2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQgYXV0b21hdGljYWxseS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3Nl
IGNhbGwgc2luY2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBV
c2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorCiAyMDEzLTAyLTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgQlVJTEQgRklYIChyMTQ0MjIxKTogU2V0U21hcnRJbnNlcnREZWxldGVF
bmFibGVkIHNob3VsZCBiZSB3cmFwcGVkIGluIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhY2VmY2E2ODAw
NGYwYzVhN2ZlZmJkMTFlODZlNWNlNTUwNzJjNTA4Li5lYzkwY2NmMTMzMTNhNWE0MDNhMzZjODdk
OGJmMWUwMWI0OTU4YWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNzEsMjAgKzE3MSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
KQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5n
IHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxs
b2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5p
bmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBh
IGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRh
Y2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQp
OworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSwgQXR0
YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5
YzU1YjQyYmQ3MjZlMC4uOTg2NWRlMzc5ODc3MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVk
NTA3MWU5YTQ4ZGVlMWE2MjYxNTkxZjExMDliNzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQw
YTFjODc3NDc1MmFjMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVu
dERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBl
VHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7
CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3Mg
QXJndW1lbnREZWNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRleCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRh
YzI3MWI5MzE5YzE1Li5lMmE3ZmZkN2Q4ZTRjMzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29k
ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
QXJndW1lbnRFbmNvZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVy
LmgKaW5kZXggYWU1ZDc0YTdmM2NiZGVlOGVmM2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFj
MDdmMmM5OTMzMzA5OWE2MzY3MDlkNWY3MjM5MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBA
CiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9oCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgi
Ci0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1R5cGVUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NSw2ICszNCw3IEBACiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
cjsKK2NsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1
bWVudEVuY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNo
bWVudC5jcHAKaW5kZXggNWQxOWJhZDE3ZjE2YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4u
MmYzNDIzOWY0NWI5ZjFkNzA1NWExNGUyNmI2YWU5OTg4YWZjNzQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUg
QEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAg
ICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQorI2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUg
bWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2FnZURpc3Bvc2l0aW9uKEF0dGFjaG1lbnQ6OlBvcnRS
aWdodFJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogeworICAgIGlmIChyZXF1aXJlbWVudCA9PSBB
dHRhY2htZW50OjpBcXVpcmVTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBF
X01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6Rm9yd2FyZFNl
bmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EOworCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
OworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRl
bnRpZmllciwgQXR0YWNobWVudDo6UG9ydFJpZ2h0UmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCisg
ICAgOiBtX3R5cGUoTWFjaFBvcnRUeXBlKQoreworICAgIG1fcG9ydC5wb3J0ID0gaWRlbnRpZmll
ci5wb3J0OworICAgIG1fcG9ydC5kaXNwb3NpdGlvbiA9IG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1
aXJlbWVudCk7CiB9CiAKLSNpZiBPUyhEQVJXSU4pCiBBdHRhY2htZW50OjpBdHRhY2htZW50KG1h
Y2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pCiAg
ICAgOiBtX3R5cGUoTWFjaFBvcnRUeXBlKQogewpAQCAtNTcsNiArNzAsMTYgQEAgdm9pZCBBdHRh
Y2htZW50OjpyZWxlYXNlKCkKIHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitB
dHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKEF0dGFjaG1lbnQ6OlBvcnRSaWdo
dFJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQoreworICAgIHJldHVybiBBdHRhY2htZW50KE1BQ0hf
UE9SVF9OVUxMLCBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpKTsKK30KKworQ29ubmVj
dGlvbjo6SWRlbnRpZmllciBBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIENvbm5lY3Rpb246OklkZW50aWZpZXIocG9ydCgpKTsKK30KICNlbmRp
ZgogCiB2b2lkIEF0dGFjaG1lbnQ6OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1l
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCmluZGV4
IGE1YWY1NTkyZDAzYjQ4Mjg2NjQ5NjgxOWQ1ZDIwYTRmNDFhYzBlOWYuLjMwY2M5NDY2Y2I2NTdl
YTJjNDUwYmNjMTZhN2U4ZWNhN2QxMDg4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXR0YWNobWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIEF0dGFjaG1l
bnRfaAogI2RlZmluZSBBdHRhY2htZW50X2gKIAorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKwog
I2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgogI2luY2x1ZGUgPG1h
Y2gvbWFjaF90cmFwcy5oPgpAQCAtMzgsNyArNDAsOSBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7
CiAKIGNsYXNzIEF0dGFjaG1lbnQgewogcHVibGljOgotICAgIEF0dGFjaG1lbnQoKTsKKyAgICBB
dHRhY2htZW50KCkKKyAgICAgICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyAgICB7IH0KIAog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC01MSw2ICs1NSwxMyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCisgICAgZW51bSBQb3J0UmlnaHRSZXF1aXJlbWVu
dCB7CisgICAgICAgIEFxdWlyZVNlbmRSaWdodCwKKyAgICAgICAgRm9yd2FyZFNlbmRSaWdodAor
ICAgIH07CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIsIFBvcnRSaWdo
dFJlcXVpcmVtZW50KTsKKwogI2lmIE9TKERBUldJTikKICAgICBBdHRhY2htZW50KG1hY2hfcG9y
dF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pOwogICAgIEF0
dGFjaG1lbnQodm9pZCogYWRkcmVzcywgbWFjaF9tc2dfc2l6ZV90IHNpemUsIG1hY2hfbXNnX2Nv
cHlfb3B0aW9uc190IGNvcHlPcHRpb25zLCBib29sIGRlYWxsb2NhdGUpOwpAQCAtNTksNiArNzAs
OSBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwogI2VuZGlm
CiAKKyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVjdGlvbihQb3J0UmlnaHRSZXF1aXJl
bWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNp
ZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCmluZGV4IGQxOGU2NjIxYWE0OTY4NDdhMjk5ODRlYWZjY2NkY2I2ZDUxMjY4ZGUuLjg2Mjgw
MjE3MDhlM2JjYzUxMWFhMDFkZjU0OGFlYTUyZTljZmRjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIFJ1
bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNz
IEJpbmFyeVNlbWFwaG9yZTsKICAgICAKIGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CkBAIC0xMjks
MTMgKzEzMCwzNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIucG9ydCA9PSBNQUNIX1BP
UlRfTlVMTDsgfQogI2VsaWYgT1MoV0lORE9XUykKICAgICB0eXBlZGVmIEhBTkRMRSBJZGVudGlm
aWVyOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZVNlcnZlckFuZENsaWVudElkZW50aWZpZXJzKElk
ZW50aWZpZXImIHNlcnZlcklkZW50aWZpZXIsIElkZW50aWZpZXImIGNsaWVudElkZW50aWZpZXIp
OwogICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVy
KSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CiAgICAgdHlwZWRlZiBpbnQgSWRlbnRpZmllcjsKLSAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVy
SXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gIWlkZW50aWZpZXI7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBy
ZXR1cm4gaWRlbnRpZmllciA9PSAtMTsgfQorCiAjZW5kaWYKIAorICAgIGNsYXNzIENvbm5lY3Rp
b25EZXNjcmlwdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElkZW50aWZpZXIgc2VydmVyUG9y
dCgpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGNsaWVudFBvcnQoKSBjb25zdDsKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29ubmVjdGlvbjsKKyNpZiBPUyhEQVJXSU4p
CisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgIHsgfQorICAgICAg
ICBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQorICAgICAgICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIHNlcnZlcklkZW50aWZp
ZXIsIElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIDogbV9zZXJ2ZXJJ
ZGVudGlmaWVyKHNlcnZlcklkZW50aWZpZXIpCisgICAgICAgICAgICAsIG1fY2xpZW50SWRlbnRp
ZmllcihjbGllbnRJZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBt
X3NlcnZlcklkZW50aWZpZXI7CisgICAgICAgIElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVy
OworI2VuZGlmCisgICAgfTsKKworICAgIHN0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rp
b24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV2ViQ29yZTo6
UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlv
bj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVudGlmaWVyLCBDbGllbnQqLCBXZWJDb3JlOjpS
dW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICB+Q29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCA2ODNi
MzRkNDg5MjkwNjBlNGIwNGVmYTI0MzQzMjJlMTdkNmI2MTk1Li5mNTk5ZWRhNzIyMDY5MzA4MjYx
ZDNlOWI1YTQ1NGY3N2NkNWFjOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGVi
MDRkNTRmNGZmZjdlNDQxN2E4ZTVhNTAwODg0MDQ5NTBmM2Q0YTguLmVlYzczZDZkNzI5MGY4ZjY2
Mzc4ODA3ODRkNWQxOTk1YzQ4MWJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUg
IlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDY3ODA4OWE3ZTZkMmRjZTViN2Fm
ZWU1ZTAyMTgxZjgwMDdmMmRmODYuLmExZDY1NTE1MjAyZWZmMDRlY2Q1MTgxYjBkNDFiYmYzMTg4
YjcwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nv
bm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFj
L0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00Nyw3ICs0NywyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNP
dXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlclBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVj
dGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9y
IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgbWFjaF9wb3J0
X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9Q
T1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0
b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsK
ICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRleCBhOGMwMjY5NGYzMDA5
ZmNkOWUxZmFlMTdiZTYxYjU3M2FhZmZmM2EwLi4yNTFhNTYxOGM5MzQ2NjRmNTUzMTZlZjllYTVm
YmZhMTEwNzU3NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTMyLDYgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFBvcnRSaWdodFJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKFNv
Y2tldFR5cGUpCisgICAgLCBtX2ZpbGVEZXNjcmlwdG9yKGlkZW50aWZpZXIpCit7Cit9CisKIEF0
dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKICAg
ICA6IG1fdHlwZShNYXBwZWRNZW1vcnlUeXBlKQogICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxl
RGVzY3JpcHRvcikKQEAgLTUyLDQgKzU4LDE1IEBAIHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgp
CiAgICAgICAgIHdoaWxlIChjbG9zZShtX2ZpbGVEZXNjcmlwdG9yKSA9PSAtMSAmJiAoZXJybm8g
PT0gRUlOVFIpKSB7IH0KIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlv
bihQb3J0UmlnaHRSZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudCgtMSk7Cit9
CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU29ja2V0VHlwZSk7CisgICAgcmV0
dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCmluZGV4IGM2YTE4NmVlMTllMTdhNTFiYjI5ZjAyMTQ4MDFiYzM3YmIwODIzNTguLjgw
NWRlM2M0YmUzMzk5MTI5MTZjM2I5ZmU5NjMzMTVlOWNlYTgzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApA
QCAtNDUsNiArNDUsMTMgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjZW5kaWYKIAorLy8gT24gUU5Y
IFNPQ0tfU0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmluZWQpLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgorI2lmIGRl
ZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCisjZGVmaW5lIFNPQ0tFVF9UWVBFIFNP
Q0tfU0VRUEFDS0VUCisjZWxzZQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBtZXNzYWdl
TWF4U2l6ZSA9IDQwOTY7CkBAIC01NCw2ICs2MSwzMCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9k
eUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlclBvcnQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NlcnZlcklkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudFBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7Cisg
ICAgaW50IHNvY2tldHNbMl07CisgICAgUkVMRUFTRV9BU1NFUlQoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgIT0gLTEpOworCisgICAgLy8gQXZvaWQgZXhwb3Np
bmcgdGhlIHNlcnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3Mgb3IgdGhlIGNsaWVudCBz
b2NrZXQgdG8gYW55IGZ1dHVyZSBjaGlsZC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjsgKytpKSB7CisgICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzW2ldLCBGX1NFVEZELCBGRF9D
TE9FWEVDKSA9PSAtMSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vID09IEVJTlRS
KTsKKyAgICB9CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Ioc29ja2V0c1swXSwg
c29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZvIHsKIHB1YmxpYzoKICAgICBNZXNz
YWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCAxNDg3YjZjNzYyNzljMjRjMmRkOTgzOTJhMTVm
YmE0ZGI3YTI1M2U1Li44MTE1NzMwZDIxNTE5ZDU1NjZhNTQ3N2RmMmMwYTVkM2U1NzE4OWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAvLyBGSVhN
RTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlmZmVyZW50IGNvbnN0YW50IG9uIHdpbmRvd3MuCiBz
dGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIAotYm9vbCBD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZl
cklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50SWRlbnRpZmllcikKK3N0YXRpYyBDb25uZWN0aW9u
RGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQogeworICAgIEhBTkRMRSBzZXJ2
ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOwogICAgIFN0cmluZyBwaXBlTmFtZTsKIAog
ICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwyMyArNjAsMTUgQEAgYm9vbCBDb25uZWN0aW9uOjpj
cmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIs
IEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUkVMRUFTRV9BU1NFUlQoc2VydmVySWRlbnRp
Zmllcik7CiAKICAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVGaWxlVyhwaXBlTmFtZS5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dS
SVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgMCk7Ci0gICAg
aWYgKCFjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRl
bnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlQoY2xpZW50SWRlbnRpZmllcik7CiAKICAgICBEV09SRCBtb2RlID0gUElQRV9SRUFETU9ERV9N
RVNTQUdFOwotICAgIGlmICghOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlm
aWVyLCAmbW9kZSwgMCwgMCkpIHsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShzZXJ2ZXJJZGVudGlm
aWVyKTsKLSAgICAgICAgOjpDbG9zZUhhbmRsZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVCg6OlNldE5hbWVkUGlwZUhh
bmRsZVN0YXRlKGNsaWVudElkZW50aWZpZXIsICZtb2RlLCAwLCAwKSk7CiAKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Ioc2VydmVySWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFs
aXplKElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCmluZGV4IDFhMWFlZDZlY2M0MDZhODdmYWYxMzgzM2U3YTFm
ZGNmMWQxODkwYTQuLjI3YTZmMTZjMTYzOGU1YmYzNDIyYjUzN2I5OTcxNWI3YWY3ZmFmNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAt
NDQsMjQgKzQ0LDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUg
U09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2Rl
ZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUg
U09DS19ER1JBTQotI2VuZGlmCi0jZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMTY4LDU0ICsxNTAsMTYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
Ojppbml0aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXIKIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigp
CiB7Ci0gICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0Lgot
ICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7
CisgICAgYm9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25u
ZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3Ig
ZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAg
IFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpOwogICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBD
OjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtF
X1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudFBvcnQo
KSwgQXR0YWNobWVudDo6QXF1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
aW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUs
IDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4gcHJv
Y2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRz
WzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9
IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlO
VFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8g
RG9uJ3QgZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdl
YiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NM
T0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0c1sx
XSk7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKLQotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0p
OwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblBy
b2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50U29ja2V0LCBt
X3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pLCAwKTsKLSNlbHNlCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAgaWYgKE5ldHNjYXBlUGx1Z2luTW9k
dWxlKiBtb2R1bGUgPSBuZXRzY2FwZVBsdWdpbk1vZHVsZSgpKSB7CiAgICAgICAgIGlmICghZGlk
SGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKaW5kZXgg
ZTU2YzE1ZTkzMjVlZWM0MjU5OTZiZDcyYzA4NjMzYTlhNjc3ZGE1OS4uMzVkMjcxOTFjZjY2MWVi
MzhkYzJjZTkzNTI0MzU2ZDJkMTEzNTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCkBAIC00MCwy
NCArNDAsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAotI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwu
aD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0j
aW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NL
RVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMTksNTIgKzEwMSwxNCBAQCB2b2lkIFNoYXJlZFdvcmtlclByb2Nl
c3M6OmluaXRpYWxpemVTaGFyZWRXb3JrZXJQcm9jZXNzKGNvbnN0IFNoYXJlZFdvcmtlclByb2Nl
cwogCiB2b2lkIFNoYXJlZFdvcmtlclByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9y
dC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0
ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1Bv
cnQpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlz
dGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlclBvcnQoKSk7CiAgICAg
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAot
ICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01T
R19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3Iu
Y2xpZW50UG9ydCgpLCBBdHRhY2htZW50OjpBcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCksIDApOwotI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNv
Y2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHRoZSB3
ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRfQ0xP
RVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgc2hh
cmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nl
cy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0g
LTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAt
MSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKLSAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0g
ICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7Ci0gICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAgZGlzYWJsZVRlcm1p
bmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXggM2EzNjMzNDdmOGVjYWJj
MzUyNzVmZWMwYjY1MTNiMGEzNGMyMjg4MS4uNmI5ODY4NTBkOTY4OWM3NTY2ODQzNjZkZTY5ZDc1
YTI3M2U4NmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApAQCAtMzYsMTEgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKIHsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBT
T0NLX1NUUkVBTSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBs
dWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsKQEAg
LTU4LDE0ICs1NCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjaGFyIHNvY2tldFs1XTsKLSAgICBzbnByaW50
Zihzb2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsKKyAgICBjaGFyIHBv
cnRBcmd1bWVudFs1XTsKKyAgICBzbnByaW50Zihwb3J0QXJndW1lbnQsIHNpemVvZihwb3J0QXJn
dW1lbnQpLCAiJWQiLCBkZXNjcmlwdG9yLmNsaWVudFBvcnQoKSk7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgQ1N0cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoOwogICAgIGlmICghbV9sYXVuY2hP
cHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBwcmVm
aXhlZEV4ZWN1dGFibGVQYXRoU3RyID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXgg
KyAnICcgKwotICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRhYmxlUGF0aC5kYXRh
KCkpICsgJyAnICsgc29ja2V0ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChwbHVnaW5QYXRoLmRh
dGEoKSk7CisgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV4ZWN1dGFibGVQYXRoLmRhdGEo
KSkgKyAnICcgKyBwb3J0QXJndW1lbnQgKyAnICcgKyBTdHJpbmc6OmZyb21VVEY4KHBsdWdpblBh
dGguZGF0YSgpKTsKICAgICAgICAgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aCA9IHByZWZpeGVkRXhl
Y3V0YWJsZVBhdGhTdHIudXRmOCgpOwogICAgIH0KICNlbmRpZgpAQCAtNzUsNyArNzEsNiBAQCB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgLy8gdGhlIGZvcmsoKSBk
b2Vzbid0IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRfdCBwaWQgPSBmb3Jr
KCk7CiAgICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgY2xvc2Uoc29j
a2V0c1sxXSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBpZiAoIXByZWZpeGVkRXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3Jy
ZWN0IGJlY2F1c2UgaXQgaW52b2tlcyB0aGUgc2hlbGwKQEAgLTg4LDEyICs4MywxMiBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICAgICAgZXhpdChF
WElUX1NVQ0NFU1MpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZXhlY2woZXhlY3V0YWJs
ZVBhdGguZGF0YSgpLCBleGVjdXRhYmxlUGF0aC5kYXRhKCksIHNvY2tldCwgcGx1Z2luUGF0aC5k
YXRhKCksIHN0YXRpY19jYXN0PGNoYXIqPigwKSk7CisgICAgICAgIGV4ZWNsKGV4ZWN1dGFibGVQ
YXRoLmRhdGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBwb3J0QXJndW1lbnQsIHBsdWdpblBh
dGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFyKj4oMCkpOwogICAgIH0gZWxzZSBpZiAocGlkID4g
MCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAg
ICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICAgICAgbV9wcm9jZXNzSWRl
bnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBw
cm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgIFJ1bkxv
b3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVu
Y2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVuTG9vcDo6
bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJQb3J0KCkpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1
bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDdjN2YwM2FhZGVlYjQwZDcyNGU2ODBiZjc2OTQxNjgx
ZTNhZjllODIuLmY1ZmJhYTc0MGNiNzdmOWEwMjMzMmQ0NzJhZGE4Zjc3N2EzMzVlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1By
b2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ1LDIxICs0NSwxMiBAQAogI2luY2x1ZGUgPHN5cy9w
cmN0bC5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJF
QU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlvbihncG9pbnRlciB1c2VyRGF0YSkK
IHsKLSAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5UKHVzZXJEYXRhKTsKLSAgICBjbG9z
ZShzb2NrZXQpOwotCiAgICAgLy8gTWFrZSBjaGlsZCBwcm9jZXNzIGluaGVyaXQgcGFyZW50J3Mg
bG9jYWxlLgogICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENfQUxMLCAwKSwgVFJV
RSk7CiB9CkBAIC03NCwxNCArNjUsNyBAQCBzdGF0aWMgdm9pZCBjaGlsZEZpbmlzaGVkRnVuY3Rp
b24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJEYXRhKQogCiB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgR1BpZCBwaWQgPSAwOwotCi0gICAgaW50
IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAs
IHNvY2tldHMpIDwgMCkgewotICAgICAgICBnX3ByaW50ZXJyKCJDcmVhdGlvbiBvZiBzb2NrZXQg
ZmFpbGVkOiAlcy5cbiIsIGdfc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvcmVJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3RyaW5nIGV4ZWN1dGFibGVQYXRo
LCBwbHVnaW5QYXRoOwogICAgIENTdHJpbmcgcmVhbEV4ZWN1dGFibGVQYXRoLCByZWFsUGx1Z2lu
UGF0aDsKQEAgLTk0LDEzICs3OCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19z
dHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAgICBHT3duUHRyPGdjaGFyPiBzb2Nr
ZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKSk7CiAgICAg
Y2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbEV4ZWN1
dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsxXSA9IHNvY2tldC5nZXQoKTsKICAgICBhcmd2
WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBsdWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2
WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4gfCBH
X1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwogICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2
LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4oc3Bhd25GbGFncyksIGNoaWxkU2V0dXBGdW5j
dGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkp
KSB7CkBAIC0xMDgsNyArOTMsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGNsb3NlKHNv
Y2tldHNbMF0pOworICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50UG9ydCgpKTsKICAgICBtX3By
b2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gTW9uaXRvciB0aGUgY2hpbGQgcHJvY2Vz
cywgaXQgY2FsbHMgd2FpdHBpZCB0byBwcmV2ZW50IHRoZSBjaGlsZCBwcm9jZXNzIGZyb20gYmVj
b21taW5nIGEgem9tYmllLApAQCAtMTE2LDcgKzEwMSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVy
OjpsYXVuY2hQcm9jZXNzKCkKICAgICBnX2NoaWxkX3dhdGNoX2FkZChtX3Byb2Nlc3NJZGVudGlm
aWVyLCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSk7
CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2Ug
YmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNo
KGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywg
bV9wcm9jZXNzSWRlbnRpZmllciwgc29ja2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKSkpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hl
clF0LmNwcAppbmRleCAzNmIzY2RiYWU3ZGFhOTFmNGEwMzNlN2Y3OGE1MjRjZTIxODAzOTNjLi5h
MGQ4ZDU3NDkyZmJhOTkxNjQ1MGYxMWFlMzUxMzFkOTAxODAyNjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJR
dC5jcHAKQEAgLTQyLDE5ICs0MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIGRlZmluZWQoUV9PU19VTklYKQot
I2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3lz
L3Jlc291cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5o
PgotI2VuZGlmCi0KICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3Rs
Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVk
ZSA8c3lzL3Jlc291cmNlLmg+CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03MiwxMyAr
NjMsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFj
aF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBm
b3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZp
bmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQ
QUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDEsMzYg
KzEyNSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNT
RVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0g
Y29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQog
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVu
dGlmaWVyOwotICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xp
ZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICAv
LyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKTsKKyAgICBjb25uZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlclBvcnQoKTsKKyAgICBj
bGllbnRJZGVudGlmaWVyID0gZGVzY3JpcHRvci5jbGllbnRQb3J0KCk7CiAgICAgY29tbWFuZExp
bmUgPSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisKKyNp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVy
aXRzIHRoZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNs
aWVudElkZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQp
OwotI2Vsc2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkgPDwg
IkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IERvbid0IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdoaWxl
IChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAg
ICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9
PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEg
JiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgY29tbWFuZExpbmUg
PSBjb21tYW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKKyNlbmRpZiAvLyBPUyhEQVJX
SU4pCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgaWYgKG1fbGF1bmNoT3B0aW9u
cy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzKQpAQCAtMTkzLDE4ICsxNTksNiBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjZWxzZQogICAgIHdlYlByb2Nlc3NP
clNVSURIZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsKICNlbmRpZgotCi0jaWYgT1MoVU5JWCkg
JiYgIU9TKERBUldJTikKLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBzb2NrZXQgdG8gcG9z
c2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRS
KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGRlbGV0
ZSB3ZWJQcm9jZXNzT3JTVUlESGVscGVyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAoIXdlYlByb2Nlc3NPclNVSURIZWxwZXItPndhaXRG
b3JTdGFydGVkKCkpIHsKICAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIgPDwg
Y29tbWFuZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBmMTViZGI0NDJmMGQwODUwNTM4MTU0NjI4MzIxZTdkYjRiNzU1MzU2Li40YjMxYjgw
ODIyMTUxNzA2ZjViOGFhZmUwNjVjNGU4NmRmZTdiYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTA4LDEyICsxMDksNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2go
KQogICAgIC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVk
LCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxl
ICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmly
c3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6
QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpB
dHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2Vu
ZFJpZ2h0KSk7CiAgICAgfQogCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFn
ZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBj
YXVzZSB1cyB0byBiZSBkZWxldGVkLgpAQCAtMTUyLDE4ICsxNDgsMTQgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEMKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBj
b25uZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYg
Y29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlz
RW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVw
bHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25S
ZXBsaWVzLnRha2VGaXJzdCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5k
KENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlm
CisgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rp
b25JZGVudGlmaWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxl
bmdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2Yjk3OTcyOWYzODU1YTZjMGVlZDMzMmE0NzdlN2Uz
Y2E2NjA0NGI0Li5lNzY1MjZiYjEwNDczOTEzZjQwOTFlZTU3ZGQzYTBkMzk5YTBiMzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTMz
LDE0ICsxMzQsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNo
ZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2
ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWln
aHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHko
KSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVw
bHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCks
IGZhbHNlKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNo
bWVudDo6bnVsbENvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdo
dCksIGZhbHNlKTsKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGll
cy5pc0VtcHR5KCkpCkBAIC0yMjksMjAgKzIyMywxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rp
bwogI2VuZGlmCiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRp
ZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNv
bm5lY3Rpb24gcmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5n
Q29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAg
cmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbik7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBs
eS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklk
ZW50aWZpZXIoKSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblBy
b2Nlc3NQcm94eTo6ZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0
ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDBlOWE2YTQ0M2M0YjNlZGNjZmEyZjlkYjUzMzliOTQ1ZGFjODc4YzEuLmM0
N2YxYzZlMmM2MjZhODllYmRmMmNlNzQzNTZiMmZiNjEyOWI2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC03NSwxNSArNzUsOSBAQCBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm4gMDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNv
ZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVj
dGlvbklkZW50aWZpZXIgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBS
ZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBwcm9jZXNz
VHlwZSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBjYjA0MzY3MDE1NTVmMTEyMGQ4NTNjNDRlZTIyMmEwYmUyMTdhZGRlLi5mOGU3MmQ0M2Vk
NGE2MmMyY2ZkNmQwZmU3OGQwMmJlZTBkNGNlMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM0NywxMyArMzQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0o
TUFDKQotICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpOwogICAgIGlmIChDb3JlSVBD
OjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgor
CiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191959</attachid>
            <date>2013-03-07 02:39:43 -0800</date>
            <delta_ts>2013-07-03 15:01:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130307113540.patch</filename>
            <type>text/plain</type>
            <size>43899</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjY1YzAwZmRhOTZmYTAw
MTg3YTI0ZWQ0ZDUxMGQwYjZmNGE2YWYxYi4uYTBiNTE1MjhiYjRmMmFhMDZkYzM3ZmZlMTI4Mjdj
MTNkN2UxZDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAxMy0wMi0yOCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0
b3Jpbmc6IHVuaWZ5IElQQyBjb25uZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5
NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQg
cmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAu
IEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24g
YW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4g
dGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBh
bmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNo
YW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2gg
YWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXgg
ZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lm
aWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIElu
Y2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxk
IGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBp
dCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUg
aXQgaXMgdXNlZC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHA6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlv
bik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6
OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAg
ICAoQ29yZUlQQyk6CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgorICAgICAg
ICBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAgICAgICAo
Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBWZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3Ry
YWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rpb25EZXNjcmlwdG9yKToKKyAgICAgICAgQ3Jl
YXRlcyB0aGUgT1Mgc3BlY2lmaWMgSVBDIGNoYW5uZWwuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAo
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZp
ZXIpOgorICAgICAgICBUaGVzZSBhcmUgdGhlIHNhbWUgb24gTWFjLgorICAgICAgICAoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToKKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHA6CisgICAgICAgIChDb3JlSVBD
OjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAo
Q29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6
QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBQb3J0UmlnaHRGbGFn
cyBpcyBub3QgcmVzcGVjdGVkIGhlcmUgc2luY2UgdGhlIGNvbmNlcHQgb2YgbW92aW5nIHNvY2tl
dCByaWdodHMKKyAgICAgICAgYWNyb3NzIHByb2Vzc2VzIGlzIGhhbmRsZWQgdmlhIGNvbnRyb2wg
bWVzc2FnZXMgaW4gQ29ubmVjdGlvblVuaXguY3BwLgorCisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENv
cmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3I6OmNsaWVudElkZW50aWZpZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlUGxhdGZvcm1Db25uZWN0aW9uKToKKyAgICAgICAgQ29tbW9uIGltcGxlbWVudGF0aW9uIGZv
ciBzb2NrZXQgY3JlYXRpb24uIEkgdHVybmVkIGVycm9yIGhhbmRsaW5nIHRvIFJFTEVBU0VfQVNT
RVJUJ3MKKyAgICAgICAgc2luY2UgZXJyb3JzIHdhcyBuZXZlciBoYW5kbGVkIGFueXdheSBhbmQg
dGhlcmUgaXMgbm8gZ29vZCB3YXkgdG8gZG8uCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy93
aW4vQ29ubmVjdGlvbldpbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24pOgorICAgICAgICBJbXBsZW1lbnRlZCB0aGUgbmV3IGludGVyZmFjZSBiYXNlZCBv
biBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycy4gSSByZW1vdmVkIHRoZSBib29sCisg
ICAgICAgIHJldHVybiB2YWx1ZSBhbmQgdXNlZCBSRUxFQVNFX0FTU0VSVCBmb3IgZXJyb3IgaGFu
ZGxpbmcuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6
CisgICAgICAgIENoYW5nZSBwbGF0Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUg
bmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtl
clByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAg
ICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4gUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBmcm9tIHRo
ZSBjaGlsZCBzaWRlCisgICAgICAgIG9mIHRoZSBmb3JrIGJlY2F1c2UgRkRfQ0xPRVhFQyBoYW5k
bGVzIHRoYXQgYXV0b21hdGljYWxseS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5j
dGlvbik6IFJlbW92ZWQgdGhlIGNsb3NlIGNhbGwgc2luY2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRo
YXQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVz
ZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJv
Y2Vzc0xhdW5jaGVyUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9M
YXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVy
ZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBp
bnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhl
IG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCiAyMDEzLTAyLTI4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG9uJ3QgaW5zdGFsbCB1bnVzZWQgWFBD
U2VydmljZXMgb24gTGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFjZWZjYTY4MDA0ZjBjNWE3ZmVmYmQxMWU4NmU1Y2U1NTA3
MmM1MDguLmM5MGI5MGYxNzUxNTdkMWE1MGFlNWU0MGE4MTRhYWE3YmVmYTE2YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE3
MSwyMCArMTcxLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9u
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKIHsKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBs
aXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBN
QUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgIHVzaW5nIG5hbWVz
cGFjZSBDb3JlSVBDOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0g
ICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9uID0gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVz
Y3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9u
KCk7CisgICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9u
ID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZl
cklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5l
Y3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChs
aXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBj
bGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1
aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHAKaW5kZXggMjBiYmU3ODYyNjNjNjVkNjFlZjU4NGZlM2Q5YzU1YjQyYmQ3MjZl
MC4uOTg2NWRlMzc5ODc3MDg4YzZkN2JiNWJhMzI2MmRhZWU0MmM0YjQ1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RGVj
b2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAppbmRleCAyMWU4MzU4ZGVkNTA3MWU5YTQ4ZGVl
MWE2MjYxNTkxZjExMDliNzVjLi5iZmU0Yjk5YTFlNzU3YjU5MTYzNDZjYTQwYTFjODc3NDc1MmFj
MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRE
ZWNvZGVyLmgKQEAgLTI3LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVudERlY29kZXJfaAog
CiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0
dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogICAgIAogY2xhc3MgQXJndW1lbnREZWNv
ZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAppbmRleCBhZTJiMWZiODIyYWMyZmI2ZjRlNTdmMjlhODRhYzI3MWI5MzE5YzE1
Li5lMmE3ZmZkN2Q4ZTRjMzQ1NGUxYWMyZTI4OGE2OGEwM2VmMDJkMGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKaW5kZXggYWU1
ZDc0YTdmM2NiZGVlOGVmM2MwNzY5M2QxODZhNzhmYTcyMWVmMS4uZTVmMTFjMDdmMmM5OTMzMzA5
OWE2MzY3MDlkNWY3MjM5MzlkMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEFy
Z3VtZW50RW5jb2Rlcl9oCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAi
QXR0YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1R5cGVUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNSw2ICszNCw3IEBA
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIEF0
dGFjaG1lbnQ7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBjbGFzcyBBcmd1bWVudEVuY29kZXIg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKaW5k
ZXggNWQxOWJhZDE3ZjE2YjBhYzgxYjBmZjgzYWE0NjgwZjg2ZmJhOTdlNi4uMGI3ODJkMTQxMTJl
ZGMzZmM2ZTc1MjY0NTI4ZWIxYjlmNzdkMjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNw
YWNlIENvcmVJUEMgewogCi1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAgICA6IG1fdHlwZShV
bmluaXRpYWxpemVkKQorI2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlw
ZV9uYW1lX3QgbWVzc2FnZURpc3Bvc2l0aW9uKEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJl
bWVudCByZXF1aXJlbWVudCkKIHsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6
QWNxdWlyZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
OworICAgIGlmIChyZXF1aXJlbWVudCA9PSBBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KQor
ICAgICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQ7CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0
dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBB
dHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCisgICAgOiBtX3R5
cGUoTWFjaFBvcnRUeXBlKQoreworICAgIG1fcG9ydC5wb3J0ID0gaWRlbnRpZmllci5wb3J0Owor
ICAgIG1fcG9ydC5kaXNwb3NpdGlvbiA9IG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1aXJlbWVudCk7
CiB9CiAKLSNpZiBPUyhEQVJXSU4pCiBBdHRhY2htZW50OjpBdHRhY2htZW50KG1hY2hfcG9ydF9u
YW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pCiAgICAgOiBtX3R5
cGUoTWFjaFBvcnRUeXBlKQogewpAQCAtNTcsNiArNzAsMTYgQEAgdm9pZCBBdHRhY2htZW50Ojpy
ZWxlYXNlKCkKIHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitBdHRhY2htZW50
IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJl
bWVudCByZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudChNQUNIX1BPUlRfTlVM
TCwgbWVzc2FnZURpc3Bvc2l0aW9uKHJlcXVpcmVtZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246Oklk
ZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAg
IHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVyKHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9p
ZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAppbmRleCBhNWFmNTU5
MmQwM2I0ODI4NjY0OTY4MTlkNWQyMGE0ZjQxYWMwZTlmLi5lYzkzNmY2NmVlY2MxOTQ5YWE3ZWMz
YzM0ODMwMzhjNGU1YzlhYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBBdHRhY2htZW50X2gKICNk
ZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKICNpZiBPUyhE
QVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hf
dHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogCiBjbGFz
cyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2htZW50KCk7CisgICAgQXR0YWNobWVu
dCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisgICAgeyB9CiAKICAgICBlbnVt
IFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtNTEsNiArNTUsMTMgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gQ29ubmVjdGlvblJlcXVpcmVtZW50IHsKKyAg
ICAgICAgQWNxdWlyZVNlbmRSaWdodCwKKyAgICAgICAgRm9yd2FyZFNlbmRSaWdodAorICAgIH07
CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1
aXJlbWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFt
ZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKTsKICAgICBBdHRhY2ht
ZW50KHZvaWQqIGFkZHJlc3MsIG1hY2hfbXNnX3NpemVfdCBzaXplLCBtYWNoX21zZ19jb3B5X29w
dGlvbnNfdCBjb3B5T3B0aW9ucywgYm9vbCBkZWFsbG9jYXRlKTsKQEAgLTU5LDYgKzcwLDkgQEAg
cHVibGljOgogICAgIEF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yKTsKICNlbmRpZgogCisg
ICAgc3RhdGljIEF0dGFjaG1lbnQgbnVsbENvbm5lY3Rpb24oQ29ubmVjdGlvblJlcXVpcmVtZW50
KTsKKworICAgIENvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBj
b25zdDsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogI2lmIE9T
KERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgK
aW5kZXggZDE4ZTY2MjFhYTQ5Njg0N2EyOTk4NGVhZmNjY2RjYjZkNTEyNjhkZS4uZjg1MmRkZDcx
OTkxNWRmODlkNTZkYzcxYTFkZjMwMDE2MTI4YzY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgUnVuTG9v
cDsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQmlu
YXJ5U2VtYXBob3JlOwogICAgIAogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsKQEAgLTEyOSwxMyAr
MTMwLDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50
aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5wb3J0ID09IE1BQ0hfUE9SVF9O
VUxMOyB9CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExFIElkZW50aWZpZXI7
Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoSWRlbnRp
ZmllciYgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciYgY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsg
cmV0dXJuICFpZGVudGlmaWVyOyB9CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAg
ICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051
bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQorICAgIHN0
YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVy
biBpZGVudGlmaWVyID09IC0xOyB9CisKICNlbmRpZgogCisgICAgY2xhc3MgQ29ubmVjdGlvbkRl
c2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlm
aWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0
OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb25uZWN0aW9uOworI2lmIE9T
KERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgeyB9
CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworI2VsaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgc2VydmVy
SWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICAgICAgOiBt
X3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRpZmllcikKKyAgICAgICAgICAgICwgbV9jbGll
bnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIHsgfQorICAgICAgICBJZGVu
dGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAgICAgSWRlbnRpZmllciBtX2NsaWVudElk
ZW50aWZpZXI7CisjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIENvbm5lY3Rpb25EZXNjcmlw
dG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlvbihJZGVudGlmaWVyLCBDbGllbnQqLCBX
ZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
b25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdl
YkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwogICAgIH5Db25uZWN0aW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCmlu
ZGV4IDY4M2IzNGQ0ODkyOTA2MGU0YjA0ZWZhMjQzNDMyMmUxN2Q2YjYxOTUuLmY1OTllZGE3MjIw
NjkzMDgyNjFkM2U5YjVhNDU0Zjc3Y2Q1YWM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAK
aW5kZXggZWIwNGQ1NGY0ZmZmN2U0NDE3YThlNWE1MDA4ODQwNDk1MGYzZDRhOC4uZWVjNzNkNmQ3
MjkwZjhmNjYzNzg4MDc4NGQ1ZDE5OTVjNDgxYmJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5kZXggNjc4MDg5YTdlNmQy
ZGNlNWI3YWZlZTVlMDIxODFmODAwN2YyZGY4Ni4uNGQ5YWNlN2Y0MjllMjljODllNTE0N2NkMzAz
OTQ3NWY0NmYxZjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKQEAgLTQ3LDcgKzQ3LDI0IEBAIHN0YXRpYyBjb25z
dCBzaXplX3QgaW5saW5lTWVzc2FnZU1heFNpemUgPSA0MDk2OwogZW51bSB7CiAgICAgTWVzc2Fn
ZUJvZHlJc091dE9mTGluZSA9IDEgPDwgMAogfTsKLSAgICAKKworQ29ubmVjdGlvbjo6SWRlbnRp
ZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29ubmVjdGlvbjo6SWRl
bnRpZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29ubmVjdGlvbjo6
Q29ubmVjdGlvbkRlc2NyaXB0b3IgQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9u
KCkKK3sKKyAgICBtYWNoX3BvcnRfdCBwb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNo
X3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJnBvcnQpOworICAgIHJldHVy
biBDb25uZWN0aW9uRGVzY3JpcHRvcihwb3J0KTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogewogICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CmluZGV4IGE4YzAyNjk0ZjMwMDlmY2Q5ZTFmYWUxN2JlNjFiNTczYWFmZmYzYTAuLmRjMzEwNDFi
ZDljNGUwMTNhNjYyYmZiZGY3YjY5OTg3YjhkZDM0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcApAQCAtMzIs
NiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCitBdHRhY2htZW50OjpBdHRhY2ht
ZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29ubmVjdGlvblJlcXVpcmVt
ZW50KQorICAgIDogbV90eXBlKFNvY2tldFR5cGUpCisgICAgLCBtX2ZpbGVEZXNjcmlwdG9yKGlk
ZW50aWZpZXIpCit7Cit9CisKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlw
dG9yLCBzaXplX3Qgc2l6ZSkKICAgICA6IG1fdHlwZShNYXBwZWRNZW1vcnlUeXBlKQogICAgICwg
bV9maWxlRGVzY3JpcHRvcihmaWxlRGVzY3JpcHRvcikKQEAgLTUyLDQgKzU4LDE1IEBAIHZvaWQg
QXR0YWNobWVudDo6ZGlzcG9zZSgpCiAgICAgICAgIHdoaWxlIChjbG9zZShtX2ZpbGVEZXNjcmlw
dG9yKSA9PSAtMSAmJiAoZXJybm8gPT0gRUlOVFIpKSB7IH0KIH0KIAorQXR0YWNobWVudCBBdHRh
Y2htZW50OjpudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVxdWlyZW1lbnQpCit7CisgICAgcmV0
dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1l
bnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxlRGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBjNmExODZlZTE5ZTE3YTUxYmIyOWYw
MjE0ODAxYmMzN2JiMDgyMzU4Li5hZjg3Mjk3ZWIzMTQzYWU5OThlMDdiOTRkYmI0OWNkOTNlZmZh
MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRo
b3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQor
I2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VU
X1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRp
YyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUgPSA0MDk2OwpAQCAtNTQsNiArNjEsMzAgQEAg
ZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2
ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXJJZGVudGlmaWVyOwor
fQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRJZGVu
dGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0aW9u
OjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIGludCBzb2NrZXRzWzJdOworICAg
IFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tl
dHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9zaW5nIHRoZSBzZXJ2ZXIgc29ja2V0IHRv
IHRoZSBjaGlsZCBwcm9jZXNzIG9yIHRoZSBjbGllbnQgc29ja2V0IHRvIGFueSBmdXR1cmUgY2hp
bGQuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICB3aGls
ZSAoZmNudGwoc29ja2V0c1tpXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisgICAgfQorCisgICAgcmV0dXJu
IENvbm5lY3Rpb25EZXNjcmlwdG9yKHNvY2tldHNbMF0sIHNvY2tldHNbMV0pOworfQorCiBjbGFz
cyBNZXNzYWdlSW5mbyB7CiBwdWJsaWM6CiAgICAgTWVzc2FnZUluZm8oKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAK
aW5kZXggMTQ4N2I2Yzc2Mjc5YzI0YzJkZDk4MzkyYTE1ZmJhNGRiN2EyNTNlNS4uODExNTczMGQy
MTUxOWQ1NTY2YTU0NzdkZjJjMGE1ZDNlNTcxODlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTM5LDggKzM5
LDkgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogLy8gRklYTUU6IFJlbmFtZSB0aGlzIG9yIHVzZSBh
IGRpZmZlcmVudCBjb25zdGFudCBvbiB3aW5kb3dzLgogc3RhdGljIGNvbnN0IHNpemVfdCBpbmxp
bmVNZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CiAKLWJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVy
QW5kQ2xpZW50SWRlbnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ETEUmIGNs
aWVudElkZW50aWZpZXIpCitzdGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCkKIHsKKyAgICBIQU5ETEUgc2VydmVySWRlbnRpZmllciwgY2xpZW50SWRl
bnRpZmllcjsKICAgICBTdHJpbmcgcGlwZU5hbWU7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAt
NTksMjMgKzYwLDE1IEBAIGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRl
bnRpZmllcnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGlmICghc2VydmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFJFTEVBU0VfQVNTRVJUKHNlcnZlcklkZW50aWZpZXIpOwogCiAgICAgY2xpZW50SWRl
bnRpZmllciA9IDo6Q3JlYXRlRmlsZVcocGlwZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElO
RywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xpZW50SWRlbnRpZmllcikg
ewotICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudElkZW50aWZpZXIpOwog
CiAgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsKLSAgICBpZiAoITo6U2V0
TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1vZGUsIDAsIDApKSB7Ci0g
ICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIDo6Q2xvc2VI
YW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlm
aWVyLCAmbW9kZSwgMCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENvbm5l
Y3Rpb25EZXNjcmlwdG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOwogfQog
CiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApp
bmRleCAxYTFhZWQ2ZWNjNDA2YTg3ZmFmMTM4MzNlN2ExZmRjZjFkMTg5MGE0Li4wMWFhYTIzMDY4
ZDJlZTI5MzgxYTNlYjVmM2RmMDk2NjQ0MjhjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI0ICs0NCw2IEBACiAjaW5jbHVk
ZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9y
ZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4K
LQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFD
S0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19T
VFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotI2Vu
ZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2
OCw1NCArMTUwLDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nl
c3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAKIHZvaWQgUGx1Z2luUHJv
Y2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGJvb2wgZGlkSGF2ZUFu
eVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5
KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIENvcmVJUEM7CiAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5p
bmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BP
UlRfUklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgIGJvb2wgZGlkSGF2ZUFueVdl
YlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7
CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAg
IENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0aW9u
OjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGRlc2NyaXB0
b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGll
bnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRh
Y2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCksIEF0dGFjaG1l
bnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKSwgMCk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29ja2V0
c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0
cykgPT0gLTEpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHBsdWdpbiBwcm9jZXNzIHNvY2tl
dCB0byB0aGUgd2ViIHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VU
RkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgd2hpbGUgKGNs
b3NlKHNvY2tldHNbMF0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAgICAg
IHdoaWxlIChjbG9zZShzb2NrZXRzWzFdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBv
c2UgdGhlIHdlYiBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nl
cy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0g
LTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAt
MSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0
c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKLSAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0g
ICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7Ci0gICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2Vsc2UKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotI2VuZGlmCiAKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1vZHVs
ZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpIHsKICAgICAgICAgaWYgKCFkaWRIYXZlQW55V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRX
b3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcAppbmRleCBlNTZjMTVlOTMy
NWVlYzQyNTk5NmJkNzJjMDg2MzNhOWE2NzdkYTU5Li4wYzI2OTA1MGU3ZjA1YTNiNzdjYWE1MmQ5
ODk2MmYwNGMwMWMxYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQ
cm9jZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAKQEAgLTQwLDI0ICs0MCw2IEBA
CiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1
ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1
bmlzdGQuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNP
Q0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09DS0VUX1RZ
UEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNl
bmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTExOSw1MiArMTAxLDE0IEBAIHZvaWQgU2hhcmVkV29ya2VyUHJvY2Vzczo6aW5pdGlh
bGl6ZVNoYXJlZFdvcmtlclByb2Nlc3MoY29uc3QgU2hhcmVkV29ya2VyUHJvY2VzCiAKIHZvaWQg
U2hhcmVkV29ya2VyUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1h
Y2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFz
a19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAg
dXNpbmcgbmFtZXNwYWNlIENvcmVJUEM7CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29u
bmVjdGlvbi4KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIobGlzdGVuaW5nUG9ydCkpOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9y
IGRlc2NyaXB0b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAg
ICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAg
Q29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZ
UEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGll
bnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCksIDApOwotI2Vs
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYg
KHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBzaGFyZWQgd29ya2VyIHByb2Nlc3Mgc29ja2V0IHRvIHRo
ZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRGRCwgRkRf
Q0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29j
a2V0c1swXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgd2hpbGUg
KGNsb3NlKHNvY2tldHNbMV0pID09IC0xICYmIGVycm5vID09IEVJTlRSKSB7IH0KLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUg
c2hhcmVkIHdvcmtlciBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nl
c3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykg
PT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9
PSAtMSAmJiBlcnJubyA9PSBFSU5UUikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29j
a2V0c1sxXSkgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFdKTsKLSAg
ICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwot
Ci0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7Ci0gICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAw
KTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAgICAgZGlzYWJsZVRl
cm1pbmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXggM2EzNjMzNDdmOGVj
YWJjMzUyNzVmZWMwYjY1MTNiMGEzNGMyMjg4MS4uZTFjMmUwOWNlYmRiY2E4NGRkNGY0NmNmZTc5
MTk4NTMyMGI4ZjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApAQCAtMzYsMTEgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKCkKIHsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLX1NUUkVBTSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGgs
IHBsdWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsK
QEAgLTU4LDE0ICs1NCwxNCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjaGFyIHNvY2tldFs1XTsKLSAgICBzbnBy
aW50Zihzb2NrZXQsIHNpemVvZihzb2NrZXQpLCAiJWQiLCBzb2NrZXRzWzBdKTsKKyAgICBjaGFy
IHBvcnRBcmd1bWVudFs1XTsKKyAgICBzbnByaW50Zihwb3J0QXJndW1lbnQsIHNpemVvZihwb3J0
QXJndW1lbnQpLCAiJWQiLCBkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAKICNpZm5k
ZWYgTkRFQlVHCiAgICAgQ1N0cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoOwogICAgIGlmICgh
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0
cmluZyBwcmVmaXhlZEV4ZWN1dGFibGVQYXRoU3RyID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3ND
bWRQcmVmaXggKyAnICcgKwotICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChleGVjdXRhYmxl
UGF0aC5kYXRhKCkpICsgJyAnICsgc29ja2V0ICsgJyAnICsgU3RyaW5nOjpmcm9tVVRGOChwbHVn
aW5QYXRoLmRhdGEoKSk7CisgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV4ZWN1dGFibGVQ
YXRoLmRhdGEoKSkgKyAnICcgKyBwb3J0QXJndW1lbnQgKyAnICcgKyBTdHJpbmc6OmZyb21VVEY4
KHBsdWdpblBhdGguZGF0YSgpKTsKICAgICAgICAgcHJlZml4ZWRFeGVjdXRhYmxlUGF0aCA9IHBy
ZWZpeGVkRXhlY3V0YWJsZVBhdGhTdHIudXRmOCgpOwogICAgIH0KICNlbmRpZgpAQCAtNzUsNyAr
NzEsNiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgLy8gdGhl
IGZvcmsoKSBkb2Vzbid0IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRfdCBw
aWQgPSBmb3JrKCk7CiAgICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAg
Y2xvc2Uoc29ja2V0c1sxXSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBpZiAoIXByZWZpeGVk
RXhlY3V0YWJsZVBhdGguaXNOdWxsKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaW52b2tlcyB0aGUgc2hlbGwKQEAgLTg4LDEyICs4Mywx
MiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICAg
ICAgZXhpdChFWElUX1NVQ0NFU1MpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZXhlY2wo
ZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBleGVjdXRhYmxlUGF0aC5kYXRhKCksIHNvY2tldCwgcGx1
Z2luUGF0aC5kYXRhKCksIHN0YXRpY19jYXN0PGNoYXIqPigwKSk7CisgICAgICAgIGV4ZWNsKGV4
ZWN1dGFibGVQYXRoLmRhdGEoKSwgZXhlY3V0YWJsZVBhdGguZGF0YSgpLCBwb3J0QXJndW1lbnQs
IHBsdWdpblBhdGguZGF0YSgpLCBzdGF0aWNfY2FzdDxjaGFyKj4oMCkpOwogICAgIH0gZWxzZSBp
ZiAocGlkID4gMCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0c1sw
XSk7CisgICAgICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAg
ICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQg
bGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3Au
Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVy
OjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVu
dGlmaWVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDdjN2YwM2FhZGVl
YjQwZDcyNGU2ODBiZjc2OTQxNjgxZTNhZjllODIuLjJlM2YyYzI2OTUxOTVlNjNiMDVkYThhZjgw
M2QwYjgwZDExN2Q2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ1LDIxICs0NSwx
MiBAQAogI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBB
Q0tFVAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUg
U09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB2b2lkIGNoaWxkU2V0dXBGdW5jdGlv
bihncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBpbnQgc29ja2V0ID0gR1BPSU5URVJfVE9fSU5U
KHVzZXJEYXRhKTsKLSAgICBjbG9zZShzb2NrZXQpOwotCiAgICAgLy8gTWFrZSBjaGlsZCBwcm9j
ZXNzIGluaGVyaXQgcGFyZW50J3MgbG9jYWxlLgogICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRs
b2NhbGUoTENfQUxMLCAwKSwgVFJVRSk7CiB9CkBAIC03NCwxNCArNjUsNyBAQCBzdGF0aWMgdm9p
ZCBjaGlsZEZpbmlzaGVkRnVuY3Rpb24oR1BpZCwgZ2ludCBzdGF0dXMsIGdwb2ludGVyIHVzZXJE
YXRhKQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgR1Bp
ZCBwaWQgPSAwOwotCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZf
VU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBnX3ByaW50ZXJy
KCJDcmVhdGlvbiBvZiBzb2NrZXQgZmFpbGVkOiAlcy5cbiIsIGdfc3RyZXJyb3IoZXJybm8pKTsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAg
U3RyaW5nIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIENTdHJpbmcgcmVhbEV4ZWN1
dGFibGVQYXRoLCByZWFsUGx1Z2luUGF0aDsKQEAgLTk0LDEzICs3OCwxNCBAQCB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQ
YXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHT3du
UHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAg
ICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0b3Iu
Y2xpZW50SWRlbnRpZmllcigpKSk7CiAgICAgY2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0g
Y29uc3RfY2FzdDxjaGFyKj4ocmVhbEV4ZWN1dGFibGVQYXRoLmRhdGEoKSk7CiAgICAgYXJndlsx
XSA9IHNvY2tldC5nZXQoKTsKICAgICBhcmd2WzJdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBs
dWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2WzNdID0gMDsKIAorICAgIEdQaWQgcGlkID0gMDsK
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaW50IHNwYXduRmxhZ3MgPSBHX1NQQVdO
X0xFQVZFX0RFU0NSSVBUT1JTX09QRU4gfCBHX1NQQVdOX0RPX05PVF9SRUFQX0NISUxEOwogICAg
IGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBzdGF0aWNfY2FzdDxHU3Bhd25GbGFncz4o
c3Bhd25GbGFncyksIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNb
MV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CkBAIC0xMDgsNyArOTMsNyBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAotICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgIGNsb3NlKGRlc2NyaXB0
b3IuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwog
CiAgICAgLy8gTW9uaXRvciB0aGUgY2hpbGQgcHJvY2VzcywgaXQgY2FsbHMgd2FpdHBpZCB0byBw
cmV2ZW50IHRoZSBjaGlsZCBwcm9jZXNzIGZyb20gYmVjb21taW5nIGEgem9tYmllLApAQCAtMTE2
LDcgKzEwMSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBn
X2NoaWxkX3dhdGNoX2FkZChtX3Byb2Nlc3NJZGVudGlmaWVyLCBjaGlsZEZpbmlzaGVkRnVuY3Rp
b24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSk7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hl
ZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9v
cC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6
ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgc29j
a2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xh
dW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlm
aWVyLCBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRleCAzNmIz
Y2RiYWU3ZGFhOTFmNGEwMzNlN2Y3OGE1MjRjZTIxODAzOTNjLi5iNjkwNWE5MTRmNzIzYWE3ZTdl
N2I2YzY4YzUzMzIzNWQ5NzBmMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTQyLDE5ICs0
MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotI2lmIGRlZmluZWQoUV9PU19VTklYKQotI2luY2x1ZGUgPGVycm5vLmg+
Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5j
bHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KICNpZiBk
ZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjaW5jbHVkZSA8c2ln
bmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+
CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03MiwxMyArNjMsNiBAQAogZXh0ZXJuICJD
IiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFjaF9wb3J0X3QsIG5hbWVfdCwg
bWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBmb3IgUU5YIHdlIG5lZWQgU09D
S19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1
MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZpbmVkKFFfT1NfTUFDWCkgJiYg
IU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVm
aW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDEsMzYgKzEyNSwxOCBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNTRVJUX1VOVVNFRChrciwga3Ig
PT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNl
cnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQogICAgIENvcmVJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyOwotICAgIGlmICgh
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoY29u
bmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91
bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAg
IENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBD
b3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBjb25u
ZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKTsKKyAgICBjbGllbnRJZGVudGlm
aWVyID0gZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCk7CiAgICAgY29tbWFuZExpbmUgPSBj
b21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisKKyNpZiBPUyhX
SU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVyaXRzIHRo
ZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNsaWVudElk
ZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQpOwotI2Vs
c2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NL
RVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkgPDwgIkNyZWF0
aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0
IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdoaWxlIChmY250
bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYg
KGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIHdoaWxlIChjbG9zZShzb2NrZXRzWzBdKSA9PSAtMSAmJiBlcnJubyA9PSBFSU5U
UikgeyB9Ci0gICAgICAgICAgICB3aGlsZSAoY2xvc2Uoc29ja2V0c1sxXSkgPT0gLTEgJiYgZXJy
bm8gPT0gRUlOVFIpIHsgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaW50IGNvbm5lY3RvciA9IHNvY2tldHNbMV07Ci0gICAgY29tbWFuZExpbmUgPSBjb21t
YW5kTGluZS5hcmcoc29ja2V0c1swXSk7CiAjZW5kaWYKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCiAK
ICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy5wcm9j
ZXNzVHlwZSA9PSBQbHVnaW5Qcm9jZXNzKQpAQCAtMTkzLDE4ICsxNTksNiBAQCB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjZWxzZQogICAgIHdlYlByb2Nlc3NPclNVSURI
ZWxwZXItPnN0YXJ0KGNvbW1hbmRMaW5lKTsKICNlbmRpZgotCi0jaWYgT1MoVU5JWCkgJiYgIU9T
KERBUldJTikKLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBzb2NrZXQgdG8gcG9zc2libGUg
ZnV0dXJlIHdlYiBwcm9jZXNzZXMKLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRG
RCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGRlbGV0ZSB3ZWJQ
cm9jZXNzT3JTVUlESGVscGVyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQotI2VuZGlmCi0KICAgICBpZiAoIXdlYlByb2Nlc3NPclNVSURIZWxwZXItPndhaXRGb3JTdGFy
dGVkKCkpIHsKICAgICAgICAgcURlYnVnKCkgPDwgIkZhaWxlZCB0byBzdGFydCIgPDwgY29tbWFu
ZExpbmU7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCBmMTViZGI0NDJmMGQwODUwNTM4MTU0NjI4MzIxZTdkYjRiNzU1MzU2Li40YjMxYjgwODIyMTUx
NzA2ZjViOGFhZmUwNjVjNGU4NmRmZTdiYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5j
bHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTA4LDEyICsxMDksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAg
IC8vIFRoZSBuZXR3b3JrIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5k
IGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxlICghbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsK
LQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNo
bWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2ht
ZW50OjpudWxsQ29ubmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0
KSk7CiAgICAgfQogCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8g
Zm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1
cyB0byBiZSBkZWxldGVkLgpAQCAtMTUyLDE4ICsxNDgsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEMKIHsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0
aW9uSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVj
dGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHko
KSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCiAg
ICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJ
UEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAg
cmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVu
dGlmaWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA2Yjk3OTcyOWYzODU1YTZjMGVlZDMzMmE0NzdlN2UzY2E2NjA0
NGI0Li5lNzY1MjZiYjEwNDczOTEzZjQwOTFlZTU3ZGQzYTBkMzk5YTBiMzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTMzLDE0ICsx
MzQsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZh
aWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFz
aGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2
ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewog
ICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNl
bmQoQ29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNl
KTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6
bnVsbENvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZh
bHNlKTsKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0Vt
cHR5KCkpCkBAIC0yMjksMjAgKzIyMywxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogI2Vu
ZGlmCiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwg
Ym9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJ
UEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzLmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rp
b24gcmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHkt
PnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbik7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2Vu
ZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBs
eS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZp
ZXIoKSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBvcnRzQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDBlOWE2YTQ0M2M0YjNlZGNjZmEyZjlkYjUzMzliOTQ1ZGFjODc4YzEuLmM0N2YxYzZl
MmM2MjZhODllYmRmMmNlNzQzNTZiMmZiNjEyOWI2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCkBAIC03NSwxNSArNzUsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0lu
aXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm4gMDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVjdGlvbklk
ZW50aWZpZXIgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBSZWZQdHI8
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBwcm9jZXNzVHlwZSwg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
OwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBj
YjA0MzY3MDE1NTVmMTEyMGQ4NTNjNDRlZTIyMmEwYmUyMTdhZGRlLi5mOGU3MmQ0M2VkNGE2MmMy
Y2ZkNmQwZmU3OGQwMmJlZTBkNGNlMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTM0NywxMyArMzQ3LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9u
SWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpOwogICAgIGlmIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorCiAgICAg
bV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206130</attachid>
            <date>2013-07-05 02:52:47 -0700</date>
            <delta_ts>2013-07-24 16:59:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130705185016.patch</filename>
            <type>text/plain</type>
            <size>42762</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGE1ZDgxZWMwNDRkNDk3
NWY1YTljZjczZDA1M2QzZGU2Mjg0ZTY4Yi4uMjg3NzIwZmJmNjQ2ZDQxMDkxOTk1NTUwY2JjOGMw
MjMyMTIzYmZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0wNy0wNSAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+LgorCisg
ICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gaWZkZWZzIGRlYWxpbmcgd2l0aCBJUEMgY29ubmVj
dGlvbiBzZXR1cC4gSW50cm9kdWNlCisgICAgICAgIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbiBhbmQgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgdG8KKyAgICAg
ICAgY29udGFpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgb2YgY3JlYXRpbmcgYW4gSVBD
IGNoYW5uZWwsIGFuZCBleHRlbmQKKyAgICAgICAgQXR0YWNobWVudCB0byBoaWRlIHRoZSBkZXRh
aWxzIG9mIGV4Y2hhbmluZyBJUEMgZW5kcG9pbnRzIGFjcm9zcyBwcm9jZXNzZXMuCisgICAgICAg
IFRoZSBwYXRjaCBhbHNvIHVuaWZpZXMgc29tZSBzcGVjaWZpY3MgYWJvdXQgdGhlIHdheSB3ZSBo
YW5kbGUgdW5peCBkb21haW4gc29ja2V0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0
Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50RW5jb2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3Vt
ZW50W0VuY29kZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRl
cGVuZGVuY3kgbm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAg
ICAgICBhbmQgYWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZv
cm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNw
b3NpdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAg
ICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6
OkF0dGFjaG1lbnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2Fz
IHNpbXBseSB3cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0x
IGFuZCBub3QgMC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpDb25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZv
cm0gYWJzdHJhY3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRW5jb2Rlci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2Ug
YXJlIHRoZSBzYW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQ
QyBjaGFubmVsLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRV
bml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAg
ICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0
aW9uUmVxdWlyZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9m
IG1vdmluZyBzb2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVk
IHZpYSBjb250cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAq
IFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xp
ZW50SWRlbnRpZmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tl
dCBjcmVhdGlvbi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncwor
ICAgICAgICBzaW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBp
cyBubyBnb29kIHdheSB0byBkby4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKToKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIG5ldyBpbnRlcmZhY2UgYmFzZWQgb24gY3Jl
YXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuIEkgcmVtb3ZlZCB0aGUgYm9vbAorICAgICAg
ICByZXR1cm4gdmFsdWUgYW5kIHVzZWQgUkVMRUFTRV9BU1NFUlQgZm9yIGVycm9yIGhhbmRsaW5n
LgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICBDaGFuZ2UgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhl
IGNoaWxkIHNpZGUKKyAgICAgICAgb2YgdGhlIGZvcmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRs
ZXMgdGhhdCBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGlsZFNldHVwRnVu
Y3Rpb24pOiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIHNpbmNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0
aGF0LgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOiBV
c2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVk
VG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGlu
dGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3ND
cmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5l
dyBpbnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2Ug
dGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCiAyMDEzLTA3LTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBj
cmVhdGVQbHVnaW5JbnRlcm5hbCBlbmRzIHVwIGRlc3Ryb3lpbmcgdGhlIHBsdWctaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5
MTdkZGM1YzE1N2Q0NmZhOTkwYzZhOTBiYzQ2OGZjNzJkYjM1YmVkLi4zODY5ODEyODhkZTJlNmE1
ZDBkZGZlY2RlNjI3NTQ5ZTA2ZmJhNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xODMsMjAgKzE4MywxNCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUg
bGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNo
X3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUs
ICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8v
IENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0
KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOwogICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAg
ICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNs
aWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDAp
OwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCmluZGV4IGUyM2Qy
OGEyYzA1ZDllYmM3M2YzZDQwMzNjZmM0YzA5NzNhOWRiOTcuLjViNWY1OGM3ZDZhNGE3MjI3OGNj
ZjYyNTZjZDM5Mzg5ZmJlYjRlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKIAorI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8c3RkaW8u
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmgKaW5kZXggMDgwYWQwNWI5ZTY0YzFkNzk3MDVjMThiMjNiMDA5OTM1NWI3MGM4ZS4uZjJi
MjRhZWJjMjM0MjhiMjQ1ZjBjMTU5MGVjYTkwMjVjODY0N2RiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yNywxMyArMjcs
MTMgQEAKICNkZWZpbmUgQXJndW1lbnREZWNvZGVyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXIuaCIKLSNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvVHlwZVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIENvcmVJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKICAgICAKIGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKaW5kZXggNDMyNDZm
NGI1MWUyMjg5ZTQ3YzhlMjBmYTAzMjhmMzU2ZjAxOGE1OC4uMDJkZjg5ZTIyNjQ0MTc5OWU5M2Vj
MDhkYTVlZDgxMjZlNzIzNTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IDcyYmUxMmFjMzEzN2I0YWE5NzdkNThhZGY5
ZTYwOWQ3NGIyMjIzYTQuLjc2ZWFhZDAwZGUyMzhjYWIzY2ZjYmQ2MTFmYzYzYmJlMjU2MDExMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29k
ZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzUsNiArMzQsNyBAQAogbmFtZXNwYWNlIENvcmVJUEMgewog
CiBjbGFzcyBBcmd1bWVudEVuY29kZXI7CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDVkMTliYWQxN2YxNmIwYWM4MWIw
ZmY4M2FhNDY4MGY4NmZiYTk3ZTYuLjBiNzgyZDE0MTEyZWRjM2ZjNmU3NTI2NDUyOGViMWI5Zjc3
ZDI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNo
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50
LmNwcApAQCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0YWNo
bWVudDo6QXR0YWNobWVudCgpCi0gICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNpZiBPUyhE
QVJXSU4pCitzdGF0aWMgaW5saW5lIG1hY2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VEaXNwb3Np
dGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7Cisg
ICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpCisgICAg
ICAgIHJldHVybiBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQg
PT0gQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENv
bm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVjdGlvblJl
cXVpcmVtZW50IHJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKK3sKKyAg
ICBtX3BvcnQucG9ydCA9IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9zaXRpb24g
PSBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQog
QXR0YWNobWVudDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5
cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAg
LTU3LDYgKzcwLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBl
ID0gVW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVj
dGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7Cisg
ICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlvbihy
ZXF1aXJlbWVudCkpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRl
bnRpZmllcihwb3J0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9BdHRhY2htZW50LmgKaW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5ZDVkMjBh
NGY0MWFjMGU5Zi4uZWM5MzZmNjZlZWNjMTk0OWFhN2VjM2MzNDgzMDM4YzRlNWM5YWJmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAgLTI2LDYg
KzI2LDggQEAKICNpZm5kZWYgQXR0YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRfaAogCisj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gv
bWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3ICs0MCw5
IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBwdWJsaWM6
Ci0gICAgQXR0YWNobWVudCgpOworICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1fdHlwZShV
bmluaXRpYWxpemVkKQorICAgIHsgfQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0
aWFsaXplZCwKQEAgLTUxLDYgKzU1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKKyAg
ICBlbnVtIENvbm5lY3Rpb25SZXF1aXJlbWVudCB7CisgICAgICAgIEFjcXVpcmVTZW5kUmlnaHQs
CisgICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVudChDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCiAjaWYgT1MoREFS
V0lOKQogICAgIEF0dGFjaG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190eXBl
X25hbWVfdCBkaXNwb3NpdGlvbik7CiAgICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNzLCBtYWNo
X21zZ19zaXplX3Qgc2l6ZSwgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weU9wdGlvbnMsIGJv
b2wgZGVhbGxvY2F0ZSk7CkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBBdHRhY2htZW50
KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBBdHRhY2htZW50IG51
bGxDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IGM1OGQ0YTEyNjkzOWJhY2Vm
ZmM2N2I0YjYwMDI5NGIwNDdiMWFjYTkuLjUyMDQyY2E2YTVlNDNhNWNiNTQ4YTA2ZjYwMjM4OTEw
NTdkNDQzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oCkBAIC02MSw2ICs2MSw4IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3JlSVBD
IHsKIAorY2xhc3MgQXR0YWNobWVudDsKKwogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsKICAgICAv
LyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcg
Zm9yIGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJv
bm91cyBtZXNzYWdlcy4KQEAgLTEyOCwxMiArMTMwLDM1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gaWRl
bnRpZmllci5wb3J0ID09IE1BQ0hfUE9SVF9OVUxMOyB9CiAjZWxpZiBPUyhXSU5ET1dTKQogICAg
IHR5cGVkZWYgSEFORExFIElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlU2VydmVy
QW5kQ2xpZW50SWRlbnRpZmllcnMoSWRlbnRpZmllciYgc2VydmVySWRlbnRpZmllciwgSWRlbnRp
ZmllciYgY2xpZW50SWRlbnRpZmllcik7CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVs
bChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CiAjZWxpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAg
IHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJl
dHVybiAhaWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CisKKyNlbmRp
ZgorCisgICAgY2xhc3MgQ29ubmVjdGlvbkRlc2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBDb25uZWN0aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRl
c2NyaXB0b3IoSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlm
aWVyOworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25E
ZXNjcmlwdG9yKElkZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRp
ZmllcikKKyAgICAgICAgICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIp
CisgICAgICAgIHsgfQorICAgICAgICBJZGVudGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAg
ICAgICAgSWRlbnRpZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAjZW5kaWYKKyAgICB9OworCisg
ICAgc3RhdGljIENvbm5lY3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVj
dGlvbihJZGVudGlmaWVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29w
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0
aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3Ap
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVy
LmNwcAppbmRleCA2MWJhYjNjOWQyZWViOGMxMmQwODUwZjhkOTQzYTEyOTVkN2U5MjY0Li5kYzFl
ZjE5ZGRmODFiZGRkN2M5MzRjNTI4YzViMDAwMzlmZDAxOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VF
bmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29k
ZXIuY3BwCmluZGV4IGViMDRkNTRmNGZmZjdlNDQxN2E4ZTVhNTAwODg0MDQ5NTBmM2Q0YTguLmVl
YzczZDZkNzI5MGY4ZjY2Mzc4ODA3ODRkNWQxOTk1YzQ4MWJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFn
cy5oIgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IGUxMTEz
NTBjM2FlMjg4MzhmOWVlMjUwYmM3OWQ3Mzk1NjczOGI1MzEuLjExYjhhMTllYmU5OTM0NTM4Mzcw
MjI3NjFkNzAzYzU1NjJlYzU1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00OCw3ICs0OCwyNCBAQCBzdGF0
aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAg
IE1lc3NhZ2VCb2R5SXNPdXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246
OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rp
b246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5l
Y3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29u
bmVjdGlvbigpCit7CisgICAgbWFjaF9wb3J0X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2Nh
dGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAg
ICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlv
bjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVu
aXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRV
bml4LmNwcAppbmRleCA2Yjc3MGI3N2FmMDEyMzA4NjZiMjg4YzVkNGIxOTlmMDAyYTE0Zjc5Li43
OTNhYzU2M2NkNzI4MTlhMzhlOGU0OTEzYjRlNTA1NTIwOTY1NzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAK
QEAgLTMxLDYgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6
QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbm5lY3Rpb25S
ZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3Jp
cHRvcihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxl
RGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkK
ICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0ICs1NywxNSBA
QCB2b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhSZXRyeShtX2Zp
bGVEZXNjcmlwdG9yKTsKIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlv
bihDb25uZWN0aW9uUmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOwor
fQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJl
dHVybiBmaWxlRGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAppbmRleCAwNzY1YmM5ZDcwNTE5MmZhYjFlMDA4Y2RmMDg3ZmZiY2UxYjE1NGQwLi40
YWVkYjUxMGQzYjYzMTM2ZTViNTY4ZDc1ZjQ1NTZmMmFhNmQyNjI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
QEAgLTQ2LDYgKzQ2LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFO
WCBTT0NLX1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwg
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBk
ZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBT
T0NLX1NFUVBBQ0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNl
bmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2Fn
ZU1heFNpemUgPSA0MDk2OwpAQCAtNTUsNiArNjIsMjggQEAgZW51bSB7CiAgICAgTWVzc2FnZUJv
ZHlJc091dE9mTGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0
aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKQoreworICAgIGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tl
dHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8v
IEF2b2lkIGV4cG9zaW5nIHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisg
ICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisKKyAgICByZXR1cm4gQ29u
bmVjdGlvbkRlc2NyaXB0b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1l
c3NhZ2VJbmZvIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRl
eCAxNWEwZWQyZmQ5NjRmOWZjN2EzYjg4ZTE5Mzg3MTUwMGYxN2MzZWQwLi43ZDZlOTM1MjljODM2
NzZjODIzZDRlM2EwNjk1MjVmYTZjMWJkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBA
QCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlm
ZmVyZW50IGNvbnN0YW50IG9uIHdpbmRvd3MuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1l
c3NhZ2VNYXhTaXplID0gNDA5NjsKIAotYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRD
bGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50
SWRlbnRpZmllcikKK3N0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24oKQogeworICAgIEhBTkRMRSBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlm
aWVyOwogICAgIFN0cmluZyBwaXBlTmFtZTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwy
MyArNjAsMTUgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlm
aWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc2VydmVySWRlbnRpZmllcik7CiAKICAgICBjbGllbnRJZGVudGlm
aWVyID0gOjpDcmVhdGVGaWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElT
VElORywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xpZW50SWRlbnRpZmll
cikgewotICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudElkZW50aWZpZXIp
OwogCiAgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsKLSAgICBpZiAoITo6
U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1vZGUsIDAsIDApKSB7
Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIDo6Q2xv
c2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVu
dGlmaWVyLCAmbW9kZSwgMCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENv
bm5lY3Rpb25EZXNjcmlwdG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOwog
fQogCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNw
cAppbmRleCAzMTMwNWFhOWJiNTcxMjZmM2EyZTIyNjI2YTljN2MxYTI5YzVhZWMyLi4wMWFhYTIz
MDY4ZDJlZTI5MzgxYTNlYjVmM2RmMDk2NjQ0MjhjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI1ICs0NCw2IEBACiAjaW5j
bHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5
cy9yZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQu
aD4KLSNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tF
VAotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9S
TShHVEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBT
T0NLRVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAot
I2VuZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjksNTQgKzE1MCwxNiBAQCB2b2lkIFBs
dWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcgogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKCkKIHsKLSAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMg
PSAhbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVzcGFj
ZSBDb3JlSVBDOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVu
aW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRf
YWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0
ZW5pbmdQb3J0KTsKKyAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAh
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlz
dGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7
CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgp
KTsKIAotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBN
QUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2Ny
aXB0b3IuY2xpZW50SWRlbnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9j
ZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVO
SVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBh
aXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9u
J3QgZXhwb3NlIHRoZSBwbHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgot
ICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEp
IHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAg
ICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBwcm9jZXNz
IHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNu
dGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYg
KGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VX
aXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpB
dHRhY2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQ
bHVnaW5Nb2R1bGUoKSkgewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVj
dGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3Mv
U2hhcmVkV29ya2VyUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9j
ZXNzL1NoYXJlZFdvcmtlclByb2Nlc3MuY3BwCmluZGV4IDM2YWIxMDc2ZDE5MGZkNGM4NjM1ZGQx
ZjQ4ZDRlNzEwMjRkYjY3MjcuLjIwMjkxYjAyMWM5NTFjMmMzZjc2NzYzY2NhZTQ4NjI4ODFlNjNl
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVk
V29ya2VyUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vz
cy9TaGFyZWRXb3JrZXJQcm9jZXNzLmNwcApAQCAtNDAsMjUgKzQwLDYgQEAKICNpbmNsdWRlIDxj
cnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNp
bmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291
cmNlLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVm
aW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykK
LSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYg
Ly8gVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExOCw1MiArOTksMTQgQEAgdm9pZCBTaGFyZWRXb3Jr
ZXJQcm9jZXNzOjppbml0aWFsaXplU2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFyZWRXb3Jr
ZXJQcm9jZXMKIAogdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbigpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVu
aW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRf
YWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0
ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0
ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29u
bmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlm
aWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9y
dChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRS
aWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGll
bnRQb3J0KSwgMCk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29j
a2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29j
a2V0cykgPT0gLTEpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJv
Y2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRz
WzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9
IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnko
c29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8gcG9z
c2libGUgZnV0dXJlIHdlYiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0s
IEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5U
UikgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9z
ZVdpdGhSZXRyeShzb2NrZXRzWzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tl
dHNbMV0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVm
UHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShzb2NrZXRzWzFdKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGll
bnRTb2NrZXQoc29ja2V0c1swXSk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSNlbmRpZgogCiAgICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hl
ckVmbC5jcHAKaW5kZXggOWI5MThhYmI4NzRkOTBjMzA5YzgzZWRhZDVhY2JkM2VjMzcyYTU2Ni4u
ZWIxMmM2ZTRlMDQ5YWVhNWY5YjQ2MjIxZGVjN2NmYTZlMDNkMmZjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcApAQCAtNjYsMTEgKzY2LDcgQEAgc3RhdGljIFZlY3RvcjxPd25BcnJheVB0cjxj
aGFyPj4gY3JlYXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb25zdCBTdHIKIAog
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRz
KSA8IDApIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVz
Y3JpcHRvciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OwogCiAgICAgU3RyaW5nIHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5Q
YXRoOwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC05Miwy
MCArODgsMTkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGlm
ICghbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKQogICAgICAgICBw
cm9jZXNzQ21kUHJlZml4ID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXg7CiAjZW5k
aWYKLSAgICBWZWN0b3I8T3duQXJyYXlQdHI8Y2hhcj4+IGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXko
cHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6bnVtYmVyKHNvY2tldHNb
MF0pLCBwbHVnaW5QYXRoKTsKKyAgICBWZWN0b3I8T3duQXJyYXlQdHI8Y2hhcj4+IGFyZ3MgPSBj
cmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6
bnVtYmVyKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKSwgcGx1Z2luUGF0aCk7CiAKICAg
ICAvLyBEbyBub3QgcGVyZm9ybSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRo
ZSBmb3JrKCkKICAgICAvLyBleGVjKCkgYmVsb3cuIEZhc3RNYWxsb2MgY2FuIHBvdGVudGlhbGx5
IGRlYWRsb2NrIGJlY2F1c2UKICAgICAvLyB0aGUgZm9yaygpIGRvZXNuJ3QgaW5oZXJpdCB0aGUg
cnVubmluZyB0aHJlYWRzLgogICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKICAgICBpZiAoIXBpZCkg
eyAvLyBDaGlsZCBwcm9jZXNzLgotICAgICAgICBjbG9zZShzb2NrZXRzWzFdKTsKICAgICAgICAg
ZXhlY3ZwKGFyZ3MuZGF0YSgpWzBdLmdldCgpLCByZWludGVycHJldF9jYXN0PGNoYXIqIGNvbnN0
Kj4oYXJncy5kYXRhKCkpKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50IHBy
b2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9zZShkZXNjcmlw
dG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBw
aWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVz
c2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWluKCkt
PmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vz
cywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlz
cGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0
aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xh
dW5jaGVyR3RrLmNwcAppbmRleCAyYWUxZmRiNWM5MjlhYzI0MmRhZjRmZmZkNGE1Y2RiZmRlZmNk
MDlkLi4yYjUyZTNmYzZmNzVjZmNhNWRmNzNmMDI0Mjg2OGJmMWYxYmQ5NWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNz
TGF1bmNoZXJHdGsuY3BwCkBAIC00NywzMiArNDcsMTkgQEAKICNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+CiAjZW5kaWYKIAotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBF
IFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQot
I2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewot
ICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwotICAgIGNsb3NlKHNv
Y2tldCk7CisgICAgLy8gTWFrZSBjaGlsZCBwcm9jZXNzIGluaGVyaXQgcGFyZW50J3MgbG9jYWxl
LgorICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENfQUxMLCAwKSwgVFJVRSk7CiB9
CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBHUGlkIHBp
ZCA9IDA7Ci0KLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklY
LCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIGdfcHJpbnRlcnIoIkNy
ZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJlcnJvcihlcnJubykpOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBD
b3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBTdHJp
bmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyByZWFsRXhlY3V0YWJs
ZVBhdGgsIHJlYWxQbHVnaW5QYXRoOwpAQCAtODUsMjQgKzcyLDI1IEBAIHZvaWQgUHJvY2Vzc0xh
dW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICB9CiAKICAgICByZWFsRXhlY3V0YWJsZVBhdGgg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwotICAgIEdPd25QdHI8
Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOworICAgIEdP
d25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZGVzY3JpcHRvci5jbGll
bnRJZGVudGlmaWVyKCkpKTsKICAgICBjaGFyKiBhcmd2WzRdOwogICAgIGFyZ3ZbMF0gPSBjb25z
dF9jYXN0PGNoYXIqPihyZWFsRXhlY3V0YWJsZVBhdGguZGF0YSgpKTsKICAgICBhcmd2WzFdID0g
c29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2lu
UGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbM10gPSAwOwogCisgICAgR1BpZCBwaWQgPSAwOwogICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwg
MCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJ
TlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgeworICAg
IGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JT
X09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKGRlc2NyaXB0b3Iuc2Vy
dmVySWRlbnRpZmllcigpKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3By
aW50ZXJyKCJVbmFibGUgdG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5cbiIsIGVycm9yLT5t
ZXNzYWdlKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgY2xv
c2Uoc29ja2V0c1swXSk7CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkp
OwogICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hl
ZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9v
cC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6
ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgc29j
a2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xh
dW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlm
aWVyLCBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRleCAxZGQz
YTA3ZjczZjJhZWY2MDA4YTJmNjViNWE4MjQ5ZTg1NTY2YmI3Li5lM2I5YzhlMDQ0OGIzM2I1MWQw
MjA2ZjBjZDNlMTVlYTMwMmZlM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTQzLDE5ICs0
MywxMyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgZGVmaW5lZChR
X09TX1VOSVgpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNp
bmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2VuZGlmCiAKICNp
ZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjaW5jbHVkZSA8
c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNl
Lmg+CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03MywxMyArNjcsNiBAQAogZXh0ZXJu
ICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFjaF9wb3J0X3QsIG5hbWVf
dCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBmb3IgUU5YIHdlIG5lZWQg
U09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZpbmVkKFFfT1NfTUFDWCkg
JiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0j
ZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDIsMzYgKzEyOSwxOCBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNTRVJUX1VOVVNFRChrciwg
a3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJn
KHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQogICAgIENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyOwotICAgIGlm
ICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMo
Y29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICAvLyBGSVhNRTogV2hhdCBz
aG91bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQor
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3Ig
PSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBj
b25uZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKTsKKyAgICBjbGllbnRJZGVu
dGlmaWVyID0gZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCk7CiAgICAgY29tbWFuZExpbmUg
PSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisKKyNpZiBP
UyhXSU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVyaXRz
IHRoZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNsaWVu
dElkZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQpOwot
I2Vsc2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBT
T0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkgPDwgIkNy
ZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERv
bid0IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdoaWxlIChm
Y250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAg
aWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xv
c2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpbnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAgICBjb21tYW5kTGlu
ZSA9IGNvbW1hbmRMaW5lLmFyZyhzb2NrZXRzWzBdKTsKICNlbmRpZgorI2VuZGlmIC8vIE9TKERB
UldJTikKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBpZiAobV9sYXVuY2hPcHRp
b25zLnByb2Nlc3NUeXBlID09IFBsdWdpblByb2Nlc3MpCkBAIC0xOTQsMTggKzE2Myw2IEBAIHZv
aWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbHNlCiAgICAgd2ViUHJvY2Vz
c09yU1VJREhlbHBlci0+c3RhcnQoY29tbWFuZExpbmUpOwogI2VuZGlmCi0KLSNpZiBPUyhVTklY
KSAmJiAhT1MoREFSV0lOKQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNvY2tldCB0byBw
b3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3NlcwotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBd
LCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlO
VFIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgZGVs
ZXRlIHdlYlByb2Nlc3NPclNVSURIZWxwZXI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICghd2ViUHJvY2Vzc09yU1VJREhlbHBlci0+d2Fp
dEZvclN0YXJ0ZWQoKSkgewogICAgICAgICBxRGVidWcoKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IiA8
PCBjb21tYW5kTGluZTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGYxNWJkYjQ0MmYwZDA4NTA1MzgxNTQ2MjgzMjFlN2RiNGI3NTUzNTYuLjRiMzFi
ODA4MjIxNTE3MDZmNWI4YWFmZTA2NWM0ZTg2ZGZlN2JjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVk
ZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
aCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMDgsMTIgKzEwOSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5j
aCgpCiAgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0
ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hp
bGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VG
aXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBD
OjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6
OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRT
ZW5kUmlnaHQpKTsKICAgICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nlc3MgbWFu
YWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5
IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xNTIsMTggKzE0OCwxNCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQm
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50
JiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
aXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiBy
ZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNl
bmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5k
aWYKKyAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVj
dGlvbklkZW50aWZpZXIoKSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IDEwN2FkMTYzMzQxOWNmYmI0NmMyNzFhZjBiNmEy
NGQ4ZTE4NTA4MjMuLmMyMWM3NGIyZTM3NjJhNzI2ZTA3NDA1YTVhN2RmZjQwOTkyMDg0OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCkBAIC0x
MzYsMTQgKzEzNyw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAgIC8vIFRoZSBwbHVnLWluIHByb2Nlc3MgbXVzdCBo
YXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBt
aWdodCBoYXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBy
ZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
KSwgZmFsc2UpOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5
LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwotI2Vsc2UKLSAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRh
Y2htZW50OjpudWxsQ29ubmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJp
Z2h0KSwgZmFsc2UpOwogICAgIH0KIAogICAgIHdoaWxlICghbV9wZW5kaW5nR2V0U2l0ZXNSZXBs
aWVzLmlzRW1wdHkoKSkKQEAgLTIzMiwyMCArMjI2LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVj
dGlvCiAjZW5kaWYKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCit2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29u
c3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbiwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcg
Y29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBv
cnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJl
cGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgor
ICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9u
SWRlbnRpZmllcigpLCBDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiB9CiAKIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
aXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHAKaW5kZXggNjQyZGIxNTZhYmQxZmFlYTg4NDk4NjU3MTc1OTg0Y2ZkZGRlMWJiOS4u
YWQ5YTc4MWQxZGE4NWRmYmE0ZjBmNTJiM2E5MDQ5YzI2NTBlMDAzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKQEAgLTc0LDE1ICs3NCw5IEBAIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblBy
b2Nlc3NDb25uZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNo
cm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRD
b25uZWN0aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybiAwOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5maWxlRGVzY3JpcHRvcigpOwotICAgIGlmIChjb25u
ZWN0aW9uSWRlbnRpZmllciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAg
IFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tl
biwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCAzM2QzMGNmMDVhZDNhOTEwNzdhZjc1ZTYwMTBjZTVlYTFjNjU3ZDViLi40OGMzYzkxYTZlYmEy
OWEzZGQxNjA1NzhiM2M3Y2Q3OGU3MTZlNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTM3MywxMyArMzczLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVj
dGlvbklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpOwogICAgIGlmIChDb3JlSVBDOjpD
b25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorCiAg
ICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdP
UktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207421</attachid>
            <date>2013-07-24 16:59:45 -0700</date>
            <delta_ts>2013-09-26 07:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130725085932.patch</filename>
            <type>text/plain</type>
            <size>42747</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzMTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZhOTU1YTBjOTc3Y2Uw
NGUxNWFiOTljZjNhZWEwMjJjZjU5NGVmYi4uOWRkNGI3Y2IxNDE5YmMyNjJlMGUxOTExMmY0ZGU3
Zjk5ZWFhMzA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0wNy0wNSAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+LgorCisg
ICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gaWZkZWZzIGRlYWxpbmcgd2l0aCBJUEMgY29ubmVj
dGlvbiBzZXR1cC4gSW50cm9kdWNlCisgICAgICAgIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbiBhbmQgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgdG8KKyAgICAg
ICAgY29udGFpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgb2YgY3JlYXRpbmcgYW4gSVBD
IGNoYW5uZWwsIGFuZCBleHRlbmQKKyAgICAgICAgQXR0YWNobWVudCB0byBoaWRlIHRoZSBkZXRh
aWxzIG9mIGV4Y2hhbmluZyBJUEMgZW5kcG9pbnRzIGFjcm9zcyBwcm9jZXNzZXMuCisgICAgICAg
IFRoZSBwYXRjaCBhbHNvIHVuaWZpZXMgc29tZSBzcGVjaWZpY3MgYWJvdXQgdGhlIHdheSB3ZSBo
YW5kbGUgdW5peCBkb21haW4gc29ja2V0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0
Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50RW5jb2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3Vt
ZW50W0VuY29kZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRl
cGVuZGVuY3kgbm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAg
ICAgICBhbmQgYWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZv
cm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNw
b3NpdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAg
ICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6
OkF0dGFjaG1lbnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2Fz
IHNpbXBseSB3cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0x
IGFuZCBub3QgMC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpDb25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZv
cm0gYWJzdHJhY3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRW5jb2Rlci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2Ug
YXJlIHRoZSBzYW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQ
QyBjaGFubmVsLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRV
bml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAg
ICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0
aW9uUmVxdWlyZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9m
IG1vdmluZyBzb2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVk
IHZpYSBjb250cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAq
IFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6
CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xp
ZW50SWRlbnRpZmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0
Zm9ybUNvbm5lY3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tl
dCBjcmVhdGlvbi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncwor
ICAgICAgICBzaW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBp
cyBubyBnb29kIHdheSB0byBkby4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nv
bm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKToKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIG5ldyBpbnRlcmZhY2UgYmFzZWQgb24gY3Jl
YXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuIEkgcmVtb3ZlZCB0aGUgYm9vbAorICAgICAg
ICByZXR1cm4gdmFsdWUgYW5kIHVzZWQgUkVMRUFTRV9BU1NFUlQgZm9yIGVycm9yIGhhbmRsaW5n
LgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICBDaGFuZ2UgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBTaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtlclBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhl
IGNoaWxkIHNpZGUKKyAgICAgICAgb2YgdGhlIGZvcmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRs
ZXMgdGhhdCBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGlsZFNldHVwRnVu
Y3Rpb24pOiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIHNpbmNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0
aGF0LgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOiBV
c2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1By
b2Nlc3NMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVk
VG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGlu
dGVyZmFjZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3ND
cmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5l
dyBpbnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2Ug
dGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCiAyMDEzLTA3LTI0ICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1dLMl1bU291cF0g
QWRkIGVudHJ5IHBvaW50IGZvciBuZXR3b3JrIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5MTdkZGM1YzE1N2Q0NmZh
OTkwYzZhOTBiYzQ2OGZjNzJkYjM1YmVkLi4zODY5ODEyODhkZTJlNmE1ZDBkZGZlY2RlNjI3NTQ5
ZTA2ZmJhNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0xODMsMjAgKzE4MywxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQu
Ci0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUo
bWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0
KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3Rl
bmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVj
dGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0
ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRh
Y2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQp
OworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIo
KSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOwotI2Vsc2UKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCmluZGV4IGUyM2QyOGEyYzA1ZDllYmM3M2Yz
ZDQwMzNjZmM0YzA5NzNhOWRiOTcuLjViNWY1OGM3ZDZhNGE3MjI3OGNjZjYyNTZjZDM5Mzg5ZmJl
YjRlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RGVjb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggMDgw
YWQwNWI5ZTY0YzFkNzk3MDVjMThiMjNiMDA5OTM1NWI3MGM4ZS4uZjJiMjRhZWJjMjM0MjhiMjQ1
ZjBjMTU5MGVjYTkwMjVjODY0N2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yNywxMyArMjcsMTMgQEAKICNkZWZpbmUg
QXJndW1lbnREZWNvZGVyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRl
ICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVHlwZVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENv
cmVJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKICAgICAK
IGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKaW5kZXggNDMyNDZmNGI1MWUyMjg5ZTQ3Yzhl
MjBmYTAzMjhmMzU2ZjAxOGE1OC4uMDJkZjg5ZTIyNjQ0MTc5OWU5M2VjMDhkYTVlZDgxMjZlNzIz
NTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1l
bnRFbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RW5jb2Rlci5oCmluZGV4IDcyYmUxMmFjMzEzN2I0YWE5NzdkNThhZGY5ZTYwOWQ3NGIyMjIzYTQu
Ljc2ZWFhZDAwZGUyMzhjYWIzY2ZjYmQ2MTFmYzYzYmJlMjU2MDExMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaApAQCAtMjcsNyAr
MjcsNiBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMzUsNiArMzQsNyBAQAogbmFtZXNwYWNlIENvcmVJUEMgewogCiBjbGFzcyBBcmd1bWVu
dEVuY29kZXI7CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogY2xh
c3MgQXJndW1lbnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0F0dGFjaG1lbnQuY3BwCmluZGV4IDVkMTliYWQxN2YxNmIwYWM4MWIwZmY4M2FhNDY4MGY4NmZi
YTk3ZTYuLjBiNzgyZDE0MTEyZWRjM2ZjNmU3NTI2NDUyOGViMWI5Zjc3ZDI3OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcApAQCAtMzEsMTIg
KzMxLDI1IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0YWNobWVudDo6QXR0YWNobWVu
dCgpCi0gICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNpZiBPUyhEQVJXSU4pCitzdGF0aWMg
aW5saW5lIG1hY2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VEaXNwb3NpdGlvbihBdHRhY2htZW50
OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CisgICAgaWYgKHJlcXVpcmVt
ZW50ID09IEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNI
X01TR19UWVBFX01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6
Rm9yd2FyZFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
OworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50
aWZpZXIgaWRlbnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVjdGlvblJlcXVpcmVtZW50IHJlcXVp
cmVtZW50KQorICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKK3sKKyAgICBtX3BvcnQucG9ydCA9
IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9zaXRpb24gPSBtZXNzYWdlRGlzcG9z
aXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVudDo6QXR0
YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bv
c2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAgLTU3LDYgKzcwLDE2IEBA
IHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXpl
ZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihBdHRhY2htZW50
OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFj
aG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1aXJlbWVudCkpOwor
fQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRlbnRpZmllcihwb3J0KCkp
OworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2ht
ZW50LmgKaW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5ZDVkMjBhNGY0MWFjMGU5Zi4uZWM5
MzZmNjZlZWNjMTk0OWFhN2VjM2MzNDgzMDM4YzRlNWM5YWJmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5k
ZWYgQXR0YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRfaAogCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CiAj
aW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3ICs0MCw5IEBAIGNsYXNzIEFyZ3Vt
ZW50RW5jb2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBwdWJsaWM6Ci0gICAgQXR0YWNobWVu
dCgpOworICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQor
ICAgIHsgfQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKQEAgLTUx
LDYgKzU1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKKyAgICBlbnVtIENvbm5lY3Rp
b25SZXF1aXJlbWVudCB7CisgICAgICAgIEFjcXVpcmVTZW5kUmlnaHQsCisgICAgICAgIEZvcndh
cmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlm
aWVyLCBDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCiAjaWYgT1MoREFSV0lOKQogICAgIEF0dGFj
aG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190eXBlX25hbWVfdCBkaXNwb3Np
dGlvbik7CiAgICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNzLCBtYWNoX21zZ19zaXplX3Qgc2l6
ZSwgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weU9wdGlvbnMsIGJvb2wgZGVhbGxvY2F0ZSk7
CkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBBdHRhY2htZW50KGludCBmaWxlRGVzY3Jp
cHRvcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBBdHRhY2htZW50IG51bGxDb25uZWN0aW9uKENv
bm5lY3Rpb25SZXF1aXJlbWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IGM1OGQ0YTEyNjkzOWJhY2VmZmM2N2I0YjYwMDI5NGIw
NDdiMWFjYTkuLjUyMDQyY2E2YTVlNDNhNWNiNTQ4YTA2ZjYwMjM4OTEwNTdkNDQzMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC02MSw2ICs2
MSw4IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0
YWNobWVudDsKKwogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsKICAgICAvLyBXaGV0aGVyIHRoaXMg
bWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcgZm9yIGEgc3luYyByZXBs
eS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcy4K
QEAgLTEyOCwxMiArMTMwLDM1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVy
SXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5wb3J0ID09
IE1BQ0hfUE9SVF9OVUxMOyB9CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHR5cGVkZWYgSEFORExF
IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRp
ZmllcnMoSWRlbnRpZmllciYgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciYgY2xpZW50SWRl
bnRpZmllcik7CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAgIHN0YXRpYyBib29sIGlk
ZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiAhaWRlbnRpZmll
cjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CisKKyNlbmRpZgorCisgICAgY2xhc3Mg
Q29ubmVjdGlvbkRlc2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSWRlbnRpZmllciBz
ZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllcigpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb25uZWN0
aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50
aWZpZXIgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorICAg
ICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRpZmllcikKKyAgICAgICAg
ICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIHsgfQor
ICAgICAgICBJZGVudGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAgICAgSWRlbnRpZmll
ciBtX2NsaWVudElkZW50aWZpZXI7CiAjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIENvbm5l
Y3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlvbihJZGVudGlmaWVy
LCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIs
IENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCA2MWJh
YjNjOWQyZWViOGMxMmQwODUwZjhkOTQzYTEyOTVkN2U5MjY0Li5kYzFlZjE5ZGRmODFiZGRkN2M5
MzRjNTI4YzViMDAwMzlmZDAxOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGVi
MDRkNTRmNGZmZjdlNDQxN2E4ZTVhNTAwODg0MDQ5NTBmM2Q0YTguLmVlYzczZDZkNzI5MGY4ZjY2
Mzc4ODA3ODRkNWQxOTk1YzQ4MWJiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUg
IlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IGUxMTEzNTBjM2FlMjg4MzhmOWVl
MjUwYmM3OWQ3Mzk1NjczOGI1MzEuLjExYjhhMTllYmU5OTM0NTM4MzcwMjI3NjFkNzAzYzU1NjJl
YzU1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nv
bm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFj
L0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00OCw3ICs0OCwyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNP
dXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7Cisg
ICAgbWFjaF9wb3J0X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVj
dGlvbkRlc2NyaXB0b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRleCA2
Yjc3MGI3N2FmMDEyMzA4NjZiMjg4YzVkNGIxOTlmMDAyYTE0Zjc5Li43OTNhYzU2M2NkNzI4MTlh
MzhlOGU0OTEzYjRlNTA1NTIwOTY1NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTMxLDYgKzMxLDEy
IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0YWNobWVudChDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCkKKyAg
ICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVy
KQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6
ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURl
c2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0ICs1NywxNSBAQCB2b2lkIEF0dGFjaG1l
bnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhSZXRyeShtX2ZpbGVEZXNjcmlwdG9yKTsK
IH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVx
dWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25uZWN0aW9u
OjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxlRGVzY3Jp
cHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCAw
NzY1YmM5ZDcwNTE5MmZhYjFlMDA4Y2RmMDg3ZmZiY2UxYjE1NGQwLi40YWVkYjUxMGQzYjYzMTM2
ZTViNTY4ZDc1ZjQ1NTZmMmFhNmQyNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ2LDYgKzQ2LDEz
IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBBQ0tF
VCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tfU0VR
UEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAor
I2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUgPSA0MDk2
OwpAQCAtNTUsNiArNjIsMjggQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9
IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAg
IGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9zaW5n
IHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgd2hpbGUgKGZjbnRs
KHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQorICAgICAgICBSRUxFQVNF
X0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0
b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZvIHsKIHB1
YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCAxNWEwZWQyZmQ5NjRm
OWZjN2EzYjg4ZTE5Mzg3MTUwMGYxN2MzZWQwLi43ZDZlOTM1MjljODM2NzZjODIzZDRlM2EwNjk1
MjVmYTZjMWJkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBAQCBuYW1lc3BhY2UgQ29y
ZUlQQyB7CiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlmZmVyZW50IGNvbnN0YW50
IG9uIHdpbmRvd3MuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0g
NDA5NjsKIAotYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVy
cyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50SWRlbnRpZmllcikKK3N0
YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQogewor
ICAgIEhBTkRMRSBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOwogICAgIFN0cmlu
ZyBwaXBlTmFtZTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwyMyArNjAsMTUgQEAgYm9v
bCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNl
cnZlcklkZW50aWZpZXIsIEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFz
ZXJ2ZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUkVMRUFTRV9BU1NF
UlQoc2VydmVySWRlbnRpZmllcik7CiAKICAgICBjbGllbnRJZGVudGlmaWVyID0gOjpDcmVhdGVG
aWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgR0VO
RVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFH
X09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICA6
OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudElkZW50aWZpZXIpOwogCiAgICAgRFdPUkQg
bW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsKLSAgICBpZiAoITo6U2V0TmFtZWRQaXBlSGFu
ZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1vZGUsIDAsIDApKSB7Ci0gICAgICAgIDo6Q2xv
c2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50
SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlmaWVyLCAmbW9kZSwg
MCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlw
dG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOwogfQogCiB2b2lkIENvbm5l
Y3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCAzMTMwNWFh
OWJiNTcxMjZmM2EyZTIyNjI2YTljN2MxYTI5YzVhZWMyLi4wMWFhYTIzMDY4ZDJlZTI5MzgxYTNl
YjVmM2RmMDk2NjQ0MjhjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI1ICs0NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVy
bnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8
ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgot
I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pU3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NL
RVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xNjksNTQgKzE1MCwxNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6Omlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cgogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsK
LSAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0j
aWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAg
ICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuaXNFbXB0eSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxp
c3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVm
UHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRl
bnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09D
S0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBw
bHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250
bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYg
KGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VX
aXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBwcm9jZXNzIHNvY2tldCB0byBwb3Nz
aWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRS
KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3Nl
V2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0
c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQ
dHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVu
dFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlm
IChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkg
ewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWRXb3JrZXJQcm9jZXNzL1NoYXJlZFdvcmtl
clByb2Nlc3MuY3BwCmluZGV4IDM2YWIxMDc2ZDE5MGZkNGM4NjM1ZGQxZjQ4ZDRlNzEwMjRkYjY3
MjcuLjIwMjkxYjAyMWM5NTFjMmMzZjc2NzYzY2NhZTQ4NjI4ODFlNjNlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZFdvcmtlclByb2Nlc3MvU2hhcmVkV29ya2VyUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkV29ya2VyUHJvY2Vzcy9TaGFyZWRXb3JrZXJQ
cm9jZXNzLmNwcApAQCAtNDAsMjUgKzQwLDYgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgog
I2VuZGlmCiAKLSNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSNpbmNsdWRlIDxlcnJuby5o
PgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0jaW5jbHVk
ZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi9VbmlT
dGRFeHRyYXMuaD4KLQotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBF
IFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKLSNkZWZpbmUgU09DS0VU
X1RZUEUgU09DS19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0K
LSNlbmRpZgotI2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCi0jZW5kaWYgLy8gVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTExOCw1MiArOTksMTQgQEAgdm9pZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjppbml0
aWFsaXplU2hhcmVkV29ya2VyUHJvY2Vzcyhjb25zdCBTaGFyZWRXb3JrZXJQcm9jZXMKIAogdm9p
ZCBTaGFyZWRXb3JrZXJQcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAg
ICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBj
b25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwor
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOwogICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAg
ICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNs
aWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hhcmVkV29ya2VyUHJvY2Vz
c1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7Ci0j
ZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBp
ZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8g
dGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBG
RF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5
KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBv
c2UgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdl
YiBwcm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NM
T0VYRUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShzb2Nr
ZXRzWzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMV0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3ND
b25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2Nr
ZXRzWzFdKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5y
ZWxlYXNlKCkpOwotCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0
c1swXSk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGll
bnRTb2NrZXQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogCiAg
ICAgZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXgg
OWI5MThhYmI4NzRkOTBjMzA5YzgzZWRhZDVhY2JkM2VjMzcyYTU2Ni4uZWIxMmM2ZTRlMDQ5YWVh
NWY5YjQ2MjIxZGVjN2NmYTZlMDNkMmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApAQCAt
NjYsMTEgKzY2LDcgQEAgc3RhdGljIFZlY3RvcjxPd25BcnJheVB0cjxjaGFyPj4gY3JlYXRlQXJn
c0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb25zdCBTdHIKIAogdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChz
b2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvcmVJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3RyaW5n
IHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIHN3aXRj
aCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC05MiwyMCArODgsMTkgQEAgdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGlmICghbV9sYXVuY2hPcHRp
b25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKQogICAgICAgICBwcm9jZXNzQ21kUHJlZml4
ID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKLSAgICBWZWN0b3I8
T3duQXJyYXlQdHI8Y2hhcj4+IGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZp
eCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6bnVtYmVyKHNvY2tldHNbMF0pLCBwbHVnaW5QYXRo
KTsKKyAgICBWZWN0b3I8T3duQXJyYXlQdHI8Y2hhcj4+IGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXko
cHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6bnVtYmVyKGRlc2NyaXB0
b3IuY2xpZW50SWRlbnRpZmllcigpKSwgcGx1Z2luUGF0aCk7CiAKICAgICAvLyBEbyBub3QgcGVy
Zm9ybSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmb3JrKCkKICAgICAv
LyBleGVjKCkgYmVsb3cuIEZhc3RNYWxsb2MgY2FuIHBvdGVudGlhbGx5IGRlYWRsb2NrIGJlY2F1
c2UKICAgICAvLyB0aGUgZm9yaygpIGRvZXNuJ3QgaW5oZXJpdCB0aGUgcnVubmluZyB0aHJlYWRz
LgogICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKICAgICBpZiAoIXBpZCkgeyAvLyBDaGlsZCBwcm9j
ZXNzLgotICAgICAgICBjbG9zZShzb2NrZXRzWzFdKTsKICAgICAgICAgZXhlY3ZwKGFyZ3MuZGF0
YSgpWzBdLmdldCgpLCByZWludGVycHJldF9jYXN0PGNoYXIqIGNvbnN0Kj4oYXJncy5kYXRhKCkp
KTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50IHByb2Nlc3M7Ci0gICAgICAg
IGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudElkZW50
aWZpZXIoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAgICAgICAgIC8v
IFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRo
ZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQo
JlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBz
b2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJv
Y2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIGRlc2Ny
aXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApp
bmRleCAyYWUxZmRiNWM5MjlhYzI0MmRhZjRmZmZkNGE1Y2RiZmRlZmNkMDlkLi4yYjUyZTNmYzZm
NzVjZmNhNWRmNzNmMDI0Mjg2OGJmMWYxYmQ5NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3Bw
CkBAIC00NywzMiArNDcsMTkgQEAKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjZW5kaWYKIAot
I2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VRUEFDS0VU
Ci0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQotI2VuZGlmCi0KIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQg
Y2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIGludCBzb2NrZXQg
PSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwotICAgIGNsb3NlKHNvY2tldCk7CisgICAgLy8g
TWFrZSBjaGlsZCBwcm9jZXNzIGluaGVyaXQgcGFyZW50J3MgbG9jYWxlLgorICAgIGdfc2V0ZW52
KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENfQUxMLCAwKSwgVFJVRSk7CiB9CiAKIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBHUGlkIHBpZCA9IDA7Ci0KLSAgICBp
bnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwg
MCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIGdfcHJpbnRlcnIoIkNyZWF0aW9uIG9mIHNvY2tl
dCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJlcnJvcihlcnJubykpOwotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0
aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBTdHJpbmcgZXhlY3V0YWJsZVBh
dGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyByZWFsRXhlY3V0YWJsZVBhdGgsIHJlYWxQbHVn
aW5QYXRoOwpAQCAtODUsMjQgKzcyLDI1IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICB9CiAKICAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwotICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChn
X3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHNv
Y2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkp
KTsKICAgICBjaGFyKiBhcmd2WzRdOwogICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihy
ZWFsRXhlY3V0YWJsZVBhdGguZGF0YSgpKTsKICAgICBhcmd2WzFdID0gc29ja2V0LmdldCgpOwog
ICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwog
ICAgIGFyZ3ZbM10gPSAwOwogCisgICAgR1BpZCBwaWQgPSAwOwogICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9MRUFW
RV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihz
b2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgeworICAgIGlmICghZ19zcGF3bl9h
c3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0
dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigp
KSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUg
dG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5cbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgY2xvc2Uoc29ja2V0c1swXSk7
CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgIG1fcHJvY2Vz
c0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhl
IHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29w
OjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNo
aW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgc29ja2V0c1sxXSkpOworICAg
IFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBkZXNjcmlwdG9y
LnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWlu
YXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRleCA3ZDAyMDM0NzhjZDUxMTlhZGYz
MDBlODhkMTM1YzkzMzljZDkzZTI4Li42ZDYwOTZlNWNkNTdkYzI2NDFhYTc4YzMwYjEzOGM1YjIz
OWJjYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
UHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTQzLDE5ICs0MywxMyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgZGVmaW5lZChRX09TX1VOSVgpCi0jaW5j
bHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzeXMvcmVz
b3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CiAj
aW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFFfT1Nf
TElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5j
bHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjZW5kaWYKIAog
I2lmIE9TKFdJTkRPV1MpCkBAIC03MywxMyArNjcsNiBAQAogZXh0ZXJuICJDIiBrZXJuX3JldHVy
bl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFjaF9wb3J0X3QsIG5hbWVfdCwgbWFjaF9wb3J0X3Qs
IHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBmb3IgUU5YIHdlIG5lZWQgU09DS19ER1JBTSwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1MwotI2lmIGRlZmlu
ZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZpbmVkKFFfT1NfTUFDWCkgJiYgIU9TKFFOWCkKLSNk
ZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xNDIsMzYgKzEyOSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNTRVJUX1VOVVNFRChrciwga3IgPT0gS0VSTl9TVUND
RVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNlcnZpY2VOYW1lKTsK
LSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQogICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyOwotICAgIGlmICghQ29yZUlQQzo6Q29u
bmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoY29ubmVjdG9yLCBjbGll
bnRJZGVudGlmaWVyKSkgewotICAgICAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgd2UgZG8gaGVy
ZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQorICAgIENvcmVJUEM6OkNv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0b3IgPSBkZXNj
cmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKTsKKyAgICBjbGllbnRJZGVudGlmaWVyID0gZGVzY3Jp
cHRvci5jbGllbnRJZGVudGlmaWVyKCk7CiAgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5h
cmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisKKyNpZiBPUyhXSU5ET1dTKQogICAg
IC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVyaXRzIHRoZSBjbGllbnQgaWRl
bnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNsaWVudElkZW50aWZpZXIsIEhB
TkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQpOwotI2Vsc2UKLSAgICBpbnQg
c29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwg
c29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkgPDwgIkNyZWF0aW9uIG9mIHNvY2tl
dCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUg
dWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFd
LCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJ
TlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNs
b3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29j
a2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
bnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5l
LmFyZyhzb2NrZXRzWzBdKTsKICNlbmRpZgorI2VuZGlmIC8vIE9TKERBUldJTikKIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBl
ID09IFBsdWdpblByb2Nlc3MpCkBAIC0xOTQsMTggKzE2Myw2IEBAIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbHNlCiAgICAgd2ViUHJvY2Vzc09yU1VJREhlbHBlci0+
c3RhcnQoY29tbWFuZExpbmUpOwogI2VuZGlmCi0KLSNpZiBPUyhVTklYKSAmJiAhT1MoREFSV0lO
KQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNvY2tldCB0byBwb3NzaWJsZSBmdXR1cmUg
d2ViIHByb2Nlc3NlcwotICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9D
TE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgZGVsZXRlIHdlYlByb2Nlc3NP
clNVSURIZWxwZXI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5k
aWYKLQogICAgIGlmICghd2ViUHJvY2Vzc09yU1VJREhlbHBlci0+d2FpdEZvclN0YXJ0ZWQoKSkg
ewogICAgICAgICBxRGVidWcoKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IiA8PCBjb21tYW5kTGluZTsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGYxNWJk
YjQ0MmYwZDA4NTA1MzgxNTQ2MjgzMjFlN2RiNGI3NTUzNTYuLjRiMzFiODA4MjIxNTE3MDZmNWI4
YWFmZTA2NWM0ZTg2ZGZlN2JjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0xMDgsMTIgKzEwOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgLy8gVGhl
IG5ldHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBl
bmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwotCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAs
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51
bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpKTsKICAg
ICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nlc3MgbWFuYWdlciB0byBmb3JnZXQg
YWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJl
IGRlbGV0ZWQuCkBAIC0xNTIsMTggKzE0OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQwog
ewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uKQog
ewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIAog
ICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQ
dHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0
YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIo
KSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDEwN2FkMTYzMzQxOWNmYmI0NmMyNzFhZjBiNmEyNGQ4ZTE4NTA4MjMuLmMy
MWM3NGIyZTM3NjJhNzI2ZTA3NDA1YTVhN2RmZjQwOTkyMDg0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCkBAIC0xMzYsMTQgKzEzNyw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9M
YXVuY2goKQogICAgIC8vIFRoZSBwbHVnLWluIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3Ig
ZXhpdGVkLCBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAg
IHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRh
a2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3Jl
SVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwotI2Vs
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6
OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwotI2Vsc2UKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSNlbmRpZgorICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50OjpudWxsQ29u
bmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwgZmFsc2UpOwog
ICAgIH0KIAogICAgIHdoaWxlICghbV9wZW5kaW5nR2V0U2l0ZXNSZXBsaWVzLmlzRW1wdHkoKSkK
QEAgLTIzMiwyMCArMjI2LDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hM
YXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvCiAjZW5kaWYKIH0K
IAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCit2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0
YWNobWVudCYgY29ubmVjdGlvbiwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNF
bXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBs
eS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5k
KENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBD
b3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwgc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpk
aWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXgg
NjQyZGIxNTZhYmQxZmFlYTg4NDk4NjU3MTc1OTg0Y2ZkZGRlMWJiOS4uYWQ5YTc4MWQxZGE4NWRm
YmE0ZjBmNTJiM2E5MDQ5YzI2NTBlMDAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5jcHAKQEAgLTc0LDE1ICs3NCw5IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShl
bmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNv
ZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBDb3JlSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRp
Zmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biAwOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9u
SWRlbnRpZmllci5maWxlRGVzY3JpcHRvcigpOwotICAgIGlmIChjb25uZWN0aW9uSWRlbnRpZmll
ciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklk
ZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogICAgIG1fcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzM2QzMGNmMDVhZDNh
OTEwNzdhZjc1ZTYwMTBjZTVlYTFjNjU3ZDViLi40OGMzYzkxYTZlYmEyOWEzZGQxNjA1NzhiM2M3
Y2Q3OGU3MTZlNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTM3MywxMyArMzczLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIp
LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIENvcmVJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5j
b25uZWN0aW9uSWRlbnRpZmllcigpOwogICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVu
dGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwotI2Vs
c2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorCiAgICAgbV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0
aW9uSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212706</attachid>
            <date>2013-09-26 07:47:19 -0700</date>
            <delta_ts>2013-09-30 04:48:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130926164717.patch</filename>
            <type>text/plain</type>
            <size>39610</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWQ3YWUyNmUyNGI3NDZl
ODg0NTU3MDNhNWMyZDg0NDA0ZjViM2Y2MC4uODhhNmQ0NWNmMjUwOWVhZDI3NjMxNTlhNTUxOTg3
Mzg5OWYyZmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0wOS0yNiAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4gYW5kIEt3
YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0Pi4KKworICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAuIEludHJv
ZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24gYW5kIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4gdGhlIHBs
YXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBhbmQgZXh0
ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNoYW5pbmcg
SVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyB1
bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXggZG9tYWlu
IHNvY2tldHMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0aGluZ3Mgd2VyZSBmaXhlZCBieSBD
c2FiYSBPc3p0cm9nb27DoWM6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzIGNoYW5nZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBhZnRlciByMTU2Mjc3
LgorICAgICAgICAtIFJlc29sdmUgYSB0cml2aWFsIGNvbmZsaWN0IGluIFByb2Nlc3NMYXVuY2hl
ckVmbC5jcHAgYWZ0ZXIgcjE1NjA2My4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0Zm9y
bSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RW5jb2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3VtZW50
W0VuY29kZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRlcGVu
ZGVuY3kgbm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAg
ICBhbmQgYWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZvcm0v
Q29yZUlQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3Np
dGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAg
ICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJ
UEM6OkF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0
dGFjaG1lbnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6Cisg
ICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2FzIHNp
bXBseSB3cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0xIGFu
ZCBub3QgMC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yOjpDb25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0g
YWJzdHJhY3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RW5jb2Rlci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9u
TWFjLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2UgYXJl
IHRoZSBzYW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBs
YXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQQyBj
aGFubmVsLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAg
ICAoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQ
Qzo6QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9u
UmVxdWlyZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1v
dmluZyBzb2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZp
YSBjb250cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6Cisg
ICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50
SWRlbnRpZmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBj
cmVhdGlvbi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAg
ICAgICBzaW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBu
byBnb29kIHdheSB0byBkby4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5l
Y3Rpb25XaW4uY3BwOgorICAgICAgICAoQ29yZUlQQzo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9u
KToKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIG5ldyBpbnRlcmZhY2UgYmFzZWQgb24gY3JlYXRl
U2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMuIEkgcmVtb3ZlZCB0aGUgYm9vbAorICAgICAgICBy
ZXR1cm4gdmFsdWUgYW5kIHVzZWQgUkVMRUFTRV9BU1NFUlQgZm9yIGVycm9yIGhhbmRsaW5nLgor
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICBDaGFuZ2UgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hl
ckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4gUmVtb3ZlZCB0aGUgY2xvc2UgY2Fs
bCBmcm9tIHRoZSBjaGlsZCBzaWRlCisgICAgICAgIG9mIHRoZSBmb3JrIGJlY2F1c2UgRkRfQ0xP
RVhFQyBoYW5kbGVzIHRoYXQgYXV0b21hdGljYWxseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2hp
bGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBzaW5jZSBGRF9DTE9FWEVD
IGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVu
Y2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNo
ZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBVc2Ug
dGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVn
aW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
VXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwogMjAxMy0w
OS0yNSAgTWluanUgS2ltICA8cG11YXJ0ZW9AZ21haWwuY29tPgogCiAgICAgICAgIDggYnl0ZXMg
bWVtb3J5IGxlYWtzIGluIFdlYlByb2Nlc3NNYWluUXQuY3BwIHdoZW4gcHJveHkgaXMgaW5pdGlh
bGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA0NDQ5ZTE3MzVjOTBkNDFiNzEyN2IwYjk2NzliZWMzOTk2ODU5MmYxLi5hY2Fh
MDc2ZjUzNjFiMjE2NGNmZDA2MmU2MTMyZTI0YTBlZTNmYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xODgsMjAgKzE4OCwx
NCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8v
IENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9y
dDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJ
R0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQ
QzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihs
aXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVz
Y3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJl
ZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVy
KCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVh
c2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChk
ZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdo
dCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xp
ZW50UG9ydCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3Bw
CmluZGV4IDZkNTUwNzgyMTQ5NDUwMGEwMTc5MjVmODdmNmFjZWNlNjVlYmRiZjguLjM3MTIyYjhh
YWIwMjE5MGQ1MDNiZjhlYWI0YTk2MWY3YTU0N2ZlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKIAor
I2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8c3RkaW8uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnREZWNvZGVyLmgKaW5kZXggZThkYWJiNmFjMzVmYjQ1Nzg4OGFlY2EzOGM2YTJlMGVi
NmYyY2MxZC4uMDk0NmJjNDM5ZmEyYWE3MzI4YjBiNjAyNDVjNzc2OTk1NDk0MDdkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBA
IC0yNywxMiArMjcsMTIgQEAKICNkZWZpbmUgQXJndW1lbnREZWNvZGVyX2gKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3Jl
SVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAgICAgCiBj
bGFzcyBBcmd1bWVudERlY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IDc3NzUzNmZmYTdkNDY2MjQyZmUyNmNi
ZDFiMDEyMTk3NzkyOWUyNjYuLmUwNTVlZmE4OTI1Yjk2YjZkYjcxMWI3NGRjZjNlZDhlMzgxMWUw
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRF
bmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50
RW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBcmd1bWVudEVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuaAppbmRleCAxN2YwZmQyYTBkOTA3ZGNkMmZlYmNiMzU3MDdiMDcxNTRlZWY2ZWRjLi41
MDA0ODU5MjZlOGQwZTMxNTAxNjM2ODA1MWY1MzJkZTZkM2Y1MmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAgLTI3LDEzICsy
NywxMyBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewogCiBj
bGFzcyBBcmd1bWVudEVuY29kZXI7CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDVkMTliYWQxN2YxNmIwYWM4MWIwZmY4
M2FhNDY4MGY4NmZiYTk3ZTYuLjBiNzgyZDE0MTEyZWRjM2ZjNmU3NTI2NDUyOGViMWI5Zjc3ZDI3
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNw
cApAQCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0YWNobWVu
dDo6QXR0YWNobWVudCgpCi0gICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNpZiBPUyhEQVJX
SU4pCitzdGF0aWMgaW5saW5lIG1hY2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VEaXNwb3NpdGlv
bihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CisgICAg
aWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpCisgICAgICAg
IHJldHVybiBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0g
QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1B
Q0hfTVNHX1RZUEVfTUFLRV9TRU5EOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENvbm5l
Y3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVjdGlvblJlcXVp
cmVtZW50IHJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKK3sKKyAgICBt
X3BvcnQucG9ydCA9IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9zaXRpb24gPSBt
ZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0
YWNobWVudDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVf
bmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsKQEAgLTU3
LDYgKzcwLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0g
VW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlv
bihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAg
cmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1
aXJlbWVudCkpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRlbnRp
Zmllcihwb3J0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9BdHRhY2htZW50LmgKaW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5ZDVkMjBhNGY0
MWFjMGU5Zi4uZWM5MzZmNjZlZWNjMTk0OWFhN2VjM2MzNDgzMDM4YzRlNWM5YWJmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAgLTI2LDYgKzI2
LDggQEAKICNpZm5kZWYgQXR0YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRfaAogCisjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvbWFj
aF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3ICs0MCw5IEBA
IGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBwdWJsaWM6Ci0g
ICAgQXR0YWNobWVudCgpOworICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1fdHlwZShVbmlu
aXRpYWxpemVkKQorICAgIHsgfQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVW5pbml0aWFs
aXplZCwKQEAgLTUxLDYgKzU1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAKKyAgICBl
bnVtIENvbm5lY3Rpb25SZXF1aXJlbWVudCB7CisgICAgICAgIEFjcXVpcmVTZW5kUmlnaHQsCisg
ICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVudChDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCiAjaWYgT1MoREFSV0lO
KQogICAgIEF0dGFjaG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190eXBlX25h
bWVfdCBkaXNwb3NpdGlvbik7CiAgICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNzLCBtYWNoX21z
Z19zaXplX3Qgc2l6ZSwgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weU9wdGlvbnMsIGJvb2wg
ZGVhbGxvY2F0ZSk7CkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBBdHRhY2htZW50KGlu
dCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBBdHRhY2htZW50IG51bGxD
b25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKKyAgICBDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDY0ODYyYzg0NmMzOGQ4NDEzZDgz
NjA5OTdhNjVkZGM3YTM5MzIzZjkuLjBkY2Y3OTBiMjk2YTc2ZGU0YjcwZTM1OTE1NDQ2NzY1Y2Ux
YWNlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5o
CkBAIC02MSw2ICs2MSw4IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsK
IAorY2xhc3MgQXR0YWNobWVudDsKKwogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsKICAgICAvLyBX
aGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRpbmcgZm9y
IGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5jaHJvbm91
cyBtZXNzYWdlcy4KQEAgLTEyOCwxMiArMTMwLDM1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRp
Zmllci5wb3J0ID09IE1BQ0hfUE9SVF9OVUxMOyB9CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIHR5
cGVkZWYgSEFORExFIElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlU2VydmVyQW5k
Q2xpZW50SWRlbnRpZmllcnMoSWRlbnRpZmllciYgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmll
ciYgY2xpZW50SWRlbnRpZmllcik7CiAgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CiAjZWxpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAgIHN0
YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVy
biAhaWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRp
ZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CisKKyNlbmRpZgor
CisgICAgY2xhc3MgQ29ubmVjdGlvbkRlc2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAg
SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBDb25uZWN0aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRlc2Ny
aXB0b3IoSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OworI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25EZXNj
cmlwdG9yKElkZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyKQorICAgICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRpZmll
cikKKyAgICAgICAgICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCisg
ICAgICAgIHsgfQorICAgICAgICBJZGVudGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAg
ICAgSWRlbnRpZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAjZW5kaWYKKyAgICB9OworCisgICAg
c3RhdGljIENvbm5lY3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlv
bihJZGVudGlmaWVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9u
KElkZW50aWZpZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNw
cAppbmRleCBlN2JjNWQyNWY0ODdmMzFlYTkyMDU3ODlhOWYwNDQ1MDU5ZWIwZDI5Li5iZDFjNzkz
NjI0N2Q3MTJmN2VkOWY4YjUyOTA4OGFlYjZiMWExZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIu
Y3BwCmluZGV4IDExZDdmNmVmMjZlYmNhYzZjODA4ZWI5NWU1Yjk1NmZkNjlhNWUzNzQuLjU0NDQw
MmU1Mzc0MTQ2MjY3MGYzZTkyNDY2MGM4NGM1Nzg2NmI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5o
IgogI2luY2x1ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDk0OGM0ZWI3
ZGMxYjJlZWYxYzFmMmZhYTdiN2Q5ZWJiOTUyN2JhZTYuLmU0MTYyM2ViZTg4NjE0NzhkMzZkNmQ2
OWZiNTUxYTgwOGM2ODNkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00OCw3ICs0OCwyNCBAQCBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1l
c3NhZ2VCb2R5SXNPdXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246Oklk
ZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246
OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVj
dGlvbigpCit7CisgICAgbWFjaF9wb3J0X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUo
bWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICBy
ZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6
cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4
LmNwcAppbmRleCA2Yjc3MGI3N2FmMDEyMzA4NjZiMjg4YzVkNGIxOTlmMDAyYTE0Zjc5Li43OTNh
YzU2M2NkNzI4MTlhMzhlOGU0OTEzYjRlNTA1NTIwOTY1NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAg
LTMxLDYgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0
YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1
aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3JpcHRv
cihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVz
Y3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAg
ICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0ICs1NywxNSBAQCB2
b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhSZXRyeShtX2ZpbGVE
ZXNjcmlwdG9yKTsKIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihD
b25uZWN0aW9uUmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQor
CitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVy
biBmaWxlRGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcAppbmRleCAwZTFiNDE4ZThlNjQxZTBkZjM3MTdmNjRhNDVhMmY1MmU1NmM2MzViLi4yMzJh
MGNiZmQ4YWRlMzA5M2RiMGExMGJlMDY0Mjg4N2ZkMWY0ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAg
LTQ2LDYgKzQ2LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBT
T0NLX1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZp
bmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X1NFUVBBQ0tFVAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1h
eFNpemUgPSA0MDk2OwpAQCAtNTUsNiArNjIsMjggQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJ
c091dE9mTGluZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5l
Y3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlm
aWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9u
OjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24oKQoreworICAgIGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBh
aXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2
b2lkIGV4cG9zaW5nIHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisgICAg
d2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQorICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisKKyAgICByZXR1cm4gQ29ubmVj
dGlvbkRlc2NyaXB0b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3Nh
Z2VJbmZvIHsKIHB1YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCAx
NWEwZWQyZmQ5NjRmOWZjN2EzYjg4ZTE5Mzg3MTUwMGYxN2MzZWQwLi43ZDZlOTM1MjljODM2NzZj
ODIzZDRlM2EwNjk1MjVmYTZjMWJkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMzksOCArMzksOSBAQCBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgb3IgdXNlIGEgZGlmZmVy
ZW50IGNvbnN0YW50IG9uIHdpbmRvd3MuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3Nh
Z2VNYXhTaXplID0gNDA5NjsKIAotYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGll
bnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkRMRSYgY2xpZW50SWRl
bnRpZmllcikKK3N0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKQogeworICAgIEhBTkRMRSBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVy
OwogICAgIFN0cmluZyBwaXBlTmFtZTsKIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01OSwyMyAr
NjAsMTUgQEAgYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVy
cyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkQKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgaWYgKCFzZXJ2ZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
UkVMRUFTRV9BU1NFUlQoc2VydmVySWRlbnRpZmllcik7CiAKICAgICBjbGllbnRJZGVudGlmaWVy
ID0gOjpDcmVhdGVGaWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElO
RywgRklMRV9GTEFHX09WRVJMQVBQRUQsIDApOwotICAgIGlmICghY2xpZW50SWRlbnRpZmllcikg
ewotICAgICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudElkZW50aWZpZXIpOwog
CiAgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsKLSAgICBpZiAoITo6U2V0
TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1vZGUsIDAsIDApKSB7Ci0g
ICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7Ci0gICAgICAgIDo6Q2xvc2VI
YW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlQoOjpTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShjbGllbnRJZGVudGlm
aWVyLCAmbW9kZSwgMCwgMCkpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIENvbm5l
Y3Rpb25EZXNjcmlwdG9yKHNlcnZlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpOwogfQog
CiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApp
bmRleCAzNmQxZmM0YTE2NWU1NWIxMDZmNmEzYjM2NTc0ODU3YzJjZjcxY2ZjLi4wMmEwNjc0MDBj
NDk1NWRkOGQ2MmIwYmUzM2QwYTJjMGJkMWIyYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI1ICs0NCw2IEBACiAjaW5jbHVk
ZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9y
ZXNvdXJjZS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4K
LSNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAot
I2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShH
VEspCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NL
RVRfVFlQRSBTT0NLX0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2Vu
ZGlmIC8vIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjksNTQgKzE1MCwxNiBAQCB2b2lkIFBsdWdp
blByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcgogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKCkKIHsKLSAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAh
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVzcGFjZSBD
b3JlSVBDOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5n
IHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxs
b2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5p
bmdQb3J0KTsKKyAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVu
aW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVz
Y3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9u
KCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAg
ICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsK
IAotICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNI
X01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0
b3IuY2xpZW50SWRlbnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNz
UHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIo
QUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3Qg
ZXhwb3NlIHRoZSBwbHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAg
IHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsK
LSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAg
ICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBwcm9jZXNzIHNv
Y2tldCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwo
c29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVy
cm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRo
UmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRh
Y2htZW50IGNsaWVudFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5k
aWYKIAogICAgIGlmIChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVn
aW5Nb2R1bGUoKSkgewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlv
bnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwv
UHJvY2Vzc0xhdW5jaGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAppbmRleCAzYmQxZWE2MDNlMzE4OGI0M2MzMDU5
NTU1MTZmNzE3MWZlYTZkNDIyLi5kZjcxODQyYzlmZTUwYjM1ZDk2ZDQ1OGRhMmViYmZkYzE2Njc2
ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1By
b2Nlc3NMYXVuY2hlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCkBAIC02NywxMSArNjcsNyBAQCBzdGF0aWMg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+PiBjcmVhdGVBcmdzQXJyYXkoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIGNvbgogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiB7Ci0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09D
S19TVFJFQU0sIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25u
ZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRl
UGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBTdHJpbmcgcHJvY2Vzc0NtZFByZWZpeCwgZXhl
Y3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJv
Y2Vzc1R5cGUpIHsKQEAgLTk4LDIwICs5NCwxOSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2VzcygpCiAgICAgaWYgKCFtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeC5p
c0VtcHR5KCkpCiAgICAgICAgIHByb2Nlc3NDbWRQcmVmaXggPSBtX2xhdW5jaE9wdGlvbnMucHJv
Y2Vzc0NtZFByZWZpeDsKICNlbmRpZgotICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShw
cm9jZXNzQ21kUHJlZml4LCBleGVjdXRhYmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoc29ja2V0c1sw
XSksIHBsdWdpblBhdGgpOworICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShwcm9jZXNz
Q21kUHJlZml4LCBleGVjdXRhYmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoZGVzY3JpcHRvci5jbGll
bnRJZGVudGlmaWVyKCkpLCBwbHVnaW5QYXRoKTsKIAogICAgIC8vIERvIG5vdCBwZXJmb3JtIG1l
bW9yeSBhbGxvY2F0aW9uIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZvcmsoKQogICAgIC8vIGV4ZWMo
KSBiZWxvdy4gRmFzdE1hbGxvYyBjYW4gcG90ZW50aWFsbHkgZGVhZGxvY2sgYmVjYXVzZQogICAg
IC8vIHRoZSBmb3JrKCkgZG9lc24ndCBpbmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAg
cGlkX3QgcGlkID0gZm9yaygpOwogICAgIGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0g
ICAgICAgIGNsb3NlKHNvY2tldHNbMV0pOwogICAgICAgICBleGVjdnAoYXJncy5kYXRhKClbMF0u
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciogY29uc3QqPihhcmdzLmRhdGEoKSkpOwogICAg
IH0gZWxzZSBpZiAocGlkID4gMCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uo
c29ja2V0c1swXSk7CisgICAgICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigp
KTsKICAgICAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUg
ZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4g
cnVuIGxvb3AuCi0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vz
c0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNb
MV0pKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1
bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5z
ZXJ2ZXJJZGVudGlmaWVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGRk
ODAwNTYxODBjMTBmNmY5YTFlOTk4NzJmZDFkOTQ1YzU1NzE5MWUuLjRkMjg4ZWRjZGM3NWI2MGQ3
NDQyNWM4OWJhNzc3YzdhY2FlMGZkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ3
LDMyICs0NywxOSBAQAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNlbmRpZgogCi0jaWZkZWYg
U09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNl
Ci0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBjaGlsZFNl
dHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNvY2tldCA9IEdQT0lO
VEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKKyAgICAvLyBNYWtlIGNo
aWxkIHByb2Nlc3MgaW5oZXJpdCBwYXJlbnQncyBsb2NhbGUuCisgICAgZ19zZXRlbnYoIkxDX0FM
TCIsIHNldGxvY2FsZShMQ19BTEwsIDApLCBUUlVFKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxl
ZDogJXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1
Z2luUGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7
CkBAIC05NiwyNCArODMsMjUgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVw
X3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CisgICAgR093blB0cjxnY2hhcj4gc29ja2V0KGdf
c3RyZHVwX3ByaW50ZigiJWQiLCBkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSkpOwogICAg
IGNoYXIqIGFyZ3ZbNF07CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxFeGVj
dXRhYmxlUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbMV0gPSBzb2NrZXQuZ2V0KCk7CiAgICAgYXJn
dlsyXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWxQbHVnaW5QYXRoLmRhdGEoKSk7CiAgICAgYXJn
dlszXSA9IDA7CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAgICAgR093blB0cjxHRXJyb3I+IGVycm9y
OwotICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NS
SVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNb
MV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgaWYgKCFnX3NwYXduX2FzeW5jKDAs
IGFyZ3YsIDAsIEdfU1BBV05fTEVBVkVfREVTQ1JJUFRPUlNfT1BFTiwgY2hpbGRTZXR1cEZ1bmN0
aW9uLCBHSU5UX1RPX1BPSU5URVIoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpLCAmcGlk
LCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJpbnRlcnIoIlVuYWJsZSB0byBmb3Jr
IGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShzb2NrZXRzWzBdKTsKKyAgICBj
bG9zZShkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgbV9wcm9jZXNzSWRlbnRp
ZmllciA9IHBpZDsKIAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2Vz
cywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7CisgICAgUnVuTG9v
cDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5j
aGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIsIGRlc2NyaXB0b3Iuc2VydmVy
SWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9j
ZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Q
cm9jZXNzTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
cXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCmluZGV4IDdkMDIwMzQ3OGNkNTExOWFkZjMwMGU4OGQx
MzVjOTMzOWNkOTNlMjguLjZkNjA5NmU1Y2Q1N2RjMjY0MWFhNzhjMzBiMTM4YzViMjM5YmNhMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNz
TGF1bmNoZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0
L1Byb2Nlc3NMYXVuY2hlclF0LmNwcApAQCAtNDMsMTkgKzQzLDEzIEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBkZWZpbmVkKFFfT1NfVU5JWCkKLSNpbmNsdWRlIDxl
cnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o
PgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoUV9PU19MSU5VWCkK
LSNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxz
eXMvcHJjdGwuaD4KKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNlbmRpZgogCiAjaWYgT1Mo
V0lORE9XUykKQEAgLTczLDEzICs2Nyw2IEBACiBleHRlcm4gIkMiIGtlcm5fcmV0dXJuX3QgYm9v
dHN0cmFwX3JlZ2lzdGVyMihtYWNoX3BvcnRfdCwgbmFtZV90LCBtYWNoX3BvcnRfdCwgdWludDY0
X3QpOwogI2VuZGlmCiAKLS8vIGZvciBRTlggd2UgbmVlZCBTT0NLX0RHUkFNLCBzZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzCi0jaWYgZGVmaW5lZChTT0NL
X1NFUVBBQ0tFVCkgJiYgIWRlZmluZWQoUV9PU19NQUNYKSAmJiAhT1MoUU5YKQotI2RlZmluZSBT
T0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19ER1JBTQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE0MiwzNiArMTI5LDE4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICBBU1NFUlRfVU5VU0VEKGtyLCBrciA9PSBLRVJOX1NVQ0NFU1MpOwog
CiAgICAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS5hcmcoc2VydmljZU5hbWUpOwotI2VsaWYg
T1MoV0lORE9XUykKKyNlbHNlCiAgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0b3IsIGNsaWVudElkZW50aWZpZXI7Ci0gICAgaWYgKCFDb3JlSVBDOjpDb25uZWN0aW9u
OjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhjb25uZWN0b3IsIGNsaWVudElkZW50
aWZpZXIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBkbyBoZXJlPwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CisgICAgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvcmVJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIGNvbm5lY3RvciA9IGRlc2NyaXB0b3Iu
c2VydmVySWRlbnRpZmllcigpOworICAgIGNsaWVudElkZW50aWZpZXIgPSBkZXNjcmlwdG9yLmNs
aWVudElkZW50aWZpZXIoKTsKICAgICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhxdWxv
bmdsb25nKGNsaWVudElkZW50aWZpZXIpKTsKKworI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGNoaWxkIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGNsaWVudCBpZGVudGlmaWVy
LgogICAgIDo6U2V0SGFuZGxlSW5mb3JtYXRpb24oY2xpZW50SWRlbnRpZmllciwgSEFORExFX0ZM
QUdfSU5IRVJJVCwgSEFORExFX0ZMQUdfSU5IRVJJVCk7Ci0jZWxzZQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA9PSAtMSkgewotICAgICAgICBxRGVidWcoKSA8PCAiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxl
ZCB3aXRoIGVycm5vOiIgPDwgZXJybm87Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSB1aSBzb2Nr
ZXQgdG8gdGhlIHdlYiBwcm9jZXNzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VU
RkQsIEZEX0NMT0VYRUMpICA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY2xvc2VXaXRo
UmV0cnkoc29ja2V0c1swXSk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShzb2NrZXRzWzFd
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBjb25u
ZWN0b3IgPSBzb2NrZXRzWzFdOwotICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExpbmUuYXJnKHNv
Y2tldHNbMF0pOwogI2VuZGlmCisjZW5kaWYgLy8gT1MoREFSV0lOKQogCiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQogICAgIGlmIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUGx1
Z2luUHJvY2VzcykKQEAgLTE5NCwxOCArMTYzLDYgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogI2Vsc2UKICAgICB3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT5zdGFydChj
b21tYW5kTGluZSk7CiAjZW5kaWYKLQotI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pCi0gICAg
Ly8gRG9uJ3QgZXhwb3NlIHRoZSB3ZWIgc29ja2V0IHRvIHBvc3NpYmxlIGZ1dHVyZSB3ZWIgcHJv
Y2Vzc2VzCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMp
ID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBkZWxldGUgd2ViUHJvY2Vzc09yU1VJREhl
bHBlcjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAg
ICAgaWYgKCF3ZWJQcm9jZXNzT3JTVUlESGVscGVyLT53YWl0Rm9yU3RhcnRlZCgpKSB7CiAgICAg
ICAgIHFEZWJ1ZygpIDw8ICJGYWlsZWQgdG8gc3RhcnQiIDw8IGNvbW1hbmRMaW5lOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMDk0MGRiNGIwMDUz
ODA4MTdkYTkxZTllNzg4YzYwNjlhMmYyODQ0Zi4uODU5ZDI3NmQyNTZiOWMzZDFhNTdiOWNjZjBk
NjY4YWNjMjFmY2U0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgbmV0d29y
ayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBz
eW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9N
U0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5l
Y3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogICAgIH0KIAog
ICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0
aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRl
ZC4KQEAgLTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDCiB7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCiB7CiAgICAg
QVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8g
R3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5kKENv
cmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBDb3Jl
SVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAK
aW5kZXggNmM1OWRjZTYzZjE5NDc5NTM2OTY2OTVhNzU2YmRiNjA4OTBhOGNiYy4uYzNkNTk3ODRj
ZmVhYTFiMTUxYjhiYTU4NDIwMDdlN2Q5NmVlOGU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTM2LDE0ICsxMzcsNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4
aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3
aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtl
Rmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQ
Qzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKLSNlbGlm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpB
dHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5l
Y3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZhbHNlKTsKICAg
ICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0VtcHR5KCkpCkBA
IC0yMzIsMjAgKzIyNiwxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogI2VuZGlmCiB9CiAK
LXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9pZCBQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFj
aG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHku
CiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29y
ZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7
Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0
aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7
Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIoKSwgQ29y
ZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
R2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDA2
NWU3N2E1NmQ0NGE4NGIwNTlhNGVmNmExMjU1ZDQ0Y2U3ZTFlOTIuLjZlODBhMjI1NDZlMGY2MjU3
YzhlMzllOTZiNzE4OTdmNDI4MDQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCkBAIC03NCwxNSArNzQsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJUEM6OkNvbm5lY3Rpb246
OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
MDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVjdGlvbklkZW50aWZpZXIg
PT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZWIxZTM3NjdmMDMxMTZi
ZGU4MDQ0OTJhNmNmYjYwYTRiN2E5MjdlYy4uNDUxM2Q4OGQxNmJiYzhkNmRjZjc0MGNhMWE4YWEw
NWNlZTBhNWU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0zNjgsMTMgKzM2OCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwg
MCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuY29u
bmVjdGlvbklkZW50aWZpZXIoKTsKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRp
ZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSNlbHNl
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212980</attachid>
            <date>2013-09-30 04:48:41 -0700</date>
            <delta_ts>2013-10-01 02:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20130930134839.patch</filename>
            <type>text/plain</type>
            <size>37472</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODkzZWZjNjZjOWFmMGQw
MTE5ODg5NDVhMzY4MTMyZmE1NDc2YWFkNy4uY2VjOGMxMGMyMjE4YzEwNWYzNmFjNDQwMjdhNGRi
YWU0NWU2NjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMy0wOS0zMCAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4gYW5kIEt3
YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0Pi4KKworICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAuIEludHJv
ZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24gYW5kIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4gdGhlIHBs
YXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBhbmQgZXh0
ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNoYW5pbmcg
SVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyB1
bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXggZG9tYWlu
IHNvY2tldHMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0aGluZ3Mgd2VyZSBmaXhlZCBieSBD
c2FiYSBPc3p0cm9nb27DoWM6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzIGNoYW5nZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBhZnRlciByMTU2Mjc3
LgorICAgICAgICAtIFJlc29sdmUgYSB0cml2aWFsIGNvbmZsaWN0IGluIFByb2Nlc3NMYXVuY2hl
ckVmbC5jcHAgYWZ0ZXIgcjE1NjA2My4KKyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25m
bGljdCBpbiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBXaW5kb3dzIHJlbGF0ZWQgY2hhbmdlcyBhZnRl
ciByMTU2NTA4LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBHZXQgcmlkIG9mIHBsYXRmb3JtIHNwZWNpZmljIGxv
Z2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogUGxhdGZvcm0v
Q29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnREZWNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVu
Y29kZXIuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmg6
CisgICAgICAgIEluY2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1lbnRbRW5jb2Rlci9EZWNv
ZGVyXS5oIHdvdWxkIGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBub3csIHNv
IEkgY2hhbmdlZCBpdCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5j
bHVkZXMgd2hlcmUgaXQgaXMgdXNlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0F0dGFj
aG1lbnQuY3BwOgorICAgICAgICAoQ29yZUlQQzo6bWVzc2FnZURpc3Bvc2l0aW9uKToKKyAgICAg
ICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29yZUlQQzo6
QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVu
dDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXR0
YWNobWVudC5oOgorICAgICAgICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgor
ICAgICAgICBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAg
ICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rp
b25EZXNjcmlwdG9yKToKKyAgICAgICAgVmVyeSBiYXNpYyBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBv
ZiBhbiBJUEMgY2hhbm5lbC4KKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcDoK
KworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwOgorICAg
ICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklk
ZW50aWZpZXIpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OmNsaWVudElkZW50aWZpZXIpOgorICAgICAgICBUaGVzZSBhcmUgdGhlIHNhbWUgb24g
TWFjLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKToKKyAgICAgICAgQ3JlYXRlcyB0aGUgT1Mgc3BlY2lmaWMgSVBDIGNoYW5uZWwuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwOgorICAgICAg
ICAoQ29yZUlQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChDb3JlSVBDOjpB
dHRhY2htZW50OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50
Ojpjb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIENvbm5lY3Rpb25SZXF1aXJlbWVudCBp
cyBub3QgcmVzcGVjdGVkIGhlcmUgc2luY2UgdGhlIGNvbmNlcHQgb2YgbW92aW5nIHNvY2tldCBy
aWdodHMKKyAgICAgICAgYWNyb3NzIHByb2Vzc2VzIGlzIGhhbmRsZWQgdmlhIGNvbnRyb2wgbWVz
c2FnZXMgaW4gQ29ubmVjdGlvblVuaXguY3BwLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToK
KyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6
CisgICAgICAgIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBmb3Igc29ja2V0IGNyZWF0aW9uLiBJIHR1
cm5lZCBlcnJvciBoYW5kbGluZyB0byBSRUxFQVNFX0FTU0VSVCdzCisgICAgICAgIHNpbmNlIGVy
cm9ycyB3YXMgbmV2ZXIgaGFuZGxlZCBhbnl3YXkgYW5kIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRv
IGRvLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICBDaGFuZ2UgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5l
dyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NM
YXVuY2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4gUmVtb3ZlZCB0aGUgY2xv
c2UgY2FsbCBmcm9tIHRoZSBjaGlsZCBzaWRlCisgICAgICAgIG9mIHRoZSBmb3JrIGJlY2F1c2Ug
RkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQgYXV0b21hdGljYWxseS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y2hpbGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBzaW5jZSBGRF9D
TE9FWEVDIGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVy
ZmFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vz
c0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwog
MjAxMy0wOS0yOSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0
aGUgTGlvbiBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA0NDQ5ZTE3MzVjOTBkNDFiNzEyN2IwYjk2NzliZWMzOTk2ODU5
MmYxLi5hY2FhMDc2ZjUzNjFiMjE2NGNmZDA2MmU2MTMyZTI0YTBlZTNmYTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xODgs
MjAgKzE4OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplQ29ubmVjdGlvbihD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlz
dGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFD
SF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgQ29yZUlQQzsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAg
IFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OworICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJ
ZGVudGlmaWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0
aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlz
dGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xp
ZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWly
ZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoY2xpZW50UG9ydCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVu
dERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERl
Y29kZXIuY3BwCmluZGV4IDZkNTUwNzgyMTQ5NDUwMGEwMTc5MjVmODdmNmFjZWNlNjVlYmRiZjgu
LjM3MTIyYjhhYWIwMjE5MGQ1MDNiZjhlYWI0YTk2MWY3YTU0N2ZlNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29k
ZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKaW5kZXggZThkYWJiNmFjMzVmYjQ1Nzg4OGFlY2Ez
OGM2YTJlMGViNmYyY2MxZC4uMDk0NmJjNDM5ZmEyYWE3MzI4YjBiNjAyNDVjNzc2OTk1NDk0MDdk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVj
b2Rlci5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNkZWZpbmUgQXJndW1lbnREZWNvZGVyX2gKIAog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7
CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IDc3NzUzNmZmYTdkNDY2
MjQyZmUyNmNiZDFiMDEyMTk3NzkyOWUyNjYuLmUwNTVlZmE4OTI1Yjk2YjZkYjcxMWI3NGRjZjNl
ZDhlMzgxMWUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQu
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9B
cmd1bWVudEVuY29kZXIuaAppbmRleCAxN2YwZmQyYTBkOTA3ZGNkMmZlYmNiMzU3MDdiMDcxNTRl
ZWY2ZWRjLi41MDA0ODU5MjZlOGQwZTMxNTAxNjM2ODA1MWY1MzJkZTZkM2Y1MmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAg
LTI3LDEzICsyNywxMyBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJ
UEMgewogCiBjbGFzcyBBcmd1bWVudEVuY29kZXI7CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDVkMTliYWQxN2YxNmIw
YWM4MWIwZmY4M2FhNDY4MGY4NmZiYTk3ZTYuLjBiNzgyZDE0MTEyZWRjM2ZjNmU3NTI2NDUyOGVi
MWI5Zjc3ZDI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRh
Y2htZW50LmNwcApAQCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAot
QXR0YWNobWVudDo6QXR0YWNobWVudCgpCi0gICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNp
ZiBPUyhEQVJXSU4pCitzdGF0aWMgaW5saW5lIG1hY2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VE
aXNwb3NpdGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQp
CiB7CisgICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQp
CisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKKyAgICBpZiAocmVxdWly
ZW1lbnQgPT0gQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworfQorCitBdHRhY2htZW50OjpBdHRhY2ht
ZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVj
dGlvblJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkK
K3sKKyAgICBtX3BvcnQucG9ydCA9IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9z
aXRpb24gPSBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFS
V0lOKQogQXR0YWNobWVudDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hf
bXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkK
IHsKQEAgLTU3LDYgKzcwLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAg
bV90eXBlID0gVW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxs
Q29ubmVjdGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQp
Cit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3Np
dGlvbihyZXF1aXJlbWVudCkpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1l
bnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlv
bjo6SWRlbnRpZmllcihwb3J0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKaW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5
ZDVkMjBhNGY0MWFjMGU5Zi4uZWM5MzZmNjZlZWNjMTk0OWFhN2VjM2MzNDgzMDM4YzRlNWM5YWJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAg
LTI2LDYgKzI2LDggQEAKICNpZm5kZWYgQXR0YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRf
aAogCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUg
PG1hY2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3
ICs0MCw5IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBw
dWJsaWM6Ci0gICAgQXR0YWNobWVudCgpOworICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1f
dHlwZShVbmluaXRpYWxpemVkKQorICAgIHsgfQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAg
VW5pbml0aWFsaXplZCwKQEAgLTUxLDYgKzU1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07
CiAKKyAgICBlbnVtIENvbm5lY3Rpb25SZXF1aXJlbWVudCB7CisgICAgICAgIEFjcXVpcmVTZW5k
UmlnaHQsCisgICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVu
dChDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCiAjaWYg
T1MoREFSV0lOKQogICAgIEF0dGFjaG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21z
Z190eXBlX25hbWVfdCBkaXNwb3NpdGlvbik7CiAgICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNz
LCBtYWNoX21zZ19zaXplX3Qgc2l6ZSwgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weU9wdGlv
bnMsIGJvb2wgZGVhbGxvY2F0ZSk7CkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBBdHRh
Y2htZW50KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBBdHRhY2ht
ZW50IG51bGxDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKKyAgICBDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IGFlMDAyYTQ2NjQ5
YzliM2NiNDc4NjIzYmM3MDA0ZTMxZDI1ZGQ5ZTQuLjE5MzljZDlhMzI5NzQyNDhmNjEwMmJkNDVl
ZGJmZjEyM2ZmMzE2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oCkBAIC02MSw2ICs2MSw4IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBD
b3JlSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKKwogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsK
ICAgICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdh
aXRpbmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBz
eW5jaHJvbm91cyBtZXNzYWdlcy4KQEAgLTEyOCw4ICsxMzAsMzEgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVy
biBpZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7IH0KICNlbGlmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQogICAgIHR5cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJv
b2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVu
dGlmaWVyOyB9CisgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gLTE7IH0KKyNlbmRpZgorCisgICAgY2xh
c3MgQ29ubmVjdGlvbkRlc2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSWRlbnRpZmll
ciBzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllcigpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb25u
ZWN0aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKKyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElk
ZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQor
ICAgICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRpZmllcikKKyAgICAg
ICAgICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIHsg
fQorICAgICAgICBJZGVudGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAgICAgSWRlbnRp
ZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIENv
bm5lY3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlvbihJZGVudGlm
aWVyLCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZp
ZXIsIENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCBl
N2JjNWQyNWY0ODdmMzFlYTkyMDU3ODlhOWYwNDQ1MDU5ZWIwZDI5Li5iZDFjNzkzNjI0N2Q3MTJm
N2VkOWY4YjUyOTA4OGFlYjZiMWExZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4
IDExZDdmNmVmMjZlYmNhYzZjODA4ZWI5NWU1Yjk1NmZkNjlhNWUzNzQuLjU0NDQwMmU1Mzc0MTQ2
MjY3MGYzZTkyNDY2MGM4NGM1Nzg2NmI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1
ZGUgIlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IDk0OGM0ZWI3ZGMxYjJlZWYx
YzFmMmZhYTdiN2Q5ZWJiOTUyN2JhZTYuLmU0MTYyM2ViZTg4NjE0NzhkMzZkNmQ2OWZiNTUxYTgw
OGM2ODNkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFj
L0Nvbm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
bWFjL0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00OCw3ICs0OCwyNCBAQCBzdGF0aWMgY29uc3Qgc2l6
ZV90IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5
SXNPdXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZp
ZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7
CisgICAgbWFjaF9wb3J0X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29u
bmVjdGlvbkRlc2NyaXB0b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1J
bnZhbGlkYXRlKCkKIHsKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRl
eCA2Yjc3MGI3N2FmMDEyMzA4NjZiMjg4YzVkNGIxOTlmMDAyYTE0Zjc5Li43OTNhYzU2M2NkNzI4
MTlhMzhlOGU0OTEzYjRlNTA1NTIwOTY1NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTMxLDYgKzMx
LDEyIEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0YWNobWVudChD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCkK
KyAgICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlm
aWVyKQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwg
c2l6ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmls
ZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0ICs1NywxNSBAQCB2b2lkIEF0dGFj
aG1lbnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhSZXRyeShtX2ZpbGVEZXNjcmlwdG9y
KTsKIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihDb25uZWN0aW9u
UmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25uZWN0
aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxlRGVz
Y3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRl
eCAwZTFiNDE4ZThlNjQxZTBkZjM3MTdmNjRhNDVhMmY1MmU1NmM2MzViLi4yMzJhMGNiZmQ4YWRl
MzA5M2RiMGExMGJlMDY0Mjg4N2ZkMWY0ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ2LDYgKzQ2
LDEzIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBB
Q0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tf
U0VRUEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tF
VAorI2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBuYW1l
c3BhY2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUgPSA0
MDk2OwpAQCAtNTUsNiArNjIsMjggQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGlu
ZSA9IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNv
bm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5l
Y3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0
aW9uRGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQorewor
ICAgIGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5J
WCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9z
aW5nIHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgd2hpbGUgKGZj
bnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQorICAgICAgICBSRUxF
QVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2Ny
aXB0b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZvIHsK
IHB1YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggMzZkMWZjNGExNjVlNTViMTA2ZjZhM2Iz
NjU3NDg1N2MyY2Y3MWNmYy4uMDJhMDY3NDAwYzQ5NTVkZDhkNjJiMGJlMzNkMGEyYzBiZDFiMmJm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
CkBAIC00NCwyNSArNDQsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAot
I2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5o
PgotCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQ
QUNLRVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X1NUUkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0j
ZW5kaWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTY5LDU0ICsxNTAsMTYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUGx1Z2luUHJv
Y2Vzcyhjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXIKIAogdm9pZCBQbHVnaW5Q
cm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgYm9vbCBkaWRIYXZl
QW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1w
dHkoKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3Rl
bmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hf
UE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgYm9vbCBkaWRIYXZlQW55
V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHko
KTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxX
ZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpj
cmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7Cisg
ICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rp
b246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29u
bmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoZGVzY3Jp
cHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFw
cGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNs
aWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0
dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0YWNo
bWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGx1Z2luIHByb2Nlc3Mgc29j
a2V0IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9T
RVRGRCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikg
ewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9zZVdp
dGhSZXRyeShzb2NrZXRzWzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNb
MV0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG9u
J3QgZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBw
cm9jZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VY
RUMpID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShzb2NrZXRz
WzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMV0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRz
WzFdKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxl
YXNlKCkpOwotCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1sw
XSk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQs
IG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2Vsc2UK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiAKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5N
b2R1bGUqIG1vZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpIHsKICAgICAgICAgaWYgKCFk
aWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAK
aW5kZXggM2JkMWVhNjAzZTMxODhiNDNjMzA1OTU1NTE2ZjcxNzFmZWE2ZDQyMi4uZGY3MTg0MmM5
ZmU1MGIzNWQ5NmQ0NThkYTJlYmJmZGMxNjY3NmZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNw
cApAQCAtNjcsMTEgKzY3LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltd
Pj4gY3JlYXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb24KIAogdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAg
IGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAg
U3RyaW5nIHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAg
IHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC05OCwyMCArOTQsMTkg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGlmICghbV9sYXVu
Y2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKQogICAgICAgICBwcm9jZXNzQ21k
UHJlZml4ID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKLSAgICBh
dXRvIGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBh
dGgsIFN0cmluZzo6bnVtYmVyKHNvY2tldHNbMF0pLCBwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGFy
Z3MgPSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0
cmluZzo6bnVtYmVyKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKSwgcGx1Z2luUGF0aCk7
CiAKICAgICAvLyBEbyBub3QgcGVyZm9ybSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgbWlkZGxl
IG9mIHRoZSBmb3JrKCkKICAgICAvLyBleGVjKCkgYmVsb3cuIEZhc3RNYWxsb2MgY2FuIHBvdGVu
dGlhbGx5IGRlYWRsb2NrIGJlY2F1c2UKICAgICAvLyB0aGUgZm9yaygpIGRvZXNuJ3QgaW5oZXJp
dCB0aGUgcnVubmluZyB0aHJlYWRzLgogICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKICAgICBpZiAo
IXBpZCkgeyAvLyBDaGlsZCBwcm9jZXNzLgotICAgICAgICBjbG9zZShzb2NrZXRzWzFdKTsKICAg
ICAgICAgZXhlY3ZwKGFyZ3MuZGF0YSgpWzBdLmdldCgpLCByZWludGVycHJldF9jYXN0PGNoYXIq
IGNvbnN0Kj4oYXJncy5kYXRhKCkpKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8gcGFy
ZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9zZShk
ZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZp
ZXIgPSBwaWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2Vz
cywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjpt
YWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5n
UHJvY2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9j
ZXNzLCB0aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xh
dW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJv
Y2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCBkZDgwMDU2MTgwYzEwZjZmOWExZTk5ODcyZmQxZDk0
NWM1NTcxOTFlLi40ZDI4OGVkY2RjNzViNjBkNzQ0MjVjODliYTc3N2M3YWNhZTBmZDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVu
Y2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Q
cm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC00NywzMiArNDcsMTkgQEAKICNpbmNsdWRlIDxzeXMv
c29ja2V0Lmg+CiAjZW5kaWYKIAotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tF
VF9UWVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NU
UkVBTQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRh
KQogewotICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwotICAgIGNs
b3NlKHNvY2tldCk7CisgICAgLy8gTWFrZSBjaGlsZCBwcm9jZXNzIGluaGVyaXQgcGFyZW50J3Mg
bG9jYWxlLgorICAgIGdfc2V0ZW52KCJMQ19BTEwiLCBzZXRsb2NhbGUoTENfQUxMLCAwKSwgVFJV
RSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBH
UGlkIHBpZCA9IDA7Ci0KLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihB
Rl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIGdfcHJpbnRl
cnIoIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJlcnJvcihlcnJubykp
OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAg
ICBTdHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyByZWFsRXhl
Y3V0YWJsZVBhdGgsIHJlYWxQbHVnaW5QYXRoOwpAQCAtOTYsMjQgKzgzLDI1IEBAIHZvaWQgUHJv
Y2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICB9CiAKICAgICByZWFsRXhlY3V0YWJs
ZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwotICAgIEdP
d25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1swXSkpOwor
ICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZGVzY3JpcHRv
ci5jbGllbnRJZGVudGlmaWVyKCkpKTsKICAgICBjaGFyKiBhcmd2WzRdOwogICAgIGFyZ3ZbMF0g
PSBjb25zdF9jYXN0PGNoYXIqPihyZWFsRXhlY3V0YWJsZVBhdGguZGF0YSgpKTsKICAgICBhcmd2
WzFdID0gc29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFs
UGx1Z2luUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbM10gPSAwOwogCisgICAgR1BpZCBwaWQgPSAw
OwogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwg
YXJndiwgMCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rp
b24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkg
eworICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NS
SVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKGRlc2NyaXB0
b3Iuc2VydmVySWRlbnRpZmllcigpKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAg
ICBnX3ByaW50ZXJyKCJVbmFibGUgdG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5cbiIsIGVy
cm9yLT5tZXNzYWdlKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0g
ICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlm
aWVyKCkpOwogICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBXZSd2ZSBm
aW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBy
dW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVu
Y2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmll
ciwgc29ja2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJv
Y2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJ
ZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1Byb2Nlc3NMYXVuY2hlclF0LmNwcAppbmRl
eCA3ZDAyMDM0NzhjZDUxMTlhZGYzMDBlODhkMTM1YzkzMzljZDkzZTI4Li42ZDYwOTZlNWNkNTdk
YzI2NDFhYTc4YzMwYjEzOGM1YjIzOWJjYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvcXQvUHJvY2Vzc0xhdW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9Qcm9jZXNzTGF1bmNoZXJRdC5jcHAKQEAgLTQz
LDE5ICs0MywxMyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgZGVm
aW5lZChRX09TX1VOSVgpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0j
aW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2VuZGlm
CiAKICNpZiBkZWZpbmVkKFFfT1NfTElOVVgpCi0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiAjaW5j
bHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Jl
c291cmNlLmg+CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRPV1MpCkBAIC03MywxMyArNjcsNiBAQAog
ZXh0ZXJuICJDIiBrZXJuX3JldHVybl90IGJvb3RzdHJhcF9yZWdpc3RlcjIobWFjaF9wb3J0X3Qs
IG5hbWVfdCwgbWFjaF9wb3J0X3QsIHVpbnQ2NF90KTsKICNlbmRpZgogCi0vLyBmb3IgUU5YIHdl
IG5lZWQgU09DS19ER1JBTSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTU1MwotI2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFkZWZpbmVkKFFfT1Nf
TUFDWCkgJiYgIU9TKFFOWCkKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNl
bHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KLSNlbmRpZgotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNDIsMzYgKzEyOSwxOCBA
QCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgQVNTRVJUX1VOVVNF
RChrciwga3IgPT0gS0VSTl9TVUNDRVNTKTsKIAogICAgIGNvbW1hbmRMaW5lID0gY29tbWFuZExp
bmUuYXJnKHNlcnZpY2VOYW1lKTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxzZQogICAgIENvcmVJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyOwot
ICAgIGlmICghQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRp
ZmllcnMoY29ubmVjdG9yLCBjbGllbnRJZGVudGlmaWVyKSkgewotICAgICAgICAvLyBGSVhNRTog
V2hhdCBzaG91bGQgd2UgZG8gaGVyZT8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2Ny
aXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
KyAgICBjb25uZWN0b3IgPSBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKTsKKyAgICBjbGll
bnRJZGVudGlmaWVyID0gZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCk7CiAgICAgY29tbWFu
ZExpbmUgPSBjb21tYW5kTGluZS5hcmcocXVsb25nbG9uZyhjbGllbnRJZGVudGlmaWVyKSk7CisK
KyNpZiBPUyhXSU5ET1dTKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGlu
aGVyaXRzIHRoZSBjbGllbnQgaWRlbnRpZmllci4KICAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9u
KGNsaWVudElkZW50aWZpZXIsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVS
SVQpOwotI2Vsc2UKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0cGFpcihBRl9V
TklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKLSAgICAgICAgcURlYnVnKCkg
PDwgIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQgd2l0aCBlcnJubzoiIDw8IGVycm5vOwotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIERvbid0IGV4cG9zZSB0aGUgdWkgc29ja2V0IHRvIHRoZSB3ZWIgcHJvY2VzcwotICAgIHdo
aWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAg
ICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpbnQgY29ubmVjdG9yID0gc29ja2V0c1sxXTsKLSAgICBjb21t
YW5kTGluZSA9IGNvbW1hbmRMaW5lLmFyZyhzb2NrZXRzWzBdKTsKICNlbmRpZgorI2VuZGlmIC8v
IE9TKERBUldJTikKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBpZiAobV9sYXVu
Y2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFBsdWdpblByb2Nlc3MpCkBAIC0xOTQsMTggKzE2Myw2
IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbHNlCiAgICAgd2Vi
UHJvY2Vzc09yU1VJREhlbHBlci0+c3RhcnQoY29tbWFuZExpbmUpOwogI2VuZGlmCi0KLSNpZiBP
UyhVTklYKSAmJiAhT1MoREFSV0lOKQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgd2ViIHNvY2tl
dCB0byBwb3NzaWJsZSBmdXR1cmUgd2ViIHByb2Nlc3NlcwotICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8g
IT0gRUlOVFIpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgZGVsZXRlIHdlYlByb2Nlc3NPclNVSURIZWxwZXI7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmICghd2ViUHJvY2Vzc09yU1VJREhlbHBl
ci0+d2FpdEZvclN0YXJ0ZWQoKSkgewogICAgICAgICBxRGVidWcoKSA8PCAiRmFpbGVkIHRvIHN0
YXJ0IiA8PCBjb21tYW5kTGluZTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDA5NDBkYjRiMDA1MzgwODE3ZGE5MWU5ZTc4OGM2MDY5YTJmMjg0NGYu
Ljg1OWQyNzZkMjU2YjljM2QxYTU3YjljY2YwZDY2OGFjYzIxZmNlNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisj
aW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMDgsMTIgKzEwOSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRU
b0xhdW5jaCgpCiAgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBv
ciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAg
ICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQot
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENv
cmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZv
cndhcmRTZW5kUmlnaHQpKTsKICAgICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nl
c3MgbWFuYWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRo
aXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xNTIsMTggKzE0OCwxNCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFj
aG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRh
Y2htZW50JiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVj
dGlvbiByZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29u
bmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVw
bHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCks
IE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0jZW5kaWYKKyAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24u
Y29ubmVjdGlvbklkZW50aWZpZXIoKSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRS
aWdodCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IDZjNTlkY2U2M2YxOTQ3OTUzNjk2Njk1
YTc1NmJkYjYwODkwYThjYmMuLmMzZDU5Nzg0Y2ZlYWExYjE1MWI4YmE1ODQyMDA3ZTdkOTZlZThl
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFn
ZXIuaCIKQEAgLTEzNiwxNCArMTM3LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdp
blByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgLy8gVGhlIHBsdWctaW4gcHJv
Y2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyBy
ZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9w
ZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpLCBmYWxzZSk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAg
ICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Ci0jZWxzZQot
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENv
cmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZv
cndhcmRTZW5kUmlnaHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdH
ZXRTaXRlc1JlcGxpZXMuaXNFbXB0eSgpKQpAQCAtMjMyLDIwICsyMjYsMTMgQEAgdm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3Jl
SVBDOjpDb25uZWN0aW8KICNlbmRpZgogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29u
bmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uLCBib29sIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmly
c3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklk
ZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9u
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5k
UmlnaHQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKIH0KIAog
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEdldFNpdGVzV2l0aERhdGEoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCAwNjVlNzdhNTZkNDRhODRiMDU5YTRlZjZhMTI1NWQ0
NGNlN2UxZTkyLi42ZTgwYTIyNTQ2ZTBmNjI1N2M4ZTM5ZTk2YjcxODk3ZjQyODA0NmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNzQsMTUgKzc0LDkgQEAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgc3Vw
cG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiksIDApKQogICAgICAgICByZXR1cm4gMDsK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkp
OworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwog
ICAgIGlmIChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09D
S0VUUykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0g
ICAgaWYgKGNvbm5lY3Rpb25JZGVudGlmaWVyID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLSNl
bmRpZgogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2lu
UHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJ
bml0aWFsaXphdGlvbik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IDM3YThiNDE0ZGQwNzkzMzYyZGRiYzg4ZmJjNTgzMTAyMmFmOWRiMDkuLjJl
ZWFhYjJjNjk2YjRmOWFjMDVmY2E5NWVmYzZiZTk2MTZkZmMzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzcwLDEzICszNzAsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVu
Y29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCk7CiAgICAgaWYg
KENvcmVJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZp
ZXIpKQogICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
I2VuZGlmCisKICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213361</attachid>
            <date>2013-10-04 07:03:28 -0700</date>
            <delta_ts>2013-11-21 12:34:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20131004160342.patch</filename>
            <type>text/plain</type>
            <size>34040</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2JiNjE5ZmI2YmU2YmE0
MDFkOGNkN2MxZWFkNjBiYTQ0ZDc3MTgzMy4uYmI5MzFkNjEyM2MzM2NkMTkxM2E3MzhhMzlmNTVj
ODlkZjJkYjkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMy0xMC0wNCAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4gYW5kIEt3
YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0Pi4KKworICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAuIEludHJv
ZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24gYW5kIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4gdGhlIHBs
YXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBhbmQgZXh0
ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNoYW5pbmcg
SVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyB1
bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXggZG9tYWlu
IHNvY2tldHMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0aGluZ3Mgd2VyZSBmaXhlZCBieSBD
c2FiYSBPc3p0cm9nb27DoWM6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzIGNoYW5nZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBhZnRlciByMTU2Mjc3
LgorICAgICAgICAtIFJlc29sdmUgYSB0cml2aWFsIGNvbmZsaWN0IGluIFByb2Nlc3NMYXVuY2hl
ckVmbC5jcHAgYWZ0ZXIgcjE1NjA2My4KKyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25m
bGljdCBpbiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBXaW5kb3dzIHJlbGF0ZWQgY2hhbmdlcyBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBRdCByZWxhdGVkIGNoYW5nZXMKKyAgICAgICAg
LSBSZXNvbHZlIHRyaXZpYWwgY29uZmxpY3RzIGluIEFyZ3VtZW50RGVjb2Rlci5oIGFuZCBBcmd1
bWVudEVuY29kZXIuaC4KKyAgICAgICAgLSBSZW1vdmUgb2Jzb2xldGUgY2hhbmdlIGluIFByb2Nl
c3NMYXVuY2hlckd0ay5jcHAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0Zm9ybSBzcGVj
aWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5j
b2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3VtZW50W0VuY29k
ZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRlcGVuZGVuY3kg
bm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
YWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlvbik6
CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkF0
dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1l
bnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2FzIHNpbXBseSB3
cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0xIGFuZCBub3Qg
MC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpD
b25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJh
Y3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpz
ZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2UgYXJlIHRoZSBz
YW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQQyBjaGFubmVs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoK
KyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0
YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVxdWly
ZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmluZyBz
b2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBjb250
cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRp
Zmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlv
bi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBz
aW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29k
IHdheSB0byBkby4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9m
IHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuIFJlbW92ZWQg
dGhlIGNsb3NlIGNhbGwgZnJvbSB0aGUgY2hpbGQgc2lkZQorICAgICAgICBvZiB0aGUgZm9yayBi
ZWNhdXNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3NlIGNhbGwgc2lu
Y2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRv
TGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRl
cmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwogMjAxMy0xMC0wMyAgTWFyayBS
b3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNTU3ODcpOiBX
ZWJLaXRUZXN0UnVubmVyIHJlYnVpbGRzIGZyb20gc2NyYXRjaCB3aGVuIGRvaW5nIGFuIGluY3Jl
bWVudGFsIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggNDQ0OWUxNzM1YzkwZDQxYjcxMjdiMGI5Njc5YmVjMzk5Njg1OTJm
MS4uYWNhYTA3NmY1MzYxYjIxNjRjZmQwNjJlNjEzMmUyNGEwZWUzZmE5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTg4LDIw
ICsxODgsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogewotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3Rl
bmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hf
UE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgdXNpbmcgbmFtZXNwYWNl
IENvcmVJUEM7CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBS
ZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlw
dG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
KyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRl
bnRpZmllcigpKTsKICAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlv
bi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3Rl
bmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVu
dFBvcnQoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVT
ZW5kUmlnaHQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGNsaWVudFBvcnQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRp
ZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmNwcAppbmRleCA2ZDU1MDc4MjE0OTQ1MDBhMDE3OTI1Zjg3ZjZhY2VjZTY1ZWJkYmY4Li4z
NzEyMmI4YWFiMDIxOTBkNTAzYmY4ZWFiNGE5NjFmN2E1NDdmZTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVy
LmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCmluZGV4IGJkZTU1ZWQ0YWY5OGMyN2I2ZDQ1MzAzNDgw
MmExNzRiYzZiN2Q2ZmIuLjc5Mjk0YTIyYzA2YjZhMTU1MTcwOTVjOTQ3ZGE2YmU4MWM1ZDRiYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29k
ZXIuaApAQCAtMjcsMTEgKzI3LDExIEBACiAjZGVmaW5lIEFyZ3VtZW50RGVjb2Rlcl9oCiAKICNp
bmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewogCitjbGFzcyBBdHRhY2ht
ZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKICAgICAKIGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rl
ci5jcHAKaW5kZXggNzc3NTM2ZmZhN2Q0NjYyNDJmZTI2Y2JkMWIwMTIxOTc3OTI5ZTI2Ni4uZTA1
NWVmYTg5MjViOTZiNmRiNzExYjc0ZGNmM2VkOGUzODExZTBhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5o
IgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IDA0N2MzNWQ3
NjMwZDVjN2ZjZTIyMTIwOTVhMTkwYTBlZGFmMDk5MGUuLmEwODliMDQzNjRkNzY5NGNkZjZiNWEy
MjA5MTc1MTkyZmJjMWZmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudEVuY29kZXIuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjZGVmaW5lIEFyZ3Vt
ZW50RW5jb2Rlcl9oCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0
YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMg
ewogCiBjbGFzcyBBcmd1bWVudEVuY29kZXI7CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0
YVJlZmVyZW5jZTsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDVkMTliYWQxN2YxNmIwYWM4
MWIwZmY4M2FhNDY4MGY4NmZiYTk3ZTYuLjBiNzgyZDE0MTEyZWRjM2ZjNmU3NTI2NDUyOGViMWI5
Zjc3ZDI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0
YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2ht
ZW50LmNwcApAQCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0
YWNobWVudDo6QXR0YWNobWVudCgpCi0gICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNpZiBP
UyhEQVJXSU4pCitzdGF0aWMgaW5saW5lIG1hY2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VEaXNw
b3NpdGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7
CisgICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpCisg
ICAgICAgIHJldHVybiBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1l
bnQgPT0gQXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50
KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVjdGlv
blJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKK3sK
KyAgICBtX3BvcnQucG9ydCA9IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9zaXRp
b24gPSBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lO
KQogQXR0YWNobWVudDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNn
X3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKIHsK
QEAgLTU3LDYgKzcwLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90
eXBlID0gVW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29u
bmVjdGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7
CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlv
bihyZXF1aXJlbWVudCkpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6
OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6
SWRlbnRpZmllcihwb3J0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9BdHRhY2htZW50LmgKaW5kZXggYTVhZjU1OTJkMDNiNDgyODY2NDk2ODE5ZDVk
MjBhNGY0MWFjMGU5Zi4uZWM5MzZmNjZlZWNjMTk0OWFhN2VjM2MzNDgzMDM4YzRlNWM5YWJmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmgKQEAgLTI2
LDYgKzI2LDggQEAKICNpZm5kZWYgQXR0YWNobWVudF9oCiAjZGVmaW5lIEF0dGFjaG1lbnRfaAog
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1h
Y2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RyYXBzLmg+CkBAIC0zOCw3ICs0
MCw5IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAogY2xhc3MgQXR0YWNobWVudCB7CiBwdWJs
aWM6Ci0gICAgQXR0YWNobWVudCgpOworICAgIEF0dGFjaG1lbnQoKQorICAgICAgICA6IG1fdHlw
ZShVbmluaXRpYWxpemVkKQorICAgIHsgfQogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVW5p
bml0aWFsaXplZCwKQEAgLTUxLDYgKzU1LDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH07CiAK
KyAgICBlbnVtIENvbm5lY3Rpb25SZXF1aXJlbWVudCB7CisgICAgICAgIEFjcXVpcmVTZW5kUmln
aHQsCisgICAgICAgIEZvcndhcmRTZW5kUmlnaHQKKyAgICB9OworCisgICAgQXR0YWNobWVudChD
b25uZWN0aW9uOjpJZGVudGlmaWVyLCBDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCiAjaWYgT1Mo
REFSV0lOKQogICAgIEF0dGFjaG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190
eXBlX25hbWVfdCBkaXNwb3NpdGlvbik7CiAgICAgQXR0YWNobWVudCh2b2lkKiBhZGRyZXNzLCBt
YWNoX21zZ19zaXplX3Qgc2l6ZSwgbWFjaF9tc2dfY29weV9vcHRpb25zX3QgY29weU9wdGlvbnMs
IGJvb2wgZGVhbGxvY2F0ZSk7CkBAIC01OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICBBdHRhY2ht
ZW50KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBBdHRhY2htZW50
IG51bGxDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKKyAgICBDb25uZWN0aW9u
OjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IGJhODAwNDEwZTVkMTFm
ODU5MjM3MmYzYjAwMTFjN2RiODUwOWI3MDQuLmY4Mzc2MTM3ODc2MWNkZDg3NDdlYzEyN2NlY2Jm
ZmJhNWMwNDc3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oCkBAIC01Nyw2ICs1Nyw4IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBDb3Jl
SVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKKwogZW51bSBNZXNzYWdlU2VuZEZsYWdzIHsKICAg
ICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuIHdhaXRp
bmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBzeW5j
aHJvbm91cyBtZXNzYWdlcy4KQEAgLTEyNCw4ICsxMjYsMzEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBp
ZGVudGlmaWVyLnBvcnQgPT0gTUFDSF9QT1JUX05VTEw7IH0KICNlbGlmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIHR5cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wg
aWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlm
aWVyOyB9CisgICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50
aWZpZXIpIHsgcmV0dXJuIGlkZW50aWZpZXIgPT0gLTE7IH0KKyNlbmRpZgorCisgICAgY2xhc3Mg
Q29ubmVjdGlvbkRlc2NyaXB0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSWRlbnRpZmllciBz
ZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgY2xpZW50SWRlbnRp
ZmllcigpIGNvbnN0OworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb25uZWN0
aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgQ29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50
aWZpZXIgc2VydmVySWRlbnRpZmllciwgSWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorICAg
ICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZpZXIoc2VydmVySWRlbnRpZmllcikKKyAgICAgICAg
ICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCisgICAgICAgIHsgfQor
ICAgICAgICBJZGVudGlmaWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAgICAgSWRlbnRpZmll
ciBtX2NsaWVudElkZW50aWZpZXI7CiAjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIENvbm5l
Y3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlvbihJZGVudGlmaWVy
LCBDbGllbnQqLCBXZWJDb3JlOjpSdW5Mb29wKiBjbGllbnRSdW5Mb29wKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25uZWN0aW9uKElkZW50aWZpZXIs
IENsaWVudCosIFdlYkNvcmU6OlJ1bkxvb3AqIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAppbmRleCBlNjk3
MWE5ZTI0MzAwY2Y2Yzc3ZDljMTY4NzI1M2ViY2QzMjlmM2NiLi4wODQxNmY0Y2IzZjU2NzkyZmVk
NTE3NjQyMmJlNjcxZDVhNDRiNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VEZWNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IDEx
ZDdmNmVmMjZlYmNhYzZjODA4ZWI5NWU1Yjk1NmZkNjlhNWUzNzQuLjU0NDQwMmU1Mzc0MTQ2MjY3
MGYzZTkyNDY2MGM4NGM1Nzg2NmI3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvTWVzc2FnZUVuY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZUVuY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUg
IlN0cmluZ1JlZmVyZW5jZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwCmluZGV4IGZmNTY3NDlhMDcxOTlmMjYwYjA0
N2ZjNGJiNWY5YzViODgwMGFmYTQuLmZhYmFkYjFhZDJiNDlhZWU5MzEyNWU1M2FmZjljODc1ODc5
Y2EyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nv
bm5lY3Rpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFj
L0Nvbm5lY3Rpb25NYWMuY3BwCkBAIC00OCw3ICs0OCwyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IGlubGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNP
dXRPZkxpbmUgPSAxIDw8IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7Cisg
ICAgbWFjaF9wb3J0X3QgcG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVj
dGlvbkRlc2NyaXB0b3IocG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZh
bGlkYXRlKCkKIHsKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRleCA2
Yjc3MGI3N2FmMDEyMzA4NjZiMjg4YzVkNGIxOTlmMDAyYTE0Zjc5Li43OTNhYzU2M2NkNzI4MTlh
MzhlOGU0OTEzYjRlNTA1NTIwOTY1NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKQEAgLTMxLDYgKzMxLDEy
IEBACiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAorQXR0YWNobWVudDo6QXR0YWNobWVudChDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCkKKyAg
ICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9maWxlRGVzY3JpcHRvcihpZGVudGlmaWVy
KQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwgc2l6
ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVtb3J5VHlwZSkKICAgICAsIG1fZmlsZURl
c2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0ICs1NywxNSBAQCB2b2lkIEF0dGFjaG1l
bnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhSZXRyeShtX2ZpbGVEZXNjcmlwdG9yKTsK
IH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVx
dWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoLTEpOworfQorCitDb25uZWN0aW9u
OjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUpOworICAgIHJldHVybiBmaWxlRGVzY3Jp
cHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCAw
ZTFiNDE4ZThlNjQxZTBkZjM3MTdmNjRhNDVhMmY1MmU1NmM2MzViLi4yMzJhMGNiZmQ4YWRlMzA5
M2RiMGExMGJlMDY0Mjg4N2ZkMWY0ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ2LDYgKzQ2LDEz
IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKKy8vIE9uIFFOWCBTT0NLX1NFUVBBQ0tF
VCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZpbmVkKSwgc2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4KKyNpZiBkZWZpbmVkKFNPQ0tfU0VR
UEFDS0VUKSAmJiAhT1MoUU5YKQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAor
I2Vsc2UKKyNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TVFJFQU0KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWVzc2FnZU1heFNpemUgPSA0MDk2
OwpAQCAtNTUsNiArNjIsMjggQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9
IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAg
IGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIC8vIEF2b2lkIGV4cG9zaW5n
IHRoZSBzZXJ2ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgd2hpbGUgKGZjbnRs
KHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQorICAgICAgICBSRUxFQVNF
X0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0
b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZvIHsKIHB1
YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggMzZkMWZjNGExNjVlNTViMTA2ZjZhM2IzNjU3
NDg1N2MyY2Y3MWNmYy4uMDJhMDY3NDAwYzQ5NTVkZDhkNjJiMGJlMzNkMGEyYzBiZDFiMmJmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBA
IC00NCwyNSArNDQsNiBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAotI2lm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8
ZmNudGwuaD4KLSNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgot
Ci0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNL
RVQKLSNlbHNlCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NU
UkVBTQotI2Vsc2UKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19ER1JBTQotI2VuZGlmCi0jZW5k
aWYgLy8gU09DS19TRVFQQUNLRVQKLSNlbmRpZiAvLyBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY5
LDU0ICsxNTAsMTYgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUGx1Z2luUHJvY2Vz
cyhjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXIKIAogdm9pZCBQbHVnaW5Qcm9j
ZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgYm9vbCBkaWRIYXZlQW55
V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHko
KTsKKyAgICB1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3Rlbmlu
Z1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9S
VF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgYm9vbCBkaWRIYXZlQW55V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsK
IAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxXZWJQ
cm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAg
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246
OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRv
ci5zZXJ2ZXJJZGVudGlmaWVyKCkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVu
dFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIEF0dGFj
aG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0YWNobWVu
dDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA9PSAtMSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGx1Z2luIHByb2Nlc3Mgc29ja2V0
IHRvIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1sxXSwgRl9TRVRG
RCwgRkRfQ0xPRVhFQykgID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhS
ZXRyeShzb2NrZXRzWzBdKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMV0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRG9uJ3Qg
ZXhwb3NlIHRoZSB3ZWIgcHJvY2VzcyBzb2NrZXQgdG8gcG9zc2libGUgZnV0dXJlIHdlYiBwcm9j
ZXNzZXMuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMp
ID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjbG9zZVdpdGhSZXRyeShzb2NrZXRzWzBd
KTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMV0pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShzb2NrZXRzWzFd
KTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNl
KCkpOwotCi0gICAgQ29yZUlQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0c1swXSk7
Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQsIG1f
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2Vsc2UKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiAKICAgICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1
bGUqIG1vZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxlKCkpIHsKICAgICAgICAgaWYgKCFkaWRI
YXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5k
ZXggM2JkMWVhNjAzZTMxODhiNDNjMzA1OTU1NTE2ZjcxNzFmZWE2ZDQyMi4uZGY3MTg0MmM5ZmU1
MGIzNWQ5NmQ0NThkYTJlYmJmZGMxNjY3NmZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApA
QCAtNjcsMTEgKzY3LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPj4g
Y3JlYXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb24KIAogdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlm
IChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
Q29yZUlQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3Ry
aW5nIHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIHN3
aXRjaCAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSB7CkBAIC05OCwyMCArOTQsMTkgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGlmICghbV9sYXVuY2hP
cHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNFbXB0eSgpKQogICAgICAgICBwcm9jZXNzQ21kUHJl
Zml4ID0gbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKLSAgICBhdXRv
IGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgs
IFN0cmluZzo6bnVtYmVyKHNvY2tldHNbMF0pLCBwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGFyZ3Mg
PSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmlu
Zzo6bnVtYmVyKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKSwgcGx1Z2luUGF0aCk7CiAK
ICAgICAvLyBEbyBub3QgcGVyZm9ybSBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgbWlkZGxlIG9m
IHRoZSBmb3JrKCkKICAgICAvLyBleGVjKCkgYmVsb3cuIEZhc3RNYWxsb2MgY2FuIHBvdGVudGlh
bGx5IGRlYWRsb2NrIGJlY2F1c2UKICAgICAvLyB0aGUgZm9yaygpIGRvZXNuJ3QgaW5oZXJpdCB0
aGUgcnVubmluZyB0aHJlYWRzLgogICAgIHBpZF90IHBpZCA9IGZvcmsoKTsKICAgICBpZiAoIXBp
ZCkgeyAvLyBDaGlsZCBwcm9jZXNzLgotICAgICAgICBjbG9zZShzb2NrZXRzWzFdKTsKICAgICAg
ICAgZXhlY3ZwKGFyZ3MuZGF0YSgpWzBdLmdldCgpLCByZWludGVycHJldF9jYXN0PGNoYXIqIGNv
bnN0Kj4oYXJncy5kYXRhKCkpKTsKICAgICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50
IHByb2Nlc3M7Ci0gICAgICAgIGNsb3NlKHNvY2tldHNbMF0pOworICAgICAgICBjbG9zZShkZXNj
cmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIg
PSBwaWQ7CiAgICAgICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2Vzcywg
bWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWlu
KCktPmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJv
Y2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+
ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNz
LCB0aGlzLCBwaWQsIGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vz
c0xhdW5jaGVyR3RrLmNwcAppbmRleCBkZDgwMDU2MTgwYzEwZjZmOWExZTk5ODcyZmQxZDk0NWM1
NTcxOTFlLi40OWY3MWVlNzA0NGUyYTc4MTQ0MWEyOTc4MjlmOTFmYWQzM2FjNmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hl
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC00NywzMiArNDcsMTcgQEAKICNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+CiAjZW5kaWYKIAotI2lmZGVmIFNPQ0tfU0VRUEFDS0VUCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU0VRUEFDS0VUCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVB
TQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RhdGljIHZvaWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQog
ewotICAgIGludCBzb2NrZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwotICAgIGNsb3Nl
KHNvY2tldCk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsK
LSAgICBHUGlkIHBpZCA9IDA7Ci0KLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBpZiAoc29ja2V0
cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPCAwKSB7Ci0gICAgICAgIGdf
cHJpbnRlcnIoIkNyZWF0aW9uIG9mIHNvY2tldCBmYWlsZWQ6ICVzLlxuIiwgZ19zdHJlcnJvcihl
cnJubykpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7
CiAKICAgICBTdHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyBy
ZWFsRXhlY3V0YWJsZVBhdGgsIHJlYWxQbHVnaW5QYXRoOwpAQCAtOTYsMjQgKzgxLDI1IEBAIHZv
aWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICB9CiAKICAgICByZWFsRXhl
Y3V0YWJsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwot
ICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0c1sw
XSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZGVz
Y3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpKTsKICAgICBjaGFyKiBhcmd2WzRdOwogICAgIGFy
Z3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsRXhlY3V0YWJsZVBhdGguZGF0YSgpKTsKICAg
ICBhcmd2WzFdID0gc29ja2V0LmdldCgpOwogICAgIGFyZ3ZbMl0gPSBjb25zdF9jYXN0PGNoYXIq
PihyZWFsUGx1Z2luUGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbM10gPSAwOwogCisgICAgR1BpZCBw
aWQgPSAwOwogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5
bmMoMCwgYXJndiwgMCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVw
RnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0
cigpKSkgeworICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZF
X0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKGRl
c2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewog
ICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUgdG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5c
biIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJ
ZGVudGlmaWVyKCkpOwogICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBX
ZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUg
bWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJlByb2Nl
c3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRl
bnRpZmllciwgc29ja2V0c1sxXSkpOworICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmlu
ZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3By
b2Nlc3NJZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDA5NDBkYjRiMDA1MzgwODE3ZGE5MWU5ZTc4OGM2MDY5YTJmMjg0NGYuLjg1OWQyNzZkMjU2
YjljM2QxYTU3YjljY2YwZDY2OGFjYzIxZmNlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNp
bmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMDgsMTIgKzEwOSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAg
ICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtdXN0IGhhdmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNl
bmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1pZ2h0IGhhdmUuCiAgICAgd2hpbGUgKCFt
X3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgp
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRh
Y2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFj
aG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmln
aHQpKTsKICAgICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nlc3MgbWFuYWdlciB0
byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5IGNhdXNl
IHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xNTIsMTggKzE0OCwxNCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQwogewogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25u
ZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0
eSgpKTsKIAogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4K
ICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29y
ZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklk
ZW50aWZpZXIoKSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCmluZGV4IDdhZDE3MmE0MDdiMmE2NjYzZDI3MTc2YzkzYWViMGVkYzgy
YTRhNGEuLjAwMDJmMTIxMTc0YzUyODhlNWQxMGIzNzVmYTQ4OTgzNWIxOTYxMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTEz
NiwxNCArMTM3LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFz
aGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgLy8gVGhlIHBsdWctaW4gcHJvY2VzcyBtdXN0IGhh
dmUgY3Jhc2hlZCBvciBleGl0ZWQsIHNlbmQgYW55IHBlbmRpbmcgc3luYyByZXBsaWVzIHdlIG1p
Z2h0IGhhdmUuCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJl
cGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQp
LCBmYWxzZSk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHkt
PnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Ci0jZWxzZQotICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFj
aG1lbnQ6Om51bGxDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmln
aHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdHZXRTaXRlc1JlcGxp
ZXMuaXNFbXB0eSgpKQpAQCAtMjMwLDIwICsyMjQsMTMgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0
aW8KICNlbmRpZgogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50
aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKK3Zv
aWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uLCBib29sIHN1cHBvcnRzQXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBj
b25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9y
dCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVw
bHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisg
ICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIENvcmVJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpLCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmRpZEdldFNpdGVzV2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNp
dGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcAppbmRleCAwNjVlNzdhNTZkNDRhODRiMDU5YTRlZjZhMTI1NWQ0NGNlN2UxZTkyLi42
ZTgwYTIyNTQ2ZTBmNjI1N2M4ZTM5ZTk2YjcxODk3ZjQyODA0NmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApAQCAtNzQsMTUgKzc0LDkgQEAgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hy
b25vdXNJbml0aWFsaXphdGlvbiksIDApKQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmIChDb3Jl
SVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmZpbGVEZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5l
Y3Rpb25JZGVudGlmaWVyID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogCiAgICAg
UmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2Vu
LCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlv
bik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGJiOGYyZGJhODk0NTdlZjY5NzRiOWY2MTUwNTZmMTQ1MjdlNTE1YjguLjdhZmIxZTViZjQ1Nzk2
MjQ1OGEwNjZlMGM5NzBiNWNmNDVmN2NjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMzY3LDEzICszNjcsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBDb3JlSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCk7CiAgICAgaWYgKENvcmVJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm47Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCisKICAg
ICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217598</attachid>
            <date>2013-11-21 12:34:54 -0800</date>
            <delta_ts>2013-11-21 13:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20131121213554.patch</filename>
            <type>text/plain</type>
            <size>33973</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2YyZmRiNDY1MmE2Y2U1
ZWU2MjEzMzFmMzc4ZmZjYjhkMGJkMDM4OS4uYTA3ZTJkYWI2NmRjN2Q1Yzk1YTdmZTgxZjU3YzBi
MTMyODI2NmMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMy0xMS0yMSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4gYW5kIEt3
YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0Pi4KKworICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAuIEludHJv
ZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24gYW5kIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4gdGhlIHBs
YXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBhbmQgZXh0
ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNoYW5pbmcg
SVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyB1
bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXggZG9tYWlu
IHNvY2tldHMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0aGluZ3Mgd2VyZSBmaXhlZCBieSBD
c2FiYSBPc3p0cm9nb27DoWM6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzIGNoYW5nZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBhZnRlciByMTU2Mjc3
LgorICAgICAgICAtIFJlc29sdmUgYSB0cml2aWFsIGNvbmZsaWN0IGluIFByb2Nlc3NMYXVuY2hl
ckVmbC5jcHAgYWZ0ZXIgcjE1NjA2My4KKyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25m
bGljdCBpbiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBXaW5kb3dzIHJlbGF0ZWQgY2hhbmdlcyBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBRdCByZWxhdGVkIGNoYW5nZXMKKyAgICAgICAg
LSBSZXNvbHZlIHRyaXZpYWwgY29uZmxpY3RzIGluIEFyZ3VtZW50RGVjb2Rlci5oIGFuZCBBcmd1
bWVudEVuY29kZXIuaC4KKyAgICAgICAgLSBSZW1vdmUgb2Jzb2xldGUgY2hhbmdlIGluIFByb2Nl
c3NMYXVuY2hlckd0ay5jcHAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0Zm9ybSBzcGVj
aWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5j
b2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3VtZW50W0VuY29k
ZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRlcGVuZGVuY3kg
bm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
YWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlvbik6
CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkF0
dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1l
bnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2FzIHNpbXBseSB3
cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0xIGFuZCBub3Qg
MC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpD
b25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJh
Y3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpz
ZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2UgYXJlIHRoZSBz
YW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQQyBjaGFubmVs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoK
KyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0
YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVxdWly
ZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmluZyBz
b2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBjb250
cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRp
Zmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlv
bi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBz
aW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29k
IHdheSB0byBkby4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9m
IHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuIFJlbW92ZWQg
dGhlIGNsb3NlIGNhbGwgZnJvbSB0aGUgY2hpbGQgc2lkZQorICAgICAgICBvZiB0aGUgZm9yayBi
ZWNhdXNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3NlIGNhbGwgc2lu
Y2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRv
TGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRl
cmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwogMjAxMy0xMS0yMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSG9vayB1cCBXZWJQcm9jZXNz
LXNpZGUgb2YgZ2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTNhNjBiZGU5
ZWE5ZWNjNzRhZWFkMWQwNTQwZjdjMjljYjMyZWNkMy4uMjQ0NGI0OTY3MzZhZDQ3NjM4MzA0ODBk
MGJmNjA0ZDRlN2EyZThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTg4LDIwICsxODgsMTQgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQogewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3Rlbmlu
ZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2Fs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVu
aW5nUG9ydCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIENvcmVJUEM7CiAKLSAgICAvLyBDcmVhdGUg
YSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3Jl
YXRlKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAg
IENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb25uZWN0aW9u
OjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0gICAgQ29yZUlQ
Qzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFL
RV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRJZGVu
dGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFBvcnQpLCAwKTsKLSNlbHNl
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcAppbmRleCBjNzU2MjI3OWU2ZGJm
M2MzMzRhNmIxNmExNTRmYTc3Njg3NDFmMWJiLi4wNzZjODg2YjIxODYzZTVkZjNjYjQwN2RmZDhi
YjBmYTgwZTdlNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudERlY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCmlu
ZGV4IGM3Yzg4NTRlZTMyNGEyODZhNzRmOTcxMTVhMGExMjQxYjAzNzBiMWYuLjE4MDE5MTYzZGYz
MWM0NmEyZjQzZWEzY2FhNzc4YTliYmZlNThkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIuaApAQCAtMjcsMTEgKzI3LDExIEBACiAj
ZGVmaW5lIEFyZ3VtZW50RGVjb2Rlcl9oCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCi0j
aW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIENvcmVJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsK
ICAgICAKIGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKaW5kZXggNzc3NTM2ZmZhN2Q0NjYy
NDJmZTI2Y2JkMWIwMTIxOTc3OTI5ZTI2Ni4uZTA1NWVmYTg5MjViOTZiNmRiNzExYjc0ZGNmM2Vk
OGUzODExZTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9B
cmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXJndW1lbnRFbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Fy
Z3VtZW50RW5jb2Rlci5oCmluZGV4IDA0N2MzNWQ3NjMwZDVjN2ZjZTIyMTIwOTVhMTkwYTBlZGFm
MDk5MGUuLmEwODliMDQzNjRkNzY5NGNkZjZiNWEyMjA5MTc1MTkyZmJjMWZmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuaApAQCAt
MjcsMTIgKzI3LDEyIEBACiAjZGVmaW5lIEFyZ3VtZW50RW5jb2Rlcl9oCiAKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyLmgiCi0jaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewogCiBjbGFzcyBBcmd1bWVudEVuY29kZXI7
CitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogY2xhc3MgQXJndW1l
bnRFbmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
QXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1l
bnQuY3BwCmluZGV4IDBlMzY3YTc0OTk4NzRkOWM3Y2QyNzAwYWY5ZTkzOGUwOWU3ZWMzMzAuLjVh
OTIyZGFlZTgzYzkwZjUxMzRlZDQ0MGZiNWRkZmMxNGUzNmI0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRhY2htZW50LmNwcApAQCAtMzEsMTIgKzMxLDI1IEBA
CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAotQXR0YWNobWVudDo6QXR0YWNobWVudCgpCi0gICAg
OiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyNpZiBPUyhEQVJXSU4pCitzdGF0aWMgaW5saW5lIG1h
Y2hfbXNnX3R5cGVfbmFtZV90IG1lc3NhZ2VEaXNwb3NpdGlvbihBdHRhY2htZW50OjpDb25uZWN0
aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCiB7CisgICAgaWYgKHJlcXVpcmVtZW50ID09IEF0
dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBF
X01BS0VfU0VORDsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6Rm9yd2FyZFNl
bmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EOworCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5E
OworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRl
bnRpZmllciwgQXR0YWNobWVudDo6Q29ubmVjdGlvblJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQor
ICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKK3sKKyAgICBtX3BvcnQucG9ydCA9IGlkZW50aWZp
ZXIucG9ydDsKKyAgICBtX3BvcnQuZGlzcG9zaXRpb24gPSBtZXNzYWdlRGlzcG9zaXRpb24ocmVx
dWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVudDo6QXR0YWNobWVudCht
YWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQog
ICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKICAgICAsIG1fcG9ydChwb3J0KQpAQCAtNDgsNiAr
NjEsMTYgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIHsKICAgICBtX3R5cGUgPSBVbmlu
aXRpYWxpemVkOwogfQorCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKEF0
dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVudCkKK3sKKyAgICByZXR1
cm4gQXR0YWNobWVudChNQUNIX1BPUlRfTlVMTCwgbWVzc2FnZURpc3Bvc2l0aW9uKHJlcXVpcmVt
ZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlv
bklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVy
KHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9pZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9BdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0F0dGFjaG1lbnQuaAppbmRleCA3MTE1ZjBiNWY4NTE0NTg0ODRlYTYxYWE0NzIyNThjNmMwNDdl
NDQ4Li5jZWYxMjJjMjYyZDAxYTNiMjFlMzNhODhjMzJhYjg0OGEwNzhlMzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBA
QAogI2lmbmRlZiBBdHRhY2htZW50X2gKICNkZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2lu
aXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfdHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xh
c3MgQXJndW1lbnRFbmNvZGVyOwogCiBjbGFzcyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBB
dHRhY2htZW50KCk7CisgICAgQXR0YWNobWVudCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlh
bGl6ZWQpCisgICAgeyB9CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVk
LApAQCAtNTAsNiArNTQsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0g
Q29ubmVjdGlvblJlcXVpcmVtZW50IHsKKyAgICAgICAgQWNxdWlyZVNlbmRSaWdodCwKKyAgICAg
ICAgRm9yd2FyZFNlbmRSaWdodAorICAgIH07CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246
OklkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAg
ICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90
IGRpc3Bvc2l0aW9uKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtNTcsNiAr
NjgsOSBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwogI2Vu
ZGlmCiAKKyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVx
dWlyZW1lbnQpOworCisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcigpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uaAppbmRleCAxNDUzOGM1MTQ0ZGRkMWIyZDc0YTkwMDRiOTI1OTIzNjRjY2VhZDQ4Li5i
NzhlOGU4OWJhNjRhNDY3MzRmZjgwOWFhNDk2YTVkMzhmNDA0YmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNTUsNiArNTUsOCBAQCBjbGFz
cyBSdW5Mb29wOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CisK
IGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CiAgICAgLy8gV2hldGhlciB0aGlzIG1lc3NhZ2Ugc2hv
dWxkIGJlIGRpc3BhdGNoZWQgd2hlbiB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkuCiAgICAgLy8g
VGhpcyBpcyB0aGUgZGVmYXVsdCBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMuCkBAIC0xMTQsOCAr
MTE2LDMxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50
aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5wb3J0ID09IE1BQ0hfUE9SVF9O
VUxMOyB9CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJ
ZGVudGlmaWVyOwotICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBp
ZGVudGlmaWVyKSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50
aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09
IC0xOyB9CisjZW5kaWYKKworICAgIGNsYXNzIENvbm5lY3Rpb25EZXNjcmlwdG9yIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIElkZW50aWZpZXIgc2VydmVySWRlbnRpZmllcigpIGNvbnN0OworICAg
ICAgICBJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgQ29ubmVjdGlvbjsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAg
IENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICAgICAgICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgIHsgfQorICAgICAgICBJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAg
ICBDb25uZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIsIElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIDogbV9zZXJ2ZXJJZGVudGlmaWVy
KHNlcnZlcklkZW50aWZpZXIpCisgICAgICAgICAgICAsIG1fY2xpZW50SWRlbnRpZmllcihjbGll
bnRJZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBtX3NlcnZlcklk
ZW50aWZpZXI7CisgICAgICAgIElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogI2VuZGlm
CisgICAgfTsKKworICAgIHN0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24oKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0
ZVNlcnZlckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5Mb29wKiBjbGll
bnRSdW5Mb29wKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGll
bnRDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCogY2xpZW50UnVu
TG9vcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURl
Y29kZXIuY3BwCmluZGV4IGU2OTcxYTllMjQzMDBjZjZjNzdkOWMxNjg3MjUzZWJjZDMyOWYzY2Iu
LjA4NDE2ZjRjYjNmNTY3OTJmZWQ1MTc2NDIyYmU2NzFkNWE0NGI3ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZl
cmVuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVz
c2FnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
RW5jb2Rlci5jcHAKaW5kZXggMTFkN2Y2ZWYyNmViY2FjNmM4MDhlYjk1ZTViOTU2ZmQ2OWE1ZTM3
NC4uNTQ0NDAyZTUzNzQxNDYyNjcwZjNlOTI0NjYwYzg0YzU3ODY2Yjc0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5kZXgg
NDBhYThjNTA2ZTkyYmNiMTNlNGFkNTBmM2VlZWFiNTY3NGExNmM4MC4uYTljZTFjNTQzYzJhYThj
YWVjMTQ4ODIzNTBmODE3NWYxNTI4YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKQEAgLTQzLDcgKzQzLDI0IEBA
IHN0YXRpYyBjb25zdCBzaXplX3QgaW5saW5lTWVzc2FnZU1heFNpemUgPSA0MDk2OwogZW51bSB7
CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9IDEgPDwgMAogfTsKLSAgICAKKworQ29ubmVj
dGlvbjo6SWRlbnRpZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVy
SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29u
bmVjdGlvbjo6SWRlbnRpZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xp
ZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKwor
Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZv
cm1Db25uZWN0aW9uKCkKK3sKKyAgICBtYWNoX3BvcnRfdCBwb3J0OworICAgIG1hY2hfcG9ydF9h
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJnBvcnQp
OworICAgIHJldHVybiBDb25uZWN0aW9uRGVzY3JpcHRvcihwb3J0KTsKK30KKwogdm9pZCBDb25u
ZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewogICAgIGlmICghbV9pc0Nvbm5lY3RlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2ht
ZW50VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNo
bWVudFVuaXguY3BwCmluZGV4IDZiNzcwYjc3YWYwMTIzMDg2NmIyODhjNWQ0YjE5OWYwMDJhMTRm
NzkuLjc5M2FjNTYzY2Q3MjgxOWEzOGU4ZTQ5MTNiNGU1MDU1MjA5NjU3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4
LmNwcApAQCAtMzEsNiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCitBdHRhY2ht
ZW50OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29ubmVj
dGlvblJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKFNvY2tldFR5cGUpCisgICAgLCBtX2ZpbGVE
ZXNjcmlwdG9yKGlkZW50aWZpZXIpCit7Cit9CisKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50
IGZpbGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKICAgICA6IG1fdHlwZShNYXBwZWRNZW1vcnlU
eXBlKQogICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxlRGVzY3JpcHRvcikKQEAgLTUxLDQgKzU3
LDE1IEBAIHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgpCiAgICAgICAgIGNsb3NlV2l0aFJldHJ5
KG1fZmlsZURlc2NyaXB0b3IpOwogfQogCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25u
ZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudCgt
MSk7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU29ja2V0VHlwZSk7Cisg
ICAgcmV0dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCmluZGV4IDRmYWM0MTdmMDFmMWFkMjcxODE4MzU4ODRjMDg5NzYyNjIyOGEy
MjEuLjMxYjNiYTdiN2EyZmMzNmMyOWVkZDc0ZDhhN2IzNDc5MzQxZDljZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApAQCAtNDMsNiArNDMsMTMgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjZW5kaWYKIAorLy8g
T24gUU5YIFNPQ0tfU0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmlu
ZWQpLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgor
I2lmIGRlZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCisjZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU0VRUEFDS0VUCisjZWxzZQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVB
TQorI2VuZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBt
ZXNzYWdlTWF4U2l6ZSA9IDQwOTY7CkBAIC01Miw2ICs1OSwyOCBAQCBlbnVtIHsKICAgICBNZXNz
YWdlQm9keUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07CiAKK0Nvbm5lY3Rpb246OklkZW50aWZp
ZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NlcnZlcklkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246
OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7Cit9CisKK0Nv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbigpCit7CisgICAgaW50IHNvY2tldHNbMl07CisgICAgUkVMRUFTRV9BU1NFUlQo
c29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgIT0gLTEpOworCisg
ICAgLy8gQXZvaWQgZXhwb3NpbmcgdGhlIHNlcnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nl
c3MKKyAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0g
LTEpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vID09IEVJTlRSKTsKKworICAgIHJldHVy
biBDb25uZWN0aW9uRGVzY3JpcHRvcihzb2NrZXRzWzBdLCBzb2NrZXRzWzFdKTsKK30KKwogY2xh
c3MgTWVzc2FnZUluZm8gewogcHVibGljOgogICAgIE1lc3NhZ2VJbmZvKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCA3ZWJmMGFh
MTgyZTlhNzEwZmM4ZTNmMmI5M2VhYzZmYTRjYzU5OTc4Li5jYjg2MWMxMjgzNzBkMDMyODI4ZDc4
MjYxMmNmODRjM2M5YThmYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTQ0LDI1ICs0NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVy
bnMuaD4KICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8
ZXJybm8uaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgot
I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3
dGYvVW5pU3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NL
RVRfVFlQRSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5l
IFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NL
X0RHUkFNCi0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xNjksNTQgKzE1MCwxNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6Omlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cgogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsK
LSAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0j
aWYgUExBVEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAg
ICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuaXNFbXB0eSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rp
b24uCi0gICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxp
c3RlbmluZ1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVm
UHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJ
UEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRl
bnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09D
S0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBw
bHVnaW4gcHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250
bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYg
KGVycm5vICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VX
aXRoUmV0cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBwcm9jZXNzIHNvY2tldCB0byBwb3Nz
aWJsZSBmdXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRS
KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3Nl
V2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0
c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQ
dHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6Y3JlYXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVu
ZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVu
dFNvY2tldChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNsaWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKSwgMCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlm
IChOZXRzY2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkg
ewogICAgICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vz
c0xhdW5jaGVyRWZsLmNwcAppbmRleCA2OWU2YjgzYmNkMjQ3YTBhM2U5N2Q0YjQwNmExZDU5NGQy
NjJmNGFhLi5lM2E1YjQ5YjQyNGM0ZWY2YzRmZWY1ZjE3ZDA4YjZjODk1YjNlZDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hl
ckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9j
ZXNzTGF1bmNoZXJFZmwuY3BwCkBAIC02NywxMSArNjcsNyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxjaGFyW10+PiBjcmVhdGVBcmdzQXJyYXkoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IGNvbgogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgaW50
IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAs
IHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3Jp
cHRvciBkZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25u
ZWN0aW9uKCk7CiAKICAgICBTdHJpbmcgcHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgs
IHBsdWdpblBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsK
QEAgLTk4LDIwICs5NCwxOSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgaWYgKCFtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeC5pc0VtcHR5KCkpCiAg
ICAgICAgIHByb2Nlc3NDbWRQcmVmaXggPSBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZp
eDsKICNlbmRpZgotICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShwcm9jZXNzQ21kUHJl
Zml4LCBleGVjdXRhYmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoc29ja2V0c1swXSksIHBsdWdpblBh
dGgpOworICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShwcm9jZXNzQ21kUHJlZml4LCBl
eGVjdXRhYmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVy
KCkpLCBwbHVnaW5QYXRoKTsKIAogICAgIC8vIERvIG5vdCBwZXJmb3JtIG1lbW9yeSBhbGxvY2F0
aW9uIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZvcmsoKQogICAgIC8vIGV4ZWMoKSBiZWxvdy4gRmFz
dE1hbGxvYyBjYW4gcG90ZW50aWFsbHkgZGVhZGxvY2sgYmVjYXVzZQogICAgIC8vIHRoZSBmb3Jr
KCkgZG9lc24ndCBpbmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAgcGlkX3QgcGlkID0g
Zm9yaygpOwogICAgIGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0gICAgICAgIGNsb3Nl
KHNvY2tldHNbMV0pOwogICAgICAgICBleGVjdnAoYXJncy5kYXRhKClbMF0uZ2V0KCksIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhciogY29uc3QqPihhcmdzLmRhdGEoKSkpOwogICAgIH0gZWxzZSBpZiAo
cGlkID4gMCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0c1swXSk7
CisgICAgICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAg
bV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1
bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0g
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpk
aWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlm
aWVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGFiZTgyMDQ1N2U4ZWZm
NzVlZTY5ODM1NzZjYmUyOGE0ZjU3ZjgxNDkuLjVjYmFiZWVhNTk4ZjFkNTBmMjY4MTBkODRlZGYz
MWUxNDYyZDRkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ2LDMyICs0NiwxNyBA
QAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNL
RVQKLSNkZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNP
Q0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24o
Z3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1
c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRz
WzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRz
KSA8IDApIHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDog
JXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQ
bGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2lu
UGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBA
IC05NSw3ICs4MCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICB9CiAKICAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZXhlY3V0YWJsZVBhdGgpOwotICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmlu
dGYoIiVkIiwgc29ja2V0c1swXSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1
cF9wcmludGYoIiVkIiwgZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpKTsKIAogICAgIHVu
c2lnbmVkIG5hcmdzID0gNDsgLy8gc2l6ZSBvZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9h
c3luYygpCiAKQEAgLTEyMiwxNyArMTA3LDE4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2lu
UGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbaSsrXSA9IDA7CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAg
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2
LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwg
R0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7Cisg
ICAgaWYgKCFnX3NwYXduX2FzeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fTEVBVkVfREVTQ1JJUFRP
UlNfT1BFTiwgY2hpbGRTZXR1cEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoZGVzY3JpcHRvci5z
ZXJ2ZXJJZGVudGlmaWVyKCkpLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdf
cHJpbnRlcnIoIlVuYWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3It
Pm1lc3NhZ2UpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBj
bG9zZShzb2NrZXRzWzBdKTsKKyAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIo
KSk7CiAgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKIAogICAgIC8vIFdlJ3ZlIGZpbmlz
aGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBs
b29wLgotICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVy
OjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBz
b2NrZXRzWzFdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNz
TGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50
aWZpZXIsIGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRmNmM3
OWUyNGU0ZjU0NjYwMzA1NDIzYjE3NWMxMDNlZjdlZGJmMS4uNTE5NGE2YWUxNjA4Y2U4MDA5NjE2
ZmU1ODAyMzliOTMxYmUwZDc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50Lmgi
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUg
bmV0d29yayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVu
ZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVs
bENvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogICAg
IH0KIAogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBh
Ym91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUg
ZGVsZXRlZC4KQEAgLTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDCiB7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50
aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCiB7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAg
ICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmly
c3QoKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRh
Y2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NF
TkQpKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5z
ZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigp
LCBDb3JlSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5jcHAKaW5kZXggZGE2MzdjNDE1NWZkZWU2Zjg2NjU1Y2UzMjAyNDc5MzMwNTg0MjhjZC4uYWNk
N2EzMzQzOTcxN2MxMTFkNjExYjRhNDJlZTg1Yjk5YjVmMDY5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAorI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTM2LDE0ICsxMzcs
NyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxl
ZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVk
IG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4K
ICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAg
ICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGll
cy50YWtlRmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQo
Q29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsK
LSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChDb3Jl
SVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0jZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVs
bENvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZhbHNl
KTsKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0VtcHR5
KCkpCkBAIC0yMzAsMjAgKzIyNCwxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogI2VuZGlm
CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9v
bCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6
OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmlzRW1wdHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24g
cmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNl
bmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbik7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChj
b25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIo
KSwgQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6ZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDA2NWU3N2E1NmQ0NGE4NGIwNTlhNGVmNmExMjU1ZDQ0Y2U3ZTFlOTIuLjZlODBhMjI1NDZl
MGY2MjU3YzhlMzllOTZiNzE4OTdmNDI4MDQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIuY3BwCkBAIC03NCwxNSArNzQsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
biogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRp
YWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICBy
ZXR1cm4gMDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVj
dGlvbklkZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVjdGlvbklkZW50
aWZpZXIgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBSZWZQdHI8UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2FkOWFjNTZk
OGE1YTVkOWE0ODc1YzFjODc5ZTZmMWI3NmQyOGU0MC4uOWQ1YzVjNTc4YTMyMjQ2MjNmZTFjNzRh
NDNkOWQwM2M5ODI2NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0zNzEsMTMgKzM3MSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlm
aWVyKSwgMCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3Jl
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRD
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKTsKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6
aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsK
LSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKwogICAgIG1fbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29u
bmVjdGlvbklkZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217605</attachid>
            <date>2013-11-21 13:16:42 -0800</date>
            <delta_ts>2014-04-25 04:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20131121221742.patch</filename>
            <type>text/plain</type>
            <size>33967</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzA1NjI0NzU5MzIxMTU5
Y2Y5MDQyODBhNTlmMDRkMzg4MWQ3Y2ZmYy4uNzI4NWU5MjZhMmZjZjBlMzI5ZDViMTMzMmI4Mzg4
ZDlhMjJjNTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMy0xMS0yMSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlZmFj
dG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdldCByaWQgb2YgaWZkZWYg
aGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
OTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Jp
Z2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4gYW5kIEt3
YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0Pi4KKworICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5lY3Rpb24gc2V0dXAuIEludHJv
ZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24gYW5kIENv
bm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAgICAgIGNvbnRhaW4gdGhlIHBs
YXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQQyBjaGFubmVsLCBhbmQgZXh0
ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0YWlscyBvZiBleGNoYW5pbmcg
SVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyB1
bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2UgaGFuZGxlIHVuaXggZG9tYWlu
IHNvY2tldHMuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0aGluZ3Mgd2VyZSBmaXhlZCBieSBD
c2FiYSBPc3p0cm9nb27DoWM6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBTaGFyZWRXb3JrZXJQcm9j
ZXNzIGNoYW5nZSwgYmVjYXVzZSBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBhZnRlciByMTU2Mjc3
LgorICAgICAgICAtIFJlc29sdmUgYSB0cml2aWFsIGNvbmZsaWN0IGluIFByb2Nlc3NMYXVuY2hl
ckVmbC5jcHAgYWZ0ZXIgcjE1NjA2My4KKyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25m
bGljdCBpbiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBXaW5kb3dzIHJlbGF0ZWQgY2hhbmdlcyBhZnRl
ciByMTU2NTA4LgorICAgICAgICAtIFJlbW92ZSBRdCByZWxhdGVkIGNoYW5nZXMKKyAgICAgICAg
LSBSZXNvbHZlIHRyaXZpYWwgY29uZmxpY3RzIGluIEFyZ3VtZW50RGVjb2Rlci5oIGFuZCBBcmd1
bWVudEVuY29kZXIuaC4KKyAgICAgICAgLSBSZW1vdmUgb2Jzb2xldGUgY2hhbmdlIGluIFByb2Nl
c3NMYXVuY2hlckd0ay5jcHAKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgR2V0IHJpZCBvZiBwbGF0Zm9ybSBzcGVj
aWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5j
b2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNobWVudC5oIGluIEFyZ3VtZW50W0VuY29k
ZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAgICBhIGNpcmN1bGFyIGRlcGVuZGVuY3kg
bm93LCBzbyBJIGNoYW5nZWQgaXQgdG8gZm9yd2FyZCBkZWNsYXJhdGlvbgorICAgICAgICBhbmQg
YWRkIGluY2x1ZGVzIHdoZXJlIGl0IGlzIHVzZWQuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKENvcmVJUEM6Om1lc3NhZ2VEaXNwb3NpdGlvbik6
CisgICAgICAgIChDb3JlSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKENv
cmVJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKENvcmVJUEM6OkF0
dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3Jl
SVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1l
bnQpOgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKTogSXQgd2FzIHNpbXBseSB3
cm9uZy4KKyAgICAgICAgVGhlIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzIC0xIGFuZCBub3Qg
MC4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpD
b25uZWN0aW9uRGVzY3JpcHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJh
Y3Rpb24gb2YgYW4gSVBDIGNoYW5uZWwuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNz
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHA6CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNw
cDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpz
ZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgVGhlc2UgYXJlIHRoZSBz
YW1lIG9uIE1hYy4KKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3Jt
Q29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9TIHNwZWNpZmljIElQQyBjaGFubmVs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoK
KyAgICAgICAgKENvcmVJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoQ29y
ZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoQ29yZUlQQzo6QXR0
YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVxdWly
ZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmluZyBz
b2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBjb250
cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6CisgICAgICAg
IChDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRp
Zmllcik6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24pOgorICAgICAgICBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIHNvY2tldCBjcmVhdGlv
bi4gSSB0dXJuZWQgZXJyb3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBz
aW5jZSBlcnJvcnMgd2FzIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29k
IHdheSB0byBkby4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKToKKyAgICAgICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9m
IHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Q
cm9jZXNzTGF1bmNoZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuIFJlbW92ZWQg
dGhlIGNsb3NlIGNhbGwgZnJvbSB0aGUgY2hpbGQgc2lkZQorICAgICAgICBvZiB0aGUgZm9yayBi
ZWNhdXNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNoaWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3NlIGNhbGwgc2lu
Y2UgRkRfQ0xPRVhFQyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRv
TGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRl
cmZhY2UuCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZE9yRmFpbGVkVG9MYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwogMjAxMy0xMS0yMSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZldGNoIGFsbCBwYWdl
IGxvYWRpbmcgcmVsYXRlZCBVUkxzIGZyb20gdGhlIHBhZ2UgbG9hZCBzdGF0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGEzYTYw
YmRlOWVhOWVjYzc0YWVhZDFkMDU0MGY3YzI5Y2IzMmVjZDMuLjI0NDRiNDk2NzM2YWQ0NzYzODMw
NDgwZDBiZjYwNGQ0ZTdhMmU4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE4OCwyMCArMTg4LDE0IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24pCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0
ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9y
dF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxp
c3RlbmluZ1BvcnQpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0gICAgLy8gQ3Jl
YXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsK
KyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVj
dGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENv
cmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBF
X01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50
SWRlbnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRQb3J0KSwgMCk7Ci0j
ZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggYzc1NjIyNzll
NmRiZjNjMzM0YTZiMTZhMTU0ZmE3NzY4NzQxZjFiYi4uMDc2Yzg4NmIyMTg2M2U1ZGYzY2I0MDdk
ZmQ4YmIwZmE4MGU3ZTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQXJndW1lbnREZWNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxzdGRpby5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVj
b2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudERlY29kZXIu
aAppbmRleCBjN2M4ODU0ZWUzMjRhMjg2YTc0Zjk3MTE1YTBhMTI0MWIwMzcwYjFmLi4xODAxOTE2
M2RmMzFjNDZhMmY0M2VhM2NhYTc3OGE5YmJmZTU4ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3LDExICsyNywxMSBA
QAogI2RlZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5o
IgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBDb3JlSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IDc3NzUzNmZmYTdk
NDY2MjQyZmUyNmNiZDFiMDEyMTk3NzkyOWUyNjYuLmUwNTVlZmE4OTI1Yjk2YjZkYjcxMWI3NGRj
ZjNlZDhlMzgxMWUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1l
bnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudEVuY29kZXIuaAppbmRleCAwNDdjMzVkNzYzMGQ1YzdmY2UyMjEyMDk1YTE5MGEw
ZWRhZjA5OTBlLi5hMDg5YjA0MzY0ZDc2OTRjZGY2YjVhMjIwOTE3NTE5MmZiYzFmZjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50RW5jb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRFbmNvZGVyLmgK
QEAgLTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogY2xhc3MgQXJndW1lbnRFbmNv
ZGVyOworY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFy
Z3VtZW50RW5jb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0F0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9BdHRh
Y2htZW50LmNwcAppbmRleCAwZTM2N2E3NDk5ODc0ZDljN2NkMjcwMGFmOWU5MzhlMDllN2VjMzMw
Li5mY2JiMjI1M2UzNTNiODYzZjc2ODFhZTViZDNjY2VkNTZiN2M2MjZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXR0YWNobWVudC5jcHAKQEAgLTMxLDEyICszMSwy
NSBAQAogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLUF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoKQot
ICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisjaWYgT1MoREFSV0lOKQorc3RhdGljIGlubGlu
ZSBtYWNoX21zZ190eXBlX25hbWVfdCBtZXNzYWdlRGlzcG9zaXRpb24oQXR0YWNobWVudDo6Q29u
bmVjdGlvblJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogeworICAgIGlmIChyZXF1aXJlbWVudCA9
PSBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQ7CisgICAgaWYgKHJlcXVpcmVtZW50ID09IEF0dGFjaG1lbnQ6OkZvcndh
cmRTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01TR19UWVBFX01PVkVfU0VORDsKKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBNQUNIX01TR19UWVBFX01BS0Vf
U0VORDsKK30KKworQXR0YWNobWVudDo6QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVu
dCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCit7CisgICAgbV9wb3J0ID0gaWRlbnRpZmll
ci5wb3J0OworICAgIG1fZGlzcG9zaXRpb24gPSBtZXNzYWdlRGlzcG9zaXRpb24ocmVxdWlyZW1l
bnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVudDo6QXR0YWNobWVudChtYWNoX3Bv
cnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKQogICAgIDog
bV90eXBlKE1hY2hQb3J0VHlwZSkKICAgICAsIG1fcG9ydChwb3J0KQpAQCAtNDgsNiArNjEsMTYg
QEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIHsKICAgICBtX3R5cGUgPSBVbmluaXRpYWxp
emVkOwogfQorCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKEF0dGFjaG1l
bnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0
YWNobWVudChNQUNIX1BPUlRfTlVMTCwgbWVzc2FnZURpc3Bvc2l0aW9uKHJlcXVpcmVtZW50KSk7
Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBDb25uZWN0aW9uOjpJZGVudGlmaWVyKHBvcnQo
KSk7Cit9CiAjZW5kaWYKIAogdm9pZCBBdHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9BdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFj
aG1lbnQuaAppbmRleCA3MTE1ZjBiNWY4NTE0NTg0ODRlYTYxYWE0NzIyNThjNmMwNDdlNDQ4Li5j
ZWYxMjJjMjYyZDAxYTNiMjFlMzNhODhjMzJhYjg0OGEwNzhlMzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lm
bmRlZiBBdHRhY2htZW50X2gKICNkZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4K
ICNpbmNsdWRlIDxtYWNoL21hY2hfdHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJn
dW1lbnRFbmNvZGVyOwogCiBjbGFzcyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2ht
ZW50KCk7CisgICAgQXR0YWNobWVudCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQp
CisgICAgeyB9CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAt
NTAsNiArNTQsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gQ29ubmVj
dGlvblJlcXVpcmVtZW50IHsKKyAgICAgICAgQWNxdWlyZVNlbmRSaWdodCwKKyAgICAgICAgRm9y
d2FyZFNlbmRSaWdodAorICAgIH07CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50
aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0
YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bv
c2l0aW9uKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtNTcsNiArNjgsOSBA
QCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwogI2VuZGlmCiAK
KyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVxdWlyZW1l
bnQpOworCisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigp
IGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAjaWYg
T1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24u
aAppbmRleCAxNDUzOGM1MTQ0ZGRkMWIyZDc0YTkwMDRiOTI1OTIzNjRjY2VhZDQ4Li5iNzhlOGU4
OWJhNjRhNDY3MzRmZjgwOWFhNDk2YTVkMzhmNDA0YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNTUsNiArNTUsOCBAQCBjbGFzcyBSdW5M
b29wOwogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK2NsYXNzIEF0dGFjaG1lbnQ7CisKIGVudW0g
TWVzc2FnZVNlbmRGbGFncyB7CiAgICAgLy8gV2hldGhlciB0aGlzIG1lc3NhZ2Ugc2hvdWxkIGJl
IGRpc3BhdGNoZWQgd2hlbiB3YWl0aW5nIGZvciBhIHN5bmMgcmVwbHkuCiAgICAgLy8gVGhpcyBp
cyB0aGUgZGVmYXVsdCBmb3Igc3luY2hyb25vdXMgbWVzc2FnZXMuCkBAIC0xMTQsOCArMTE2LDMx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIg
aWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5wb3J0ID09IE1BQ0hfUE9SVF9OVUxMOyB9
CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlm
aWVyOwotICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiAhaWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJ
c051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9
CisjZW5kaWYKKworICAgIGNsYXNzIENvbm5lY3Rpb25EZXNjcmlwdG9yIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIElkZW50aWZpZXIgc2VydmVySWRlbnRpZmllcigpIGNvbnN0OworICAgICAgICBJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdDsKKyAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgQ29ubmVjdGlvbjsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgIENvbm5l
Y3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICAgICAgICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgIHsgfQorICAgICAgICBJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAgICBDb25u
ZWN0aW9uRGVzY3JpcHRvcihJZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIsIElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIDogbV9zZXJ2ZXJJZGVudGlmaWVyKHNlcnZl
cklkZW50aWZpZXIpCisgICAgICAgICAgICAsIG1fY2xpZW50SWRlbnRpZmllcihjbGllbnRJZGVu
dGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBtX3NlcnZlcklkZW50aWZp
ZXI7CisgICAgICAgIElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogI2VuZGlmCisgICAg
fTsKKworICAgIHN0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0ZVNlcnZl
ckNvbm5lY3Rpb24oSWRlbnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5Mb29wKiBjbGllbnRSdW5M
b29wKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVDbGllbnRDb25u
ZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCogY2xpZW50UnVuTG9vcCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIu
Y3BwCmluZGV4IGU2OTcxYTllMjQzMDBjZjZjNzdkOWMxNjg3MjUzZWJjZDMyOWYzY2IuLjA4NDE2
ZjRjYjNmNTY3OTJmZWQ1MTc2NDIyYmU2NzFkNWE0NGI3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2Uu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rl
ci5jcHAKaW5kZXggMTFkN2Y2ZWYyNmViY2FjNmM4MDhlYjk1ZTViOTU2ZmQ2OWE1ZTM3NC4uNTQ0
NDAyZTUzNzQxNDYyNjcwZjNlOTI0NjYwYzg0YzU3ODY2Yjc0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlRW5jb2Rlci5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdz
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvbWFjL0Nvbm5lY3Rpb25NYWMuY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5kZXggNDBhYThj
NTA2ZTkyYmNiMTNlNGFkNTBmM2VlZWFiNTY3NGExNmM4MC4uYTljZTFjNTQzYzJhYThjYWVjMTQ4
ODIzNTBmODE3NWYxNTI4YTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKQEAgLTQzLDcgKzQzLDI0IEBAIHN0YXRp
YyBjb25zdCBzaXplX3QgaW5saW5lTWVzc2FnZU1heFNpemUgPSA0MDk2OwogZW51bSB7CiAgICAg
TWVzc2FnZUJvZHlJc091dE9mTGluZSA9IDEgPDwgMAogfTsKLSAgICAKKworQ29ubmVjdGlvbjo6
SWRlbnRpZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRp
ZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29ubmVjdGlv
bjo6SWRlbnRpZmllciBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29ubmVj
dGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25u
ZWN0aW9uKCkKK3sKKyAgICBtYWNoX3BvcnRfdCBwb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0
ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJnBvcnQpOworICAg
IHJldHVybiBDb25uZWN0aW9uRGVzY3JpcHRvcihwb3J0KTsKK30KKwogdm9pZCBDb25uZWN0aW9u
OjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewogICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQXR0YWNobWVudFVu
aXguY3BwCmluZGV4IDZiNzcwYjc3YWYwMTIzMDg2NmIyODhjNWQ0YjE5OWYwMDJhMTRmNzkuLjc5
M2FjNTYzY2Q3MjgxOWEzOGU4ZTQ5MTNiNGU1MDU1MjA5NjU3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcApA
QCAtMzEsNiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCitBdHRhY2htZW50OjpB
dHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29ubmVjdGlvblJl
cXVpcmVtZW50KQorICAgIDogbV90eXBlKFNvY2tldFR5cGUpCisgICAgLCBtX2ZpbGVEZXNjcmlw
dG9yKGlkZW50aWZpZXIpCit7Cit9CisKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZpbGVE
ZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKICAgICA6IG1fdHlwZShNYXBwZWRNZW1vcnlUeXBlKQog
ICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxlRGVzY3JpcHRvcikKQEAgLTUxLDQgKzU3LDE1IEBA
IHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgpCiAgICAgICAgIGNsb3NlV2l0aFJldHJ5KG1fZmls
ZURlc2NyaXB0b3IpOwogfQogCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9u
KENvbm5lY3Rpb25SZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudCgtMSk7Cit9
CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU29ja2V0VHlwZSk7CisgICAgcmV0
dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCmluZGV4IDRmYWM0MTdmMDFmMWFkMjcxODE4MzU4ODRjMDg5NzYyNjIyOGEyMjEuLjMx
YjNiYTdiN2EyZmMzNmMyOWVkZDc0ZDhhN2IzNDc5MzQxZDljZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApA
QCAtNDMsNiArNDMsMTMgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjZW5kaWYKIAorLy8gT24gUU5Y
IFNPQ0tfU0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmluZWQpLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgorI2lmIGRl
ZmluZWQoU09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCisjZGVmaW5lIFNPQ0tFVF9UWVBFIFNP
Q0tfU0VRUEFDS0VUCisjZWxzZQorI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX1NUUkVBTQorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBtZXNzYWdl
TWF4U2l6ZSA9IDQwOTY7CkBAIC01Miw2ICs1OSwyOCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9k
eUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29u
bmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX3NlcnZlcklkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50
aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVj
dGlvbigpCit7CisgICAgaW50IHNvY2tldHNbMl07CisgICAgUkVMRUFTRV9BU1NFUlQoc29ja2V0
cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgIT0gLTEpOworCisgICAgLy8g
QXZvaWQgZXhwb3NpbmcgdGhlIHNlcnZlciBzb2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3MKKyAg
ICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vID09IEVJTlRSKTsKKworICAgIHJldHVybiBDb25u
ZWN0aW9uRGVzY3JpcHRvcihzb2NrZXRzWzBdLCBzb2NrZXRzWzFdKTsKK30KKwogY2xhc3MgTWVz
c2FnZUluZm8gewogcHVibGljOgogICAgIE1lc3NhZ2VJbmZvKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCA3ZWJmMGFhMTgyZTlh
NzEwZmM4ZTNmMmI5M2VhYzZmYTRjYzU5OTc4Li5jYjg2MWMxMjgzNzBkMDMyODI4ZDc4MjYxMmNm
ODRjM2M5YThmYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
UHJvY2Vzcy5jcHAKQEAgLTQ0LDI1ICs0NCw2IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4K
ICNlbmRpZgogCi0jaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0jaW5jbHVkZSA8ZXJybm8u
aD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2luY2x1
ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDx3dGYvVW5p
U3RkRXh0cmFzLmg+Ci0KLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAotI2RlZmluZSBTT0NLRVRfVFlQ
RSBTT0NLX1NFUVBBQ0tFVAotI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIFNPQ0tF
VF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RHUkFN
Ci0jZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAotI2VuZGlmIC8vIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjksNTQgKzE1MCwxNiBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmluaXRpYWxp
emVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcgogCiB2
b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBi
b29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVzcGFjZSBDb3JlSVBDOwogCi0jaWYgUExB
VEZPUk0oTUFDKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9w
b3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICBib29s
IGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSAhbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMuaXNFbXB0eSgpOwogCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5lY3Rpb24uCi0g
ICAgUmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPFdl
YlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIENvcmVJUEM6OkF0
dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VO
RCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmll
cigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbiksIDApOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZ
UEUsIDAsIHNvY2tldHMpID09IC0xKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwbHVnaW4g
cHJvY2VzcyBzb2NrZXQgdG8gdGhlIHdlYiBwcm9jZXNzLgotICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5v
ICE9IEVJTlRSKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGNsb3NlV2l0aFJldHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0
cnkoc29ja2V0c1sxXSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBEb24ndCBleHBvc2UgdGhlIHdlYiBwcm9jZXNzIHNvY2tldCB0byBwb3NzaWJsZSBm
dXR1cmUgd2ViIHByb2Nlc3Nlcy4KLSAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRG
RCwgRkRfQ0xPRVhFQykgPT0gLTEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNsb3NlV2l0aFJl
dHJ5KHNvY2tldHNbMF0pOwotICAgICAgICAgICAgY2xvc2VXaXRoUmV0cnkoc29ja2V0c1sxXSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHNvY2tldHNbMV0pOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25u
ZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBDb3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFNvY2tl
dChzb2NrZXRzWzBdKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNs
aWVudFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwg
MCk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRz
Y2FwZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAg
ICAgICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAppbmRleCA2OWU2YjgzYmNkMjQ3YTBhM2U5N2Q0YjQwNmExZDU5NGQyNjJmNGFh
Li5lM2E1YjQ5YjQyNGM0ZWY2YzRmZWY1ZjE3ZDA4YjZjODk1YjNlZDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCkBAIC02NywxMSArNjcsNyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxjaGFyW10+PiBjcmVhdGVBcmdzQXJyYXkoY29uc3QgU3RyaW5nJiBwcmVmaXgsIGNvbgog
CiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgaW50IHNvY2tl
dHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU0sIDAsIHNvY2tl
dHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9u
KCk7CiAKICAgICBTdHJpbmcgcHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIHBsdWdp
blBhdGg7CiAgICAgc3dpdGNoIChtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUpIHsKQEAgLTk4
LDIwICs5NCwxOSBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAg
aWYgKCFtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeC5pc0VtcHR5KCkpCiAgICAgICAg
IHByb2Nlc3NDbWRQcmVmaXggPSBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeDsKICNl
bmRpZgotICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShwcm9jZXNzQ21kUHJlZml4LCBl
eGVjdXRhYmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoc29ja2V0c1swXSksIHBsdWdpblBhdGgpOwor
ICAgIGF1dG8gYXJncyA9IGNyZWF0ZUFyZ3NBcnJheShwcm9jZXNzQ21kUHJlZml4LCBleGVjdXRh
YmxlUGF0aCwgU3RyaW5nOjpudW1iZXIoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpLCBw
bHVnaW5QYXRoKTsKIAogICAgIC8vIERvIG5vdCBwZXJmb3JtIG1lbW9yeSBhbGxvY2F0aW9uIGlu
IHRoZSBtaWRkbGUgb2YgdGhlIGZvcmsoKQogICAgIC8vIGV4ZWMoKSBiZWxvdy4gRmFzdE1hbGxv
YyBjYW4gcG90ZW50aWFsbHkgZGVhZGxvY2sgYmVjYXVzZQogICAgIC8vIHRoZSBmb3JrKCkgZG9l
c24ndCBpbmhlcml0IHRoZSBydW5uaW5nIHRocmVhZHMuCiAgICAgcGlkX3QgcGlkID0gZm9yaygp
OwogICAgIGlmICghcGlkKSB7IC8vIENoaWxkIHByb2Nlc3MuCi0gICAgICAgIGNsb3NlKHNvY2tl
dHNbMV0pOwogICAgICAgICBleGVjdnAoYXJncy5kYXRhKClbMF0uZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhciogY29uc3QqPihhcmdzLmRhdGEoKSkpOwogICAgIH0gZWxzZSBpZiAocGlkID4g
MCkgeyAvLyBwYXJlbnQgcHJvY2VzczsKLSAgICAgICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAg
ICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgbV9wcm9j
ZXNzSWRlbnRpZmllciA9IHBpZDsKICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5n
IHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAg
IFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNbMV0pKTsKKyAgICAgICAgUnVu
TG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExh
dW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGFiZTgyMDQ1N2U4ZWZmNzVlZTY5
ODM1NzZjYmUyOGE0ZjU3ZjgxNDkuLjVjYmFiZWVhNTk4ZjFkNTBmMjY4MTBkODRlZGYzMWUxNDYy
ZDRkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsv
UHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ2LDMyICs0NiwxNyBAQAogI2lu
Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNk
ZWZpbmUgU09DS0VUX1RZUEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9U
WVBFIFNPQ0tfU1RSRUFNCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50
ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0
YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRzWzJdOwot
ICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA8IDAp
IHsKLSAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDogJXMuXG4i
LCBnX3N0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0aDsK
ICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBAIC05NSw3
ICs4MCw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICB9CiAK
ICAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0
YWJsZVBhdGgpOwotICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmludGYoIiVk
Iiwgc29ja2V0c1swXSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9wcmlu
dGYoIiVkIiwgZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpKTsKIAogICAgIHVuc2lnbmVk
IG5hcmdzID0gNDsgLy8gc2l6ZSBvZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9hc3luYygp
CiAKQEAgLTEyMiwxNyArMTA3LDE4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKCkKICAgICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2luUGF0aC5k
YXRhKCkpOwogICAgIGFyZ3ZbaSsrXSA9IDA7CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAgICAgR093
blB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBH
X1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9U
T19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgaWYg
KCFnX3NwYXduX2FzeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fTEVBVkVfREVTQ1JJUFRPUlNfT1BF
TiwgY2hpbGRTZXR1cEZ1bmN0aW9uLCBHSU5UX1RPX1BPSU5URVIoZGVzY3JpcHRvci5zZXJ2ZXJJ
ZGVudGlmaWVyKCkpLCAmcGlkLCAmZXJyb3Iub3V0UHRyKCkpKSB7CiAgICAgICAgIGdfcHJpbnRl
cnIoIlVuYWJsZSB0byBmb3JrIGEgbmV3IFdlYlByb2Nlc3M6ICVzLlxuIiwgZXJyb3ItPm1lc3Nh
Z2UpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBjbG9zZShz
b2NrZXRzWzBdKTsKKyAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAg
ICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IHBpZDsKIAogICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxh
dW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgot
ICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRG
aW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRz
WzFdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNo
ZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIs
IGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZmRmNmM3OWUyNGU0
ZjU0NjYwMzA1NDIzYjE3NWMxMDNlZjdlZGJmMS4uNTE5NGE2YWUxNjA4Y2U4MDA5NjE2ZmU1ODAy
MzliOTMxYmUwZDc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKQEAgLTEwOCwxMiArMTA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAvLyBUaGUgbmV0d29y
ayBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBz
eW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rp
b25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9N
U0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5l
Y3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwogICAgIH0KIAog
ICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdldCBhYm91dCB0
aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRl
ZC4KQEAgLTE1MiwxOCArMTQ4LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDCiB7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb24pCiB7CiAgICAg
QVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCiAgICAgLy8g
R3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5
ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50
KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5kKENv
cmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBDb3Jl
SVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAK
aW5kZXggZGE2MzdjNDE1NWZkZWU2Zjg2NjU1Y2UzMjAyNDc5MzMwNTg0MjhjZC4uYWNkN2EzMzQz
OTcxN2MxMTFkNjExYjRhNDJlZTg1Yjk5YjVmMDY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTM2LDE0ICsxMzcsNyBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCkKICAgICAvLyBUaGUgcGx1Zy1pbiBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4
aXRlZCwgc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3
aGlsZSAoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtl
Rmlyc3QoKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQ
Qzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKLSNlbGlm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpB
dHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0j
ZW5kaWYKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudDo6bnVsbENvbm5l
Y3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZhbHNlKTsKICAg
ICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0VtcHR5KCkpCkBA
IC0yMzAsMjAgKzIyNCwxMyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogI2VuZGlmCiB9CiAK
LXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihj
b25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQordm9pZCBQbHVnaW5Qcm9jZXNz
UHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFj
aG1lbnQmIGNvbm5lY3Rpb24sIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSk7CiAKICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHku
CiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMudGFrZUZpcnN0KCk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29y
ZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7
Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0
aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7
Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb24uY29ubmVjdGlvbklkZW50aWZpZXIoKSwgQ29y
ZUlQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
R2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IDA2
NWU3N2E1NmQ0NGE4NGIwNTlhNGVmNmExMjU1ZDQ0Y2U3ZTFlOTIuLjZlODBhMjI1NDZlMGY2MjU3
YzhlMzllOTZiNzE4OTdmNDI4MDQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCkBAIC03NCwxNSArNzQsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIENv
cmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKENvcmVJUEM6OkNvbm5lY3Rpb246
OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4g
MDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsKLSAgICBpZiAoY29ubmVjdGlvbklkZW50aWZpZXIg
PT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAKICAgICBSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdp
blByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2FkOWFjNTZkOGE1YTVk
OWE0ODc1YzFjODc5ZTZmMWI3NmQyOGU0MC4uOWQ1YzVjNTc4YTMyMjQ2MjNmZTFjNzRhNDNkOWQw
M2M5ODI2NmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0zNzEsMTMgKzM3MSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwg
MCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuY29u
bmVjdGlvbklkZW50aWZpZXIoKTsKICAgICBpZiAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6aWRlbnRp
ZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSNlbHNl
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKwogICAgIG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlv
bklkZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCg==
</data>
<flag name="commit-queue"
          id="240784"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230165</attachid>
            <date>2014-04-25 04:29:12 -0700</date>
            <delta_ts>2014-04-25 05:02:12 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>ipc-refactor-110978.patch</filename>
            <type>text/plain</type>
            <size>34869</size>
            <attacher name="Peter Molnar">pmolnar.u-szeged</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3ZGE5OTliLi4xN2ZkMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDE0LTA0LTI1ICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIu
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0b3Jpbmc6IHVuaWZ5IElQQyBjb25u
ZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBoZWxsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBwYXRjaCBhbmQgYWxz
byByZWZhY3RvcmVkIHRoZSBEYXRhYmFzZVByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgT3JpZ2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4s
IEt3YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0PiwKKyAgICAgICAgYW5kIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgR2V0IHJpZCBvZiBw
bGF0Zm9ybSBpZmRlZnMgZGVhbGluZyB3aXRoIElQQyBjb25uZWN0aW9uIHNldHVwLiBJbnRyb2R1
Y2UKKyAgICAgICAgQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uIGFuZCBDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciB0bworICAgICAgICBjb250YWluIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBsb2dpYyBvZiBjcmVhdGluZyBhbiBJUEMgY2hhbm5lbCwgYW5kIGV4dGVu
ZAorICAgICAgICBBdHRhY2htZW50IHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgZXhjaGFuaW5nIElQ
QyBlbmRwb2ludHMgYWNyb3NzIHByb2Nlc3Nlcy4KKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdW5p
ZmllcyBzb21lIHNwZWNpZmljcyBhYm91dCB0aGUgd2F5IHdlIGhhbmRsZSB1bml4IGRvbWFpbiBz
b2NrZXRzLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgdGhpbmdzIHdlcmUgZml4ZWQgYnkgQ3Nh
YmEgT3N6dHJvZ29uw6FjOgorICAgICAgICAtIFJlbW92ZSB0aGUgU2hhcmVkV29ya2VyUHJvY2Vz
cyBjaGFuZ2UsIGJlY2F1c2UgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwgYWZ0ZXIgcjE1NjI3Ny4K
KyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25mbGljdCBpbiBQcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwIGFmdGVyIHIxNTYwNjMuCisgICAgICAgIC0gUmVzb2x2ZSBhIHRyaXZpYWwgY29uZmxp
Y3QgaW4gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYWZ0ZXIg
cjE1NjUwOC4KKyAgICAgICAgLSBSZW1vdmUgV2luZG93cyByZWxhdGVkIGNoYW5nZXMgYWZ0ZXIg
cjE1NjUwOC4KKyAgICAgICAgLSBSZW1vdmUgUXQgcmVsYXRlZCBjaGFuZ2VzCisgICAgICAgIC0g
UmVzb2x2ZSB0cml2aWFsIGNvbmZsaWN0cyBpbiBBcmd1bWVudERlY29kZXIuaCBhbmQgQXJndW1l
bnRFbmNvZGVyLmguCisgICAgICAgIC0gUmVtb3ZlIG9ic29sZXRlIGNoYW5nZSBpbiBQcm9jZXNz
TGF1bmNoZXJHdGsuY3BwCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpjcmVhdGVEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBHZXQgcmlkIG9mIHBsYXRmb3JtIHNw
ZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
R2V0IHJpZCBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGlu
dGVyZmFjZS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJn
dW1lbnRFbmNvZGVyLmg6CisgICAgICAgIEluY2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1l
bnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxkIGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVw
ZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBpdCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAg
ICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUgaXQgaXMgdXNlZC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQXR0YWNobWVudC5jcHA6CisgICAgICAgIChJUEM6Om1lc3NhZ2VEaXNwb3NpdGlvbik6
CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoSVBDOjpB
dHRhY2htZW50OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OmNv
bm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5o
OgorICAgICAgICAoSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmlkZW50
aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgorICAgICAgICBUaGUgaW52YWxpZCBm
aWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBW
ZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3RyYWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcDoKKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9tYWMvQ29u
bmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Q29u
bmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIpOgorICAgICAgICBUaGVzZSBhcmUg
dGhlIHNhbWUgb24gTWFjLgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24pOgorICAgICAgICBDcmVhdGVzIHRoZSBPUyBzcGVjaWZpYyBJUEMgY2hhbm5l
bC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAg
ICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChJUEM6OkF0dGFj
aG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6Y29ubmVj
dGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVxdWlyZW1lbnQgaXMgbm90IHJl
c3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmluZyBzb2NrZXQgcmlnaHRzCisg
ICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBjb250cm9sIG1lc3NhZ2VzIGlu
IENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OnNlcnZlcklkZW50aWZpZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25u
ZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENvbW1vbiBpbXBsZW1l
bnRhdGlvbiBmb3Igc29ja2V0IGNyZWF0aW9uLiBJIHR1cm5lZCBlcnJvciBoYW5kbGluZyB0byBS
RUxFQVNFX0FTU0VSVCdzCisgICAgICAgIHNpbmNlIGVycm9ycyB3YXMgbmV2ZXIgaGFuZGxlZCBh
bnl3YXkgYW5kIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGRvLgorCisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBDaGFuZ2UgcGxhdGZvcm0g
c3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNl
IHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhlIGNoaWxk
IHNpZGUKKyAgICAgICAgb2YgdGhlIGZvcmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhh
dCBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGlsZFNldHVwRnVuY3Rpb24p
OiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIHNpbmNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0aGF0Lgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOiBVc2UgdGhl
IG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0
d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRl
cmZhY2UuCisKIDIwMTQtMDQtMjQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgV2ViS2l0Ml0gRW5hYmxlIG9wdGltaXphdGlvbiB0byBtbWFwIGRvd25s
b2FkZWQgcmVzb3VyY2VzIG9uY2UgdGhleSBiZWNvbWUgZmlsZS1iYWNrZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IGE2
Yjk1MjAuLmM4YmZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiRGF0YWJh
c2VQcm9jZXNzLmgiCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IkFzeW5jVGFzay5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmgiCkBAIC0xNDksMjAgKzE0OSwxMyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5l
eHREYXRhYmFzZVRhc2soKQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSNpZiBPUyhEQVJXSU4pCi0gICAgLy8gQ3JlYXRl
IHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAg
IG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVD
RUlWRSwgJmxpc3RlbmluZ1BvcnQpOwotCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5l
Y3Rpb24uCi0gICAgUmVmUHRyPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVj
dGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQ
QzsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29u
bmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBt
X2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1B
Q0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3Jp
cHRvci5jbGllbnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50
UG9ydCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZWQ4MzMyYS4uYjAxMzNlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk1LDI4ICsx
OTUsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIC8vIENy
ZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsK
LSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hU
X1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKLQotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBj
b25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29u
bmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICB1c2luZyBuYW1lc3BhY2Ug
SVBDOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBD
b25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0g
ICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVu
dElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOwot
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpTb2Nr
ZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVj
dGlvbigpOwotCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25u
ZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2NrZXRQYWly
LnNlcnZlcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24u
cmVsZWFzZSgpKTsKLQotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0UGFp
ci5jbGllbnQpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGNsaWVudFNvY2tldCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggNmQzOTZiZS4uMTUxNDE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIK
IAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50RGVjb2Rlci5oCmluZGV4IDBjYTBjMTkuLmI4M2I1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3LDExICsyNywxMSBAQAogI2Rl
ZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKICAgICAK
IGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IGVlODU2MzAuLjY4NTRmZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgi
CiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IGYzZmI0ZmEuLjMxNDk1ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAg
LTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBBcmd1bWVudEVuY29kZXI7Citj
bGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogY2xhc3MgQXJndW1lbnRF
bmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2ht
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcAppbmRl
eCA5MzY3YjFhLi43NTgxODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFj
aG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLUF0dGFj
aG1lbnQ6OkF0dGFjaG1lbnQoKQotICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisjaWYgT1Mo
REFSV0lOKQorc3RhdGljIGlubGluZSBtYWNoX21zZ190eXBlX25hbWVfdCBtZXNzYWdlRGlzcG9z
aXRpb24oQXR0YWNobWVudDo6Q29ubmVjdGlvblJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewor
ICAgIGlmIChyZXF1aXJlbWVudCA9PSBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KQorICAg
ICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7CisgICAgaWYgKHJlcXVpcmVtZW50
ID09IEF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01T
R19UWVBFX01PVkVfU0VORDsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKK30KKworQXR0YWNobWVudDo6QXR0YWNobWVudChD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25S
ZXF1aXJlbWVudCByZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCit7Cisg
ICAgbV9wb3J0ID0gaWRlbnRpZmllci5wb3J0OworICAgIG1fZGlzcG9zaXRpb24gPSBtZXNzYWdl
RGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVu
dDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90
IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKICAgICAsIG1fcG9ydChw
b3J0KQpAQCAtNDgsNiArNjEsMTYgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIHsKICAg
ICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51
bGxDb25uZWN0aW9uKEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVu
dCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudChNQUNIX1BPUlRfTlVMTCwgbWVzc2FnZURpc3Bv
c2l0aW9uKHJlcXVpcmVtZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNo
bWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBDb25uZWN0
aW9uOjpJZGVudGlmaWVyKHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9pZCBBdHRhY2htZW50Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9BdHRhY2htZW50LmgKaW5kZXggYjBmMWRjZS4uZGM1Mzg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVm
IEF0dGFjaG1lbnRfaAogI2RlZmluZSBBdHRhY2htZW50X2gKIAorI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgogI2lu
Y2x1ZGUgPG1hY2gvbWFjaF90cmFwcy5oPgpAQCAtMzgsNyArNDAsOSBAQCBjbGFzcyBBcmd1bWVu
dEVuY29kZXI7CiAKIGNsYXNzIEF0dGFjaG1lbnQgewogcHVibGljOgotICAgIEF0dGFjaG1lbnQo
KTsKKyAgICBBdHRhY2htZW50KCkKKyAgICAgICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyAg
ICB7IH0KIAogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC01MCw2
ICs1NCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCisgICAgZW51bSBDb25uZWN0aW9u
UmVxdWlyZW1lbnQgeworICAgICAgICBBY3F1aXJlU2VuZFJpZ2h0LAorICAgICAgICBGb3J3YXJk
U2VuZFJpZ2h0CisgICAgfTsKKworICAgIEF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmll
ciwgQ29ubmVjdGlvblJlcXVpcmVtZW50KTsKKwogI2lmIE9TKERBUldJTikKICAgICBBdHRhY2ht
ZW50KG1hY2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRp
b24pOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC01Nyw2ICs2OCw5IEBAIHB1
YmxpYzoKICAgICBBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAg
IHN0YXRpYyBBdHRhY2htZW50IG51bGxDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7
CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhE
QVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2Mzgz
MDE3Li4yMWJmOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgUnVuTG9vcDsKIAogbmFtZXNwYWNlIElQQyB7CiAKK2Ns
YXNzIEF0dGFjaG1lbnQ7CisKIGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CiAgICAgLy8gV2hldGhl
ciB0aGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlbiB3YWl0aW5nIGZvciBhIHN5
bmMgcmVwbHkuCiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3Igc3luY2hyb25vdXMgbWVz
c2FnZXMuCkBAIC0xMTcsMTUgKzExOSwzNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBdWRpdFRv
a2VuKGF1ZGl0X3Rva2VuX3QmKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAg
IHR5cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVs
bChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CisgICAgc3Rh
dGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJu
IGlkZW50aWZpZXIgPT0gLTE7IH0KIAogICAgIHN0cnVjdCBTb2NrZXRQYWlyIHsKICAgICAgICAg
aW50IGNsaWVudDsKICAgICAgICAgaW50IHNlcnZlcjsKICAgICB9OwotCi0gICAgc3RhdGljIENv
bm5lY3Rpb246OlNvY2tldFBhaXIgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAjZW5kaWYK
KyAgICBjbGFzcyBDb25uZWN0aW9uRGVzY3JpcHRvciB7CisgICAgcHVibGljOgorICAgICAgICBJ
ZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIoKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIENvbm5lY3Rpb247CisjaWYgT1MoREFSV0lOKQorICAgICAgICBDb25uZWN0aW9uRGVzY3Jp
cHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAgICAgQ29ubmVjdGlvbkRlc2Ny
aXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCisgICAgICAgICAgICA6IG1fc2VydmVySWRlbnRpZmllcihzZXJ2ZXJJZGVudGlmaWVy
KQorICAgICAgICAgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKKyAg
ICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9zZXJ2ZXJJZGVudGlmaWVyOworICAgICAg
ICBJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CisKKyAgICBz
dGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCYgY2xpZW50UnVuTG9vcCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVu
dGlmaWVyLCBDbGllbnQqLCBXVEY6OlJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggNmZiZjY0MS4u
YzViODBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29k
ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNs
dWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
TWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGQyZTRlZmUuLjkxZjg0NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5kZXggMTA3ZDRhZC4uY2UzMzk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
Y3BwCkBAIC00OSw3ICs0OSwyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VN
YXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNPdXRPZkxpbmUgPSAxIDw8
IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29u
bmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgbWFjaF9wb3J0X3Qg
cG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JU
X1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Io
cG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKICAg
ICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggMDIyYzcyZC4uNjY0YzhlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNw
cApAQCAtMzEsNiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK0F0dGFjaG1lbnQ6OkF0
dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb25uZWN0aW9uUmVx
dWlyZW1lbnQpCisgICAgOiBtX3R5cGUoU29ja2V0VHlwZSkKKyAgICAsIG1fZmlsZURlc2NyaXB0
b3IoaWRlbnRpZmllcikKK3sKK30KKwogQXR0YWNobWVudDo6QXR0YWNobWVudChpbnQgZmlsZURl
c2NyaXB0b3IsIHNpemVfdCBzaXplKQogICAgIDogbV90eXBlKE1hcHBlZE1lbW9yeVR5cGUpCiAg
ICAgLCBtX2ZpbGVEZXNjcmlwdG9yKGZpbGVEZXNjcmlwdG9yKQpAQCAtNTEsNCArNTcsMTUgQEAg
dm9pZCBBdHRhY2htZW50OjpkaXNwb3NlKCkKICAgICAgICAgY2xvc2VXaXRoUmV0cnkobV9maWxl
RGVzY3JpcHRvcik7CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24o
Q29ubmVjdGlvblJlcXVpcmVtZW50KQoreworICAgIHJldHVybiBBdHRhY2htZW50KC0xKTsKK30K
KworQ29ubmVjdGlvbjo6SWRlbnRpZmllciBBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTb2NrZXRUeXBlKTsKKyAgICByZXR1
cm4gZmlsZURlc2NyaXB0b3IoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXgg
OTlhZTQ5OC4uOTExYWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDQsMTUgKzQ0LDEyIEBACiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAorLy8gT24gUU5YIFNPQ0tf
U0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmluZWQpLCBzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgorI2lmIGRlZmluZWQo
U09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCiAjZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VR
UEFDS0VUCiAjZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKICNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KICNlbmRpZgot
I2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC02Myw2ICs2
MCwyOCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07
CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcklkZW50
aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
aWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgaW50IHNvY2tldHNb
Ml07CisgICAgUkVMRUFTRV9BU1NFUlQoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwg
MCwgc29ja2V0cykgIT0gLTEpOworCisgICAgLy8gQXZvaWQgZXhwb3NpbmcgdGhlIHNlcnZlciBz
b2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5v
ID09IEVJTlRSKTsKKworICAgIHJldHVybiBDb25uZWN0aW9uRGVzY3JpcHRvcihzb2NrZXRzWzBd
LCBzb2NrZXRzWzFdKTsKK30KKwogY2xhc3MgTWVzc2FnZUluZm8gewogcHVibGljOgogICAgIE1l
c3NhZ2VJbmZvKCkgeyB9CkBAIC01NDEsMjEgKzU2MCw0IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbm5lY3Rpb246OlNvY2tldFBhaXIgQ29ubmVjdGlv
bjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKLXsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSAhPSAtMSk7Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIGNoaWxkIHNvY2tldCB0byB0
aGUgcGFyZW50IHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQs
IEZEX0NMT0VYRUMpICA9PSAtMSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJybm8gIT0gRUlO
VFIpOwotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwYXJlbnQgc29ja2V0IHRvIHBvdGVudGlh
bCBmdXR1cmUgY2hpbGRyZW4uCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQs
IEZEX0NMT0VYRUMpID09IC0xKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyAhPSBFSU5U
Uik7Ci0KLSAgICBTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSB7IHNvY2tldHNbMF0sIHNvY2tldHNb
MV0gfTsKLSAgICByZXR1cm4gc29ja2V0UGFpcjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCBk
YzQ0ODY0Li4wOWFmZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHAKQEAgLTE1MywxNSArMTUzLDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6
aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyCiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewotICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQQzsKIAotI2lm
IE9TKERBUldJTikKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hf
cG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgYm9v
bCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgot
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1Bv
cnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0g
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPFdlYlBy
b2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFy
ZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhh
cmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJ
c0FjdGl2ZSkKQEAgLTE3MCwyMSArMTY4LDggQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3
YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKICAgICB9CiAKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgSVBDOjpBdHRhY2htZW50
IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAg
IEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0
YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIElQQzo6
Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5z
ZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldFBhaXIu
Y2xpZW50KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNv
Y2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0j
ZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBs
dWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAgICAgICBp
ZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5j
cHAKaW5kZXggYmI5ZDUzNC4uMGYxNWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKQEAgLTMx
LDYgKzMxLDggQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
QXR0YWNobWVudC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC05MiwxMSArOTQsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdAogCiAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFj
aG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNl
bmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgRGF0
YWJhc2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxh
dW5jaGVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nl
c3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZs
L1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXggMzdjYjIwMy4uMTMzMjBkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vz
c0xhdW5jaGVyRWZsLmNwcApAQCAtNjcsMTEgKzY3LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Y2hhcltdPj4gY3JlYXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBj
b24KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBz
b2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBz
b2NrZXRzKSA8IDApIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
IAogICAgIFN0cmluZyBwcm9jZXNzQ21kUHJlZml4LCBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0
aDsKICAgICBzd2l0Y2ggKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkgewpAQCAtOTgsMjAg
Kzk0LDE5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBpZiAo
IW1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkKICAgICAgICAgcHJv
Y2Vzc0NtZFByZWZpeCA9IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4OwogI2VuZGlm
Ci0gICAgYXV0byBhcmdzID0gY3JlYXRlQXJnc0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1
dGFibGVQYXRoLCBTdHJpbmc6Om51bWJlcihzb2NrZXRzWzBdKSwgcGx1Z2luUGF0aCk7CisgICAg
YXV0byBhcmdzID0gY3JlYXRlQXJnc0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQ
YXRoLCBTdHJpbmc6Om51bWJlcihkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSksIHBsdWdp
blBhdGgpOwogCiAgICAgLy8gRG8gbm90IHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhl
IG1pZGRsZSBvZiB0aGUgZm9yaygpCiAgICAgLy8gZXhlYygpIGJlbG93LiBGYXN0TWFsbG9jIGNh
biBwb3RlbnRpYWxseSBkZWFkbG9jayBiZWNhdXNlCiAgICAgLy8gdGhlIGZvcmsoKSBkb2Vzbid0
IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRfdCBwaWQgPSBmb3JrKCk7CiAg
ICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgY2xvc2Uoc29ja2V0c1sx
XSk7CiAgICAgICAgIGV4ZWN2cChhcmdzLmRhdGEoKVswXS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKiBjb25zdCo+KGFyZ3MuZGF0YSgpKSk7CiAgICAgfSBlbHNlIGlmIChwaWQgPiAwKSB7
IC8vIHBhcmVudCBwcm9jZXNzOwotICAgICAgICBjbG9zZShzb2NrZXRzWzBdKTsKKyAgICAgICAg
Y2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgICAgICBtX3Byb2Nlc3NJ
ZGVudGlmaWVyID0gcGlkOwogICAgICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhl
IHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1
bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDFjOWZhMDUuLjJkZTA2MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nl
c3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ2LDMyICs0NiwxNyBAQAogI2luY2x1ZGUgPHN5cy9zb2Nr
ZXQuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZ
UEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFN
Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7
Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uo
c29ja2V0KTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewot
ICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRw
YWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAgICAgZ19w
cmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDogJXMuXG4iLCBnX3N0cmVycm9yKGVy
cm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBT
dHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyByZWFsRXhlY3V0
YWJsZVBhdGgsIHJlYWxQbHVnaW5QYXRoOwpAQCAtOTcsNyArODIsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0
b3IuY2xpZW50SWRlbnRpZmllcigpKSk7CiAKICAgICB1bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNp
emUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9yIGdfc3Bhd25fYXN5bmMoKQogCkBAIC0xMjUsMTYgKzEx
MCwxNiBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgYXJndltp
KytdID0gMDsKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdf
c3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBj
aGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVy
cm9yLm91dFB0cigpKSkgeworICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQ
QVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19Q
T0lOVEVSKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSwgJnBpZCwgJmVycm9yLm91dFB0
cigpKSkgewogICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUgdG8gZm9yayBhIG5ldyBXZWJQcm9j
ZXNzOiAlcy5cbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCi0gICAgY2xvc2Uoc29ja2V0c1swXSk7CisgICAgY2xvc2UoZGVzY3JpcHRv
ci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAK
ICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFj
ayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmlu
ZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3By
b2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhp
cywgbV9wcm9jZXNzSWRlbnRpZmllciwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpKTsK
IH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA5ZTMxZGE2Li5hYjY0MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5j
bHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRv
d25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTExLDEzICsxMTIsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAg
IHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpB
dHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxpZiBVU0UoVU5JWF9E
T01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KCkpOwot
I2Vsc2UKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5k
KElQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50OjpGb3J3YXJk
U2VuZFJpZ2h0KSk7CiAgICAgfQogCiAgICAgLy8gVGVsbCB0aGUgbmV0d29yayBwcm9jZXNzIG1h
bmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBwcm9jZXNzIHByb3h5LiBUaGlzIG1h
eSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgpAQCAtMTYzLDEzICsxNTgsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNv
bnN0IElQQzo6QXR0YQogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiBy
ZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlv
blJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQo
SVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHJlcGx5
LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IDAzYjAzNTQuLmQwNTdhNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIK
QEAgLTEzNywxMyArMTM4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBPUyhEQVJX
SU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCksIGZhbHNlKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAg
ICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwotI2Vsc2UKLSAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNo
bWVudDo6bnVsbENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSwg
ZmFsc2UpOwogICAgIH0KIAogICAgIHdoaWxlICghbV9wZW5kaW5nR2V0U2l0ZXNSZXBsaWVzLmlz
RW1wdHkoKSkKQEAgLTI0MSwxMyArMjM2LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY28KICAg
ICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCiAgICAgUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0
KCk7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNv
bm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKLSNlbGlmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQogICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKLSNlbHNlCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkR2V0
U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGQ4YmI5
OTAuLjg4Yjc1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBA
IC03NCwxNSArNzQsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0jaWYgT1MoREFSV0lOKQotICAgIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIucG9ydCgpKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOwogICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlv
bklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gMDsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5maWxlRGVzY3JpcHRvcigpOwotICAg
IGlmIChjb25uZWN0aW9uSWRlbnRpZmllciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0jZW5k
aWYKIAogICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBy
b2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBlMjZlZjE1Li44YjliN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKQEAgLTM3NiwxMyArMzc2LDggQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm47CiAKLSNpZiBPUyhEQVJXSU4pCi0g
ICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VGaWxlRGVzY3JpcHRvcigp
OwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgorICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigpOworCiAgICAgaWYgKElQQzo6Q29u
bmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAg
IHJldHVybjsKICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230168</attachid>
            <date>2014-04-25 05:02:12 -0700</date>
            <delta_ts>2014-10-07 03:59:32 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>ipc-refactor-110978.patch</filename>
            <type>text/plain</type>
            <size>34947</size>
            <attacher name="Peter Molnar">pmolnar.u-szeged</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3ZGE5OTliLi4xN2ZkMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDE0LTA0LTI1ICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIu
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl0gUmVmYWN0b3Jpbmc6IHVuaWZ5IElQQyBjb25u
ZWN0aW9uIGNyZWF0aW9uIC0gZ2V0IHJpZCBvZiBpZmRlZiBoZWxsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBwYXRjaCBhbmQgYWxz
byByZWZhY3RvcmVkIHRoZSBEYXRhYmFzZVByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgT3JpZ2luYWwgcGF0Y2ggYnkgQmFsYXpzIEtlbGVtZW4gPGtiYWxhenNAd2Via2l0Lm9yZz4s
IEt3YW5nIFl1bCBTZW8gPHNreXVsQGNvbXBhbnkxMDAubmV0PiwKKyAgICAgICAgYW5kIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4uCisKKyAgICAgICAgR2V0IHJpZCBvZiBw
bGF0Zm9ybSBpZmRlZnMgZGVhbGluZyB3aXRoIElQQyBjb25uZWN0aW9uIHNldHVwLiBJbnRyb2R1
Y2UKKyAgICAgICAgQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uIGFuZCBDb25u
ZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciB0bworICAgICAgICBjb250YWluIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYyBsb2dpYyBvZiBjcmVhdGluZyBhbiBJUEMgY2hhbm5lbCwgYW5kIGV4dGVu
ZAorICAgICAgICBBdHRhY2htZW50IHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgZXhjaGFuaW5nIElQ
QyBlbmRwb2ludHMgYWNyb3NzIHByb2Nlc3Nlcy4KKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdW5p
ZmllcyBzb21lIHNwZWNpZmljcyBhYm91dCB0aGUgd2F5IHdlIGhhbmRsZSB1bml4IGRvbWFpbiBz
b2NrZXRzLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgdGhpbmdzIHdlcmUgZml4ZWQgYnkgQ3Nh
YmEgT3N6dHJvZ29uw6FjOgorICAgICAgICAtIFJlbW92ZSB0aGUgU2hhcmVkV29ya2VyUHJvY2Vz
cyBjaGFuZ2UsIGJlY2F1c2UgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwgYWZ0ZXIgcjE1NjI3Ny4K
KyAgICAgICAgLSBSZXNvbHZlIGEgdHJpdmlhbCBjb25mbGljdCBpbiBQcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwIGFmdGVyIHIxNTYwNjMuCisgICAgICAgIC0gUmVzb2x2ZSBhIHRyaXZpYWwgY29uZmxp
Y3QgaW4gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYWZ0ZXIg
cjE1NjUwOC4KKyAgICAgICAgLSBSZW1vdmUgV2luZG93cyByZWxhdGVkIGNoYW5nZXMgYWZ0ZXIg
cjE1NjUwOC4KKyAgICAgICAgLSBSZW1vdmUgUXQgcmVsYXRlZCBjaGFuZ2VzCisgICAgICAgIC0g
UmVzb2x2ZSB0cml2aWFsIGNvbmZsaWN0cyBpbiBBcmd1bWVudERlY29kZXIuaCBhbmQgQXJndW1l
bnRFbmNvZGVyLmguCisgICAgICAgIC0gUmVtb3ZlIG9ic29sZXRlIGNoYW5nZSBpbiBQcm9jZXNz
TGF1bmNoZXJHdGsuY3BwCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpjcmVhdGVEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBHZXQgcmlkIG9mIHBsYXRmb3JtIHNw
ZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAg
R2V0IHJpZCBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGlu
dGVyZmFjZS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJn
dW1lbnRFbmNvZGVyLmg6CisgICAgICAgIEluY2x1ZGluZyBBdHRhY2htZW50LmggaW4gQXJndW1l
bnRbRW5jb2Rlci9EZWNvZGVyXS5oIHdvdWxkIGNhdXNlCisgICAgICAgIGEgY2lyY3VsYXIgZGVw
ZW5kZW5jeSBub3csIHNvIEkgY2hhbmdlZCBpdCB0byBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAg
ICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUgaXQgaXMgdXNlZC4KKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvQXR0YWNobWVudC5jcHA6CisgICAgICAgIChJUEM6Om1lc3NhZ2VEaXNwb3NpdGlvbik6
CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQpOgorICAgICAgICAoSVBDOjpB
dHRhY2htZW50OjpudWxsQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OmNv
bm5lY3Rpb25JZGVudGlmaWVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5o
OgorICAgICAgICAoSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKworICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmlkZW50
aWZpZXJJc051bGwpOiBJdCB3YXMgc2ltcGx5IHdyb25nLgorICAgICAgICBUaGUgaW52YWxpZCBm
aWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IpOgorICAgICAgICBW
ZXJ5IGJhc2ljIHBsYXRmb3JtIGFic3RyYWN0aW9uIG9mIGFuIElQQyBjaGFubmVsLgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL01lc3NhZ2VFbmNvZGVyLmNwcDoKKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9tYWMvQ29u
bmVjdGlvbk1hYy5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNj
cmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Q29u
bmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIpOgorICAgICAgICBUaGVzZSBhcmUg
dGhlIHNhbWUgb24gTWFjLgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24pOgorICAgICAgICBDcmVhdGVzIHRoZSBPUyBzcGVjaWZpYyBJUEMgY2hhbm5l
bC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAg
ICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChJUEM6OkF0dGFj
aG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6Y29ubmVj
dGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVxdWlyZW1lbnQgaXMgbm90IHJl
c3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmluZyBzb2NrZXQgcmlnaHRzCisg
ICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBjb250cm9sIG1lc3NhZ2VzIGlu
IENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2Ny
aXB0b3I6OnNlcnZlcklkZW50aWZpZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25u
ZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRpZmllcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENvbW1vbiBpbXBsZW1l
bnRhdGlvbiBmb3Igc29ja2V0IGNyZWF0aW9uLiBJIHR1cm5lZCBlcnJvciBoYW5kbGluZyB0byBS
RUxFQVNFX0FTU0VSVCdzCisgICAgICAgIHNpbmNlIGVycm9ycyB3YXMgbmV2ZXIgaGFuZGxlZCBh
bnl3YXkgYW5kIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGRvLgorCisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBDaGFuZ2UgcGxhdGZvcm0g
c3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgVXNl
IHRoZSBuZXcgaW50ZXJmYWNlLiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIGZyb20gdGhlIGNoaWxk
IHNpZGUKKyAgICAgICAgb2YgdGhlIGZvcmsgYmVjYXVzZSBGRF9DTE9FWEVDIGhhbmRsZXMgdGhh
dCBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGlsZFNldHVwRnVuY3Rpb24p
OiBSZW1vdmVkIHRoZSBjbG9zZSBjYWxsIHNpbmNlIEZEX0NMT0VYRUMgaGFuZGxlcyB0aGF0Lgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOiBVc2UgdGhl
IG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6bmV0
d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRl
cmZhY2UuCisKIDIwMTQtMDQtMjQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1MgV2ViS2l0Ml0gRW5hYmxlIG9wdGltaXphdGlvbiB0byBtbWFwIGRvd25s
b2FkZWQgcmVzb3VyY2VzIG9uY2UgdGhleSBiZWNvbWUgZmlsZS1iYWNrZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IGE2
Yjk1MjAuLmM4YmZlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiRGF0YWJh
c2VQcm9jZXNzLmgiCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLQogI2luY2x1ZGUg
IkFzeW5jVGFzay5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmgiCkBAIC0xNDksMjAgKzE0OSwxMyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5l
eHREYXRhYmFzZVRhc2soKQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSNpZiBPUyhEQVJXSU4pCi0gICAgLy8gQ3JlYXRl
IHRoZSBsaXN0ZW5pbmcgcG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAg
IG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVD
RUlWRSwgJmxpc3RlbmluZ1BvcnQpOwotCi0gICAgLy8gQ3JlYXRlIGEgbGlzdGVuaW5nIGNvbm5l
Y3Rpb24uCi0gICAgUmVmUHRyPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVj
dGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQ
QzsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29u
bmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IERhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBt
X2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1B
Q0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3Jp
cHRvci5jbGllbnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50
UG9ydCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZWQ4MzMyYS4uYjAxMzNlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk1LDI4ICsx
OTUsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIC8vIENy
ZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsK
LSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hU
X1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKLQotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBj
b25uZWN0aW9uLgotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29u
bmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKTsKKyAgICB1c2luZyBuYW1lc3BhY2Ug
SVBDOworICAgIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBD
b25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKTsKICAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwogCi0g
ICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOworICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVu
dElkZW50aWZpZXIoKSwgQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
RGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY2xpZW50UG9ydCksIDApOwot
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpTb2Nr
ZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVj
dGlvbigpOwotCi0gICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25u
ZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShzb2NrZXRQYWly
LnNlcnZlcik7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24u
cmVsZWFzZSgpKTsKLQotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRTb2NrZXQoc29ja2V0UGFp
ci5jbGllbnQpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKGNsaWVudFNvY2tldCksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50RGVjb2Rlci5jcHAKaW5kZXggNmQzOTZiZS4uMTUxNDE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIK
IAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50RGVjb2Rlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50RGVjb2Rlci5oCmluZGV4IDBjYTBjMTkuLmI4M2I1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmgKQEAgLTI3LDExICsyNywxMSBAQAogI2Rl
ZmluZSBBcmd1bWVudERlY29kZXJfaAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgotI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewogCitjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKICAgICAK
IGNsYXNzIEFyZ3VtZW50RGVjb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IGVlODU2MzAuLjY4NTRmZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgi
CiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCmluZGV4IGYzZmI0ZmEuLjMxNDk1ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmgKQEAg
LTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBBcmd1bWVudEVuY29kZXJfaAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2Rlci5oIgotI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBBcmd1bWVudEVuY29kZXI7Citj
bGFzcyBBdHRhY2htZW50OwogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogY2xhc3MgQXJndW1lbnRF
bmNvZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2ht
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcAppbmRl
eCA5MzY3YjFhLi43NTgxODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFj
aG1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMjUgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKLUF0dGFj
aG1lbnQ6OkF0dGFjaG1lbnQoKQotICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisjaWYgT1Mo
REFSV0lOKQorc3RhdGljIGlubGluZSBtYWNoX21zZ190eXBlX25hbWVfdCBtZXNzYWdlRGlzcG9z
aXRpb24oQXR0YWNobWVudDo6Q29ubmVjdGlvblJlcXVpcmVtZW50IHJlcXVpcmVtZW50KQogewor
ICAgIGlmIChyZXF1aXJlbWVudCA9PSBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KQorICAg
ICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7CisgICAgaWYgKHJlcXVpcmVtZW50
ID09IEF0dGFjaG1lbnQ6OkZvcndhcmRTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBNQUNIX01T
R19UWVBFX01PVkVfU0VORDsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBNQUNIX01TR19UWVBFX01BS0VfU0VORDsKK30KKworQXR0YWNobWVudDo6QXR0YWNobWVudChD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25S
ZXF1aXJlbWVudCByZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCit7Cisg
ICAgbV9wb3J0ID0gaWRlbnRpZmllci5wb3J0OworICAgIG1fZGlzcG9zaXRpb24gPSBtZXNzYWdl
RGlzcG9zaXRpb24ocmVxdWlyZW1lbnQpOwogfQogCi0jaWYgT1MoREFSV0lOKQogQXR0YWNobWVu
dDo6QXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90
IGRpc3Bvc2l0aW9uKQogICAgIDogbV90eXBlKE1hY2hQb3J0VHlwZSkKICAgICAsIG1fcG9ydChw
b3J0KQpAQCAtNDgsNiArNjEsMTYgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIHsKICAg
ICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogfQorCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51
bGxDb25uZWN0aW9uKEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVu
dCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudChNQUNIX1BPUlRfTlVMTCwgbWVzc2FnZURpc3Bv
c2l0aW9uKHJlcXVpcmVtZW50KSk7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNo
bWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBDb25uZWN0
aW9uOjpJZGVudGlmaWVyKHBvcnQoKSk7Cit9CiAjZW5kaWYKIAogdm9pZCBBdHRhY2htZW50Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9BdHRhY2htZW50LmgKaW5kZXggYjBmMWRjZS4uZGM1Mzg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVm
IEF0dGFjaG1lbnRfaAogI2RlZmluZSBBdHRhY2htZW50X2gKIAorI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgogI2lu
Y2x1ZGUgPG1hY2gvbWFjaF90cmFwcy5oPgpAQCAtMzgsNyArNDAsOSBAQCBjbGFzcyBBcmd1bWVu
dEVuY29kZXI7CiAKIGNsYXNzIEF0dGFjaG1lbnQgewogcHVibGljOgotICAgIEF0dGFjaG1lbnQo
KTsKKyAgICBBdHRhY2htZW50KCkKKyAgICAgICAgOiBtX3R5cGUoVW5pbml0aWFsaXplZCkKKyAg
ICB7IH0KIAogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC01MCw2
ICs1NCwxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCisgICAgZW51bSBDb25uZWN0aW9u
UmVxdWlyZW1lbnQgeworICAgICAgICBBY3F1aXJlU2VuZFJpZ2h0LAorICAgICAgICBGb3J3YXJk
U2VuZFJpZ2h0CisgICAgfTsKKworICAgIEF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmll
ciwgQ29ubmVjdGlvblJlcXVpcmVtZW50KTsKKwogI2lmIE9TKERBUldJTikKICAgICBBdHRhY2ht
ZW50KG1hY2hfcG9ydF9uYW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRp
b24pOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC01Nyw2ICs2OCw5IEBAIHB1
YmxpYzoKICAgICBBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKIAorICAg
IHN0YXRpYyBBdHRhY2htZW50IG51bGxDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCk7
CisKKyAgICBDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICNpZiBPUyhE
QVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2Mzgz
MDE3Li4yMWJmOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgUnVuTG9vcDsKIAogbmFtZXNwYWNlIElQQyB7CiAKK2Ns
YXNzIEF0dGFjaG1lbnQ7CisKIGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CiAgICAgLy8gV2hldGhl
ciB0aGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGRpc3BhdGNoZWQgd2hlbiB3YWl0aW5nIGZvciBhIHN5
bmMgcmVwbHkuCiAgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3Igc3luY2hyb25vdXMgbWVz
c2FnZXMuCkBAIC0xMTcsMTUgKzExOSwzNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBdWRpdFRv
a2VuKGF1ZGl0X3Rva2VuX3QmKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAg
IHR5cGVkZWYgaW50IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVs
bChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9CisgICAgc3Rh
dGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJu
IGlkZW50aWZpZXIgPT0gLTE7IH0KIAogICAgIHN0cnVjdCBTb2NrZXRQYWlyIHsKICAgICAgICAg
aW50IGNsaWVudDsKICAgICAgICAgaW50IHNlcnZlcjsKICAgICB9OwotCi0gICAgc3RhdGljIENv
bm5lY3Rpb246OlNvY2tldFBhaXIgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAjZW5kaWYK
KyAgICBjbGFzcyBDb25uZWN0aW9uRGVzY3JpcHRvciB7CisgICAgcHVibGljOgorICAgICAgICBJ
ZGVudGlmaWVyIHNlcnZlcklkZW50aWZpZXIoKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIENvbm5lY3Rpb247CisjaWYgT1MoREFSV0lOKQorICAgICAgICBDb25uZWN0aW9uRGVzY3Jp
cHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAgICA6IG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorICAgICAgICB7IH0KKyAgICAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAgICAgQ29ubmVjdGlvbkRlc2Ny
aXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCisgICAgICAgICAgICA6IG1fc2VydmVySWRlbnRpZmllcihzZXJ2ZXJJZGVudGlmaWVy
KQorICAgICAgICAgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKKyAg
ICAgICAgeyB9CisgICAgICAgIElkZW50aWZpZXIgbV9zZXJ2ZXJJZGVudGlmaWVyOworICAgICAg
ICBJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CisKKyAgICBz
dGF0aWMgQ29ubmVjdGlvbkRlc2NyaXB0b3IgY3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb25uZWN0aW9uPiBjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KElkZW50aWZpZXIsIENsaWVudCosIFdURjo6UnVuTG9vcCYgY2xpZW50UnVuTG9vcCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbihJZGVu
dGlmaWVyLCBDbGllbnQqLCBXVEY6OlJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggNmZiZjY0MS4u
YzViODBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29k
ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNs
dWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
TWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGQyZTRlZmUuLjkxZjg0NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5jcHAKaW5kZXggMTA3ZDRhZC4uY2UzMzk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMu
Y3BwCkBAIC00OSw3ICs0OSwyNCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGluZU1lc3NhZ2VN
YXhTaXplID0gNDA5NjsKIGVudW0gewogICAgIE1lc3NhZ2VCb2R5SXNPdXRPZkxpbmUgPSAxIDw8
IDAKIH07Ci0gICAgCisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29u
bmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2lkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgbWFjaF9wb3J0X3Qg
cG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JU
X1JJR0hUX1JFQ0VJVkUsICZwb3J0KTsKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRlc2NyaXB0b3Io
cG9ydCk7Cit9CisKIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKICAg
ICBpZiAoIW1faXNDb25uZWN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggMDIyYzcyZC4uNjY0YzhlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNobWVudFVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNw
cApAQCAtMzEsNiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK0F0dGFjaG1lbnQ6OkF0
dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb25uZWN0aW9uUmVx
dWlyZW1lbnQpCisgICAgOiBtX3R5cGUoU29ja2V0VHlwZSkKKyAgICAsIG1fZmlsZURlc2NyaXB0
b3IoaWRlbnRpZmllcikKK3sKK30KKwogQXR0YWNobWVudDo6QXR0YWNobWVudChpbnQgZmlsZURl
c2NyaXB0b3IsIHNpemVfdCBzaXplKQogICAgIDogbV90eXBlKE1hcHBlZE1lbW9yeVR5cGUpCiAg
ICAgLCBtX2ZpbGVEZXNjcmlwdG9yKGZpbGVEZXNjcmlwdG9yKQpAQCAtNTEsNCArNTcsMTUgQEAg
dm9pZCBBdHRhY2htZW50OjpkaXNwb3NlKCkKICAgICAgICAgY2xvc2VXaXRoUmV0cnkobV9maWxl
RGVzY3JpcHRvcik7CiB9CiAKK0F0dGFjaG1lbnQgQXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24o
Q29ubmVjdGlvblJlcXVpcmVtZW50KQoreworICAgIHJldHVybiBBdHRhY2htZW50KC0xKTsKK30K
KworQ29ubmVjdGlvbjo6SWRlbnRpZmllciBBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBTb2NrZXRUeXBlKTsKKyAgICByZXR1
cm4gZmlsZURlc2NyaXB0b3IoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXgg
OTlhZTQ5OC4uOTExYWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDQsMTUgKzQ0LDEyIEBACiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2VuZGlmCiAKLSNpZmRlZiBTT0NLX1NFUVBBQ0tFVAorLy8gT24gUU5YIFNPQ0tf
U0VRUEFDS0VUIGRvZXMgbm90IHdvcmsgKGFsdGhvdWdoIGl0IGlzIGRlZmluZWQpLCBzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTUzLgorI2lmIGRlZmluZWQo
U09DS19TRVFQQUNLRVQpICYmICFPUyhRTlgpCiAjZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU0VR
UEFDS0VUCiAjZWxzZQotI2lmIFBMQVRGT1JNKEdUSykKICNkZWZpbmUgU09DS0VUX1RZUEUgU09D
S19TVFJFQU0KLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfREdSQU0KICNlbmRpZgot
I2VuZGlmIC8vIFNPQ0tfU0VRUEFDS0VUCiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC02Myw2ICs2
MCwyOCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07
CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcklkZW50
aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
aWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpCit7CisgICAgaW50IHNvY2tldHNb
Ml07CisgICAgUkVMRUFTRV9BU1NFUlQoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwg
MCwgc29ja2V0cykgIT0gLTEpOworCisgICAgLy8gQXZvaWQgZXhwb3NpbmcgdGhlIHNlcnZlciBz
b2NrZXQgdG8gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICB3aGlsZSAoZmNudGwoc29ja2V0c1swXSwg
Rl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5v
ID09IEVJTlRSKTsKKworICAgIHJldHVybiBDb25uZWN0aW9uRGVzY3JpcHRvcihzb2NrZXRzWzBd
LCBzb2NrZXRzWzFdKTsKK30KKwogY2xhc3MgTWVzc2FnZUluZm8gewogcHVibGljOgogICAgIE1l
c3NhZ2VJbmZvKCkgeyB9CkBAIC01NDEsMjEgKzU2MCw0IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbm5lY3Rpb246OlNvY2tldFBhaXIgQ29ubmVjdGlv
bjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKLXsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2Nr
ZXRzKSAhPSAtMSk7Ci0KLSAgICAvLyBEb24ndCBleHBvc2UgdGhlIGNoaWxkIHNvY2tldCB0byB0
aGUgcGFyZW50IHByb2Nlc3MuCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQs
IEZEX0NMT0VYRUMpICA9PSAtMSkKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJybm8gIT0gRUlO
VFIpOwotCi0gICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwYXJlbnQgc29ja2V0IHRvIHBvdGVudGlh
bCBmdXR1cmUgY2hpbGRyZW4uCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQs
IEZEX0NMT0VYRUMpID09IC0xKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyAhPSBFSU5U
Uik7Ci0KLSAgICBTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSB7IHNvY2tldHNbMF0sIHNvY2tldHNb
MV0gfTsKLSAgICByZXR1cm4gc29ja2V0UGFpcjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCBk
YzQ0ODY0Li4wOWFmZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luUHJvY2Vzcy5jcHAKQEAgLTE1MywxNSArMTUzLDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6
aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyCiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQog
ewotICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlByb2Nl
c3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQQzsKIAotI2lm
IE9TKERBUldJTikKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hf
cG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAgYm9v
bCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgot
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1Bv
cnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0g
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPFdlYlBy
b2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIGlmIChtX2F1ZGlvSGFy
ZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXItPmhh
cmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpJ
c0FjdGl2ZSkKQEAgLTE3MCwyMSArMTY4LDggQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5hdWRpb0hhcmR3
YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKICAgICB9CiAKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgSVBDOjpBdHRhY2htZW50
IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAg
IEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwgQXR0
YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIElQQzo6
Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlv
bj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5z
ZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJl
bGVhc2UoKSk7Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldFBhaXIu
Y2xpZW50KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQ
bHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFNv
Y2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0j
ZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRzY2FwZVBs
dWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAgICAgICBp
ZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5j
cHAKaW5kZXggYmI5ZDUzNC4uMGYxNWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKQEAgLTMx
LDYgKzMxLDggQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
QXR0YWNobWVudC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC05MiwxMSArOTQsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdAogCiAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFj
aG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNl
bmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgRGF0
YWJhc2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxh
dW5jaGVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nl
c3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZs
L1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXggMzdjYjIwMy4uMTMzMjBkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vz
c0xhdW5jaGVyRWZsLmNwcApAQCAtNjcsMTEgKzY3LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Y2hhcltdPj4gY3JlYXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBj
b24KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBz
b2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBz
b2NrZXRzKSA8IDApIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsK
IAogICAgIFN0cmluZyBwcm9jZXNzQ21kUHJlZml4LCBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0
aDsKICAgICBzd2l0Y2ggKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkgewpAQCAtOTgsMjAg
Kzk0LDE5IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBpZiAo
IW1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkKICAgICAgICAgcHJv
Y2Vzc0NtZFByZWZpeCA9IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4OwogI2VuZGlm
Ci0gICAgYXV0byBhcmdzID0gY3JlYXRlQXJnc0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1
dGFibGVQYXRoLCBTdHJpbmc6Om51bWJlcihzb2NrZXRzWzBdKSwgcGx1Z2luUGF0aCk7CisgICAg
YXV0byBhcmdzID0gY3JlYXRlQXJnc0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQ
YXRoLCBTdHJpbmc6Om51bWJlcihkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSksIHBsdWdp
blBhdGgpOwogCiAgICAgLy8gRG8gbm90IHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhl
IG1pZGRsZSBvZiB0aGUgZm9yaygpCiAgICAgLy8gZXhlYygpIGJlbG93LiBGYXN0TWFsbG9jIGNh
biBwb3RlbnRpYWxseSBkZWFkbG9jayBiZWNhdXNlCiAgICAgLy8gdGhlIGZvcmsoKSBkb2Vzbid0
IGluaGVyaXQgdGhlIHJ1bm5pbmcgdGhyZWFkcy4KICAgICBwaWRfdCBwaWQgPSBmb3JrKCk7CiAg
ICAgaWYgKCFwaWQpIHsgLy8gQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgY2xvc2Uoc29ja2V0c1sx
XSk7CiAgICAgICAgIGV4ZWN2cChhcmdzLmRhdGEoKVswXS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKiBjb25zdCo+KGFyZ3MuZGF0YSgpKSk7CiAgICAgfSBlbHNlIGlmIChwaWQgPiAwKSB7
IC8vIHBhcmVudCBwcm9jZXNzOwotICAgICAgICBjbG9zZShzb2NrZXRzWzBdKTsKKyAgICAgICAg
Y2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgICAgICBtX3Byb2Nlc3NJ
ZGVudGlmaWVyID0gcGlkOwogICAgICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhl
IHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1
bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGlu
Z1Byb2Nlc3MsIHRoaXMsIHBpZCwgZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IDFjOWZhMDUuLjI5MmIyMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVy
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nl
c3NMYXVuY2hlckd0ay5jcHAKQEAgLTQ2LDMyICs0NiwxNyBAQAogI2luY2x1ZGUgPHN5cy9zb2Nr
ZXQuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKLSNkZWZpbmUgU09DS0VUX1RZ
UEUgU09DS19TRVFQQUNLRVQKLSNlbHNlCi0jZGVmaW5lIFNPQ0tFVF9UWVBFIFNPQ0tfU1RSRUFN
Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVwRnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7
Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVSX1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uo
c29ja2V0KTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewot
ICAgIEdQaWQgcGlkID0gMDsKLQotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChzb2NrZXRw
YWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAgICAgZ19w
cmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZhaWxlZDogJXMuXG4iLCBnX3N0cmVycm9yKGVy
cm5vKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAKICAgICBT
dHJpbmcgZXhlY3V0YWJsZVBhdGgsIHBsdWdpblBhdGg7CiAgICAgQ1N0cmluZyByZWFsRXhlY3V0
YWJsZVBhdGgsIHJlYWxQbHVnaW5QYXRoOwpAQCAtOTcsNyArODIsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQogCiAgICAgcmVhbEV4ZWN1dGFibGVQYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKLSAgICBHVW5pcXVl
UHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0
b3IuY2xpZW50SWRlbnRpZmllcigpKSk7CiAKICAgICB1bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNp
emUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9yIGdfc3Bhd25fYXN5bmMoKQogCkBAIC0xMjQsMTcgKzEw
OSwxOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgYXJndltp
KytdID0gY29uc3RfY2FzdDxjaGFyKj4ocmVhbFBsdWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2
W2krK10gPSAwOwogCisgICAgR1BpZCBwaWQgPSAwOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9MRUFW
RV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihz
b2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgeworICAgIGlmICghZ19zcGF3bl9h
c3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0
dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigp
KSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUg
dG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5cbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgY2xvc2Uoc29ja2V0c1swXSk7
CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgIG1fcHJvY2Vz
c0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhl
IHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRzWzFdKSk7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNo
TGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwgZGVzY3JpcHRvci5z
ZXJ2ZXJJZGVudGlmaWVyKCkpKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OnRlcm1pbmF0
ZVByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5ZTMxZGE2Li5hYjY0MWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTExLDEzICsx
MTIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9y
RmFpbGVkVG9MYXVuY2goKQogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICAg
ICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5E
KSk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQo
SVBDOjpBdHRhY2htZW50KCkpOwotI2Vsc2UKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSNl
bmRpZgorICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oSVBD
OjpBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KSk7CiAgICAgfQogCiAgICAgLy8gVGVsbCB0
aGUgbmV0d29yayBwcm9jZXNzIG1hbmFnZXIgdG8gZm9yZ2V0IGFib3V0IHRoaXMgbmV0d29yayBw
cm9jZXNzIHByb3h5LiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgpAQCAtMTYzLDEz
ICsxNTgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0YQogICAgIC8vIEdyYWIgdGhlIGZpcnN0
IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5
ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBPUyhEQVJX
SU4pCi0gICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVy
LnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKLSNlbHNl
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4
IDAzYjAzNTQuLmQwNTdhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50Lmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTEzNywxMyArMTM4LDcgQEAgdm9pZCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgd2hp
bGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZp
cnN0KCk7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNo
bWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKLSNlbGlmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSwg
ZmFsc2UpOwotI2Vsc2UKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgorICAgIHJl
cGx5LT5zZW5kKElQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50
OjpGb3J3YXJkU2VuZFJpZ2h0KSwgZmFsc2UpOwogICAgIH0KIAogICAgIHdoaWxlICghbV9wZW5k
aW5nR2V0U2l0ZXNSZXBsaWVzLmlzRW1wdHkoKSkKQEAgLTI0MSwxMyArMjM2LDcgQEAgdm9pZCBQ
bHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYgY28KICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rp
b24gcmVwbHkuCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgcmVwbHktPnNl
bmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHJlcGx5LT5zZW5kKGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6ZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCmluZGV4IGQ4YmI5OTAuLjg4Yjc1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCkBAIC03NCwxNSArNzQsOSBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0lu
aXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCi0jaWYgT1MoREFSV0lOKQot
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNv
ZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50
aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gMDsKLSNl
bGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5m
aWxlRGVzY3JpcHRvcigpOwotICAgIGlmIChjb25uZWN0aW9uSWRlbnRpZmllciA9PSAtMSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKHRoaXMsIHBsdWdpblByb2Nlc3NUb2tlbiwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlMjZlZjE1Li44YjliN2Q3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTM3NiwxMyArMzc2LDggQEAg
dm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAg
ICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOwotI2Vs
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJl
bGVhc2VGaWxlRGVzY3JpcHRvcigpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSNlbmRpZgorICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcigp
OworCiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9u
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlm
aWVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239403</attachid>
            <date>2014-10-07 03:59:52 -0700</date>
            <delta_ts>2014-11-04 04:16:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20141007125954.patch</filename>
            <type>text/plain</type>
            <size>39050</size>
            <attacher name="Éva Balázsfalvi">evab.u-szeged</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Mzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjMwZjVlYzM3ZmU2MGI4
NDc1NmVlMTc5M2Q3ODQwMWZmNTJiY2VmOC4uODVkY2QxOGQzMWIxYWNjYjc3ZTQ0MjZlMmRhYWZi
NmNlNDAyNGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNC0xMC0wNyAgRXZh
IEJhbGF6c2ZhbHZpICA8ZXZhYi51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXSzJdIFJlZmFjdG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdl
dCByaWQgb2YgaWZkZWYgaGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwOTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0aGUgcGF0Y2ggbWFkZSBieSBCYWxhenMgS2VsZW1lbiA8a2Jh
bGF6c0B3ZWJraXQub3JnPiwKKyAgICAgICAgS3dhbmcgWXVsIFNlbyA8c2t5dWxAY29tcGFueTEw
MC5uZXQ+LCBDc2FiYSBPc3p0cm9nb27DoWMKKyAgICAgICAgPG9zc3lAd2Via2l0Lm9yZz4gYW5k
IFBldGVyIE1vbG5hciA8cG1vbG5hci51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPi4KKwor
ICAgICAgICBHZXQgcmlkIG9mIHBsYXRmb3JtIGlmZGVmcyBkZWFsaW5nIHdpdGggSVBDIGNvbm5l
Y3Rpb24gc2V0dXAuIEludHJvZHVjZQorICAgICAgICBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9y
bUNvbm5lY3Rpb24gYW5kIENvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIHRvCisgICAg
ICAgIGNvbnRhaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIG9mIGNyZWF0aW5nIGFuIElQ
QyBjaGFubmVsLCBhbmQgZXh0ZW5kCisgICAgICAgIEF0dGFjaG1lbnQgdG8gaGlkZSB0aGUgZGV0
YWlscyBvZiBleGNoYW5pbmcgSVBDIGVuZHBvaW50cyBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAg
ICBUaGUgcGF0Y2ggYWxzbyB1bmlmaWVzIHNvbWUgc3BlY2lmaWNzIGFib3V0IHRoZSB3YXkgd2Ug
aGFuZGxlIHVuaXggZG9tYWluIHNvY2tldHMuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpj
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBHZXQgcmlkIG9m
IHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50ZXJmYWNlLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpOgorICAgICAgICBHZXQgcmlkIG9mIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9y
IG9mIHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50
RGVjb2Rlci5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaDoKKyAgICAgICAgSW5jbHVkaW5nIEF0dGFjaG1l
bnQuaCBpbiBBcmd1bWVudFtFbmNvZGVyL0RlY29kZXJdLmggd291bGQgY2F1c2UKKyAgICAgICAg
YSBjaXJjdWxhciBkZXBlbmRlbmN5IG5vdywgc28gaXQgaXMgY2hhbmdlZCB0byBmb3J3YXJkIGRl
Y2xhcmF0aW9uCisgICAgICAgIGFuZCBhZGQgaW5jbHVkZXMgd2hlcmUgaXQgaXMgdXNlZC4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcDoKKyAgICAgICAgKElQQzo6bWVz
c2FnZURpc3Bvc2l0aW9uKToKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6
CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKElQ
Qzo6QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9BdHRhY2htZW50Lmg6CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOgorICAgICAgICBJdCB3YXMgc2ltcGx5IHdyb25n
LiBUaGUgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaXMgLTEgYW5kIG5vdCAwLgorCisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpDb25uZWN0aW9uRGVzY3Jp
cHRvcik6CisgICAgICAgIFZlcnkgYmFzaWMgcGxhdGZvcm0gYWJzdHJhY3Rpb24gb2YgYW4gSVBD
IGNoYW5uZWwuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHA6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6CisgICAgICAgIChJUEM6
OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToKKyAg
ICAgICAgVGhlc2UgYXJlIHRoZSBzYW1lIG9uIE1hYy4KKworICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24pOgorICAgICAgICBDcmVhdGVzIHRoZSBPUyBz
cGVjaWZpYyBJUEMgY2hhbm5lbC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0F0dGFj
aG1lbnRVbml4LmNwcDoKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6Cisg
ICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6Om51bGxDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6
QXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICBDb25uZWN0aW9uUmVx
dWlyZW1lbnQgaXMgbm90IHJlc3BlY3RlZCBoZXJlIHNpbmNlIHRoZSBjb25jZXB0IG9mIG1vdmlu
ZyBzb2NrZXQgcmlnaHRzCisgICAgICAgIGFjcm9zcyBwcm9lc3NlcyBpcyBoYW5kbGVkIHZpYSBj
b250cm9sIG1lc3NhZ2VzIGluIENvbm5lY3Rpb25Vbml4LmNwcC4KKworICAgICAgICAqIFBsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OnNlcnZlcklkZW50aWZpZXIpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRpZmllcik6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAg
ICAgIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBmb3Igc29ja2V0IGNyZWF0aW9uLiBUdXJuZWQgZXJy
b3IgaGFuZGxpbmcgdG8gUkVMRUFTRV9BU1NFUlQncworICAgICAgICBzaW5jZSBlcnJvcnMgd2Vy
ZSBuZXZlciBoYW5kbGVkIGFueXdheSBhbmQgdGhlcmUgaXMgbm8gZ29vZCB3YXkgdG8gZG8uCisK
KyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IENoYW5nZSBwbGF0Zm9ybSBzcGVjaWZpYyBsb2dpYyBpbiBmYXZvciBvZiB0aGUgbmV3IGludGVy
ZmFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50
ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNo
ZXJFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuIFJlbW92ZWQgdGhlIGNsb3NlIGNh
bGwgZnJvbSB0aGUgY2hpbGQgc2lkZQorICAgICAgICBvZiB0aGUgZm9yayBiZWNhdXNlIEZEX0NM
T0VYRUMgaGFuZGxlcyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNo
aWxkU2V0dXBGdW5jdGlvbik6IFJlbW92ZWQgdGhlIGNsb3NlIGNhbGwgc2luY2UgRkRfQ0xPRVhF
QyBoYW5kbGVzIHRoYXQuCisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2Vzcyk6IFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWls
ZWRUb0xhdW5jaCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGlu
dGVyZmFjZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgor
ICAgICAgICBVc2UgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
STo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4K
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCiAyMDE0LTEwLTA2ICBWaXZlayBHYWxhdGFn
ZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgd2Fybmlu
ZyBpbiBXZWJQYWdlT3ZlcmxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCBiOTBkY2I2ZmFjZjJiMWRjZmNmMmM0ZDE4MmRk
NDJjMTg4Mjc3ZDVjLi5iYzgwODkxNGI5MDhmZGZkMTMzZGZlOGIwNTBlZGE5Mzk4MWM4ZDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiQXN5bmNUYXNrLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgpAQCAtMTc1LDIwICsxNzYsMTMgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBlcmZvcm1O
ZXh0RGF0YWJhc2VUYXNrKCkKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0jaWYgT1MoREFSV0lOKQotICAgIC8vIENyZWF0
ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAg
ICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JF
Q0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKLQotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25u
ZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9ydCkpOworICAgIHVzaW5nIG5hbWVzcGFjZSBJ
UEM7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAg
bV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVh
c2UoKSk7CiAKLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBN
QUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAgQXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2Ny
aXB0b3IuY2xpZW50SWRlbnRpZmllcigpLCBBdHRhY2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVBy
b2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVu
dFBvcnQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6Z2V0SW5kZXhlZERhdGFiYXNlT3JpZ2lucyh1aW50NjRfdCBj
YWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDEzZTY0YzU2NjAwZjFiZTUwY2QxNDJlMTIyYjkxMTY4MzAxMGQ2YjYu
LjExNzU4ODgxMzhhNzcyZjE4OTRkMzBjYjlkOWYxMDZkZjRhYzUzNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5OSwyOCAr
MTk5LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogewotI2lmIE9TKERBUldJTikKLSAgICAvLyBD
cmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7
Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcg
Y29ubmVjdGlvbi4KLSAgICBSZWZQdHI8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNv
bm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgdXNpbmcgbmFtZXNwYWNl
IElQQzsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0g
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjb25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAg
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAot
ICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZ
UEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGll
bnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNsaWVudFBvcnQpLCAwKTsK
LSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6U29j
a2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oKTsKLQotICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29u
bmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFp
ci5zZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9u
LnJlbGVhc2UoKSk7Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldFBh
aXIuY2xpZW50KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNl
bmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudERlY29kZXIuY3BwCmluZGV4IDQxMDVhNzBkZDE2Zjk2YTFiNzZjN2U4ZmYxNDlj
OWRhNDc3ZmVkYjEuLjUyYjkzZGYwNGIxZWI1ZjU1YWI3ZTgzMzBiODlhMmNhNDRjMjc1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRE
ZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudERlY29kZXIuaAppbmRleCAwY2EwYzE5ZDZiZjMyN2E3YTAzOWFhZTg5YmQ5
NmMxYmU0OWU2ZmY2Li5iODNiNTMwODE4NzZjYmUyZWI3ZDAzNjM2NzhjMmM2MzgyNDUzYmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0y
NywxMSArMjcsMTEgQEAKICNkZWZpbmUgQXJndW1lbnREZWNvZGVyX2gKIAogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERh
dGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBBcmd1bWVudERlY29kZXIgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcAppbmRleCBjNzFlMWExNGI0
ZjE3MTlmNjQ0OTljYzI4MDE2ZmI1Y2RlMjMxNWMxLi5iZWIxM2NhZGY4MDUxYjhjZTMyZGE0OTJj
OTcwNDlhZTMxZTVkYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRFbmNvZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1
bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29k
ZXIuaAppbmRleCA3NWQwYmZiYTdiMTM1MzRhYzFiZTQ5NTM0MWVjNGJmNzkxYjExNDRhLi5hMjk2
YjA3YWE3MTY5YTVhYWYxMGQwYWQwMTU2ZjdmMjdjMDRkNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNk
ZWZpbmUgQXJndW1lbnRFbmNvZGVyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNp
bmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyOworY2xhc3MgQXR0YWNobWVudDsKIGNs
YXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2RlciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAKaW5kZXggOTM2N2IxYWQyZWEwYmY2MWM5
MjI5ZmMzM2UwMjk2NTBlZDc0NGVkZS4uNzU4MTgxM2RiZGFiOTk3MDdhNzg0YmNjYWQ3N2I3MjQx
NGIzNDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcApA
QCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1BdHRhY2htZW50OjpBdHRh
Y2htZW50KCkKLSAgICA6IG1fdHlwZShVbmluaXRpYWxpemVkKQorI2lmIE9TKERBUldJTikKK3N0
YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbWVzc2FnZURpc3Bvc2l0aW9uKEF0dGFj
aG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVudCByZXF1aXJlbWVudCkKIHsKKyAgICBpZiAocmVx
dWlyZW1lbnQgPT0gQXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJu
IE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOworICAgIGlmIChyZXF1aXJlbWVudCA9PSBBdHRhY2ht
ZW50OjpGb3J3YXJkU2VuZFJpZ2h0KQorICAgICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQ7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTUFDSF9NU0df
VFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6
SWRlbnRpZmllciBpZGVudGlmaWVyLCBBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQg
cmVxdWlyZW1lbnQpCisgICAgOiBtX3R5cGUoTWFjaFBvcnRUeXBlKQoreworICAgIG1fcG9ydCA9
IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX2Rpc3Bvc2l0aW9uID0gbWVzc2FnZURpc3Bvc2l0aW9u
KHJlcXVpcmVtZW50KTsKIH0KIAotI2lmIE9TKERBUldJTikKIEF0dGFjaG1lbnQ6OkF0dGFjaG1l
bnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBtYWNoX21zZ190eXBlX25hbWVfdCBkaXNwb3NpdGlv
bikKICAgICA6IG1fdHlwZShNYWNoUG9ydFR5cGUpCiAgICAgLCBtX3BvcnQocG9ydCkKQEAgLTQ4
LDYgKzYxLDE2IEBAIHZvaWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0g
VW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlv
bihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAg
cmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JUX05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1
aXJlbWVudCkpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRlbnRp
Zmllcihwb3J0KCkpOworfQogI2VuZGlmCiAKIHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9BdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0
YWNobWVudC5oCmluZGV4IGIwZjFkY2UyMDNlYjc4ZTM1ZGE0OTRjM2IwM2MzZTU5N2I3NTI0NWMu
LmRjNTM4OTllMmQ0MTM3MzcxMGQ4Nzk1NTkzYWM5ZmE4YTA2MTIyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBB
dHRhY2htZW50X2gKICNkZWZpbmUgQXR0YWNobWVudF9oCiAKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNs
dWRlIDxtYWNoL21hY2hfdHJhcHMuaD4KQEAgLTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJndW1lbnRF
bmNvZGVyOwogCiBjbGFzcyBBdHRhY2htZW50IHsKIHB1YmxpYzoKLSAgICBBdHRhY2htZW50KCk7
CisgICAgQXR0YWNobWVudCgpCisgICAgICAgIDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisgICAg
eyB9CiAKICAgICBlbnVtIFR5cGUgewogICAgICAgICBVbmluaXRpYWxpemVkLApAQCAtNTAsNiAr
NTQsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfTsKIAorICAgIGVudW0gQ29ubmVjdGlvblJl
cXVpcmVtZW50IHsKKyAgICAgICAgQWNxdWlyZVNlbmRSaWdodCwKKyAgICAgICAgRm9yd2FyZFNl
bmRSaWdodAorICAgIH07CisKKyAgICBBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIs
IENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisKICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNobWVu
dChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1hY2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9u
KTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtNTcsNiArNjgsOSBAQCBwdWJs
aWM6CiAgICAgQXR0YWNobWVudChpbnQgZmlsZURlc2NyaXB0b3IpOwogI2VuZGlmCiAKKyAgICBz
dGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVjdGlvbihDb25uZWN0aW9uUmVxdWlyZW1lbnQpOwor
CisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYjUyY2Yx
ZWUwMGUwNjk3ODMyZTYwYTA3ZGQ5MWE4MGRlYTMzYThhZC4uOWQ4ZTlhOTAzZWMzYmZiMmE1OWQ4
OWRlM2VlMzMwOWRmZWI0MDgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBJUEMg
ewogCitjbGFzcyBBdHRhY2htZW50Owogc3RydWN0IFdhaXRGb3JNZXNzYWdlU3RhdGU7CiAKIGVu
dW0gTWVzc2FnZVNlbmRGbGFncyB7CkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgZ2V0QXVkaXRUb2tlbihhdWRpdF90b2tlbl90Jik7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAgIHN0YXRpYyBib29sIGlk
ZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiAhaWRlbnRpZmll
cjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CiAKICAgICBzdHJ1Y3QgU29ja2V0UGFp
ciB7CiAgICAgICAgIGludCBjbGllbnQ7CkBAIC0xMzYsOCArMTM3LDMyIEBAIHB1YmxpYzoKICAg
ICAgICAgU2V0Q2xvZXhlY09uQ2xpZW50ID0gMSA8PCAwLAogICAgICAgICBTZXRDbG9leGVjT25T
ZXJ2ZXIgPSAxIDw8IDEsCiAgICAgfTsKKyNlbmRpZgorICAgIGNsYXNzIENvbm5lY3Rpb25EZXNj
cmlwdG9yIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgSWRlbnRpZmllciBzZXJ2ZXJJ
ZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgICAgICBJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIoKSBjb25zdDsKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBD
b25uZWN0aW9uOworI2lmIE9TKERBUldJTikKKyAgICAgICAgICAgIENvbm5lY3Rpb25EZXNjcmlw
dG9yKElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgICAgICAgICAgeyB9CisgICAgICAgICAgICBJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAgICAgICAg
Q29ubmVjdGlvbkRlc2NyaXB0b3IoSWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgOiBtX3NlcnZlcklkZW50aWZp
ZXIoc2VydmVySWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICAsIG1fY2xpZW50SWRlbnRpZmll
cihjbGllbnRJZGVudGlmaWVyKQorICAgICAgICAgICAgeyB9CisgICAgICAgICAgICBJZGVudGlm
aWVyIG1fc2VydmVySWRlbnRpZmllcjsKKyAgICAgICAgICAgIElkZW50aWZpZXIgbV9jbGllbnRJ
ZGVudGlmaWVyOworI2VuZGlmCisgICAgfTsKIAotICAgIHN0YXRpYyBDb25uZWN0aW9uOjpTb2Nr
ZXRQYWlyIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbih1bnNpZ25lZCBvcHRpb25zID0gU2V0Q2xv
ZXhlY09uQ2xpZW50IHwgU2V0Q2xvZXhlY09uU2VydmVyKTsKKyNpZiBPUyhEQVJXSU4pCisgICAg
c3RhdGljIENvbm5lY3Rpb25EZXNjcmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwor
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgc3RhdGljIENvbm5lY3Rpb25EZXNj
cmlwdG9yIGNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbih1bnNpZ25lZCBvcHRpb25zID0gU2V0Q2xv
ZXhlY09uQ2xpZW50IHwgU2V0Q2xvZXhlY09uU2VydmVyKTsKICNlbmRpZgogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29ubmVjdGlvbj4gY3JlYXRlU2VydmVyQ29ubmVjdGlvbihJZGVudGlmaWVy
LCBDbGllbnQqLCBXVEY6OlJ1bkxvb3AmIGNsaWVudFJ1bkxvb3ApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHAKaW5kZXggMjlhMDU0ZWYwMDI5MTI4
ZDQxM2IyMmU3OTcyN2JlODAxMTBkZWFjZi4uNjRmNjQ5NTNmZDE0MzBmOWMyNThmZmNmNmJlMjAx
YTE4ZWE0MDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURl
Y29kZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNp
bmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4IGQyZTRlZmU5YTliYWM0ZWM1OTY1ZmI0NzE1NmM2
OTRkYmNkMDRiZmQuLjkxZjg0NWU0NTRmMjljODY2OWRhZmNiMDEzZWY3YzViYzNlY2Y1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VFbmNvZGVyLmgiCiAKICNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNz
YWdlRmxhZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCmluZGV4IGMwODQ1ZWNl
YTk3MmY5MDkzNzAwNjNiOWIyZWNmMTQ1ZmMzZTY5NDkuLjE4YTllY2RhMjg2NjRmYTUzOGJlNmE0
YTQ4ZGE0YjgxMzI3ODMyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
bWFjL0Nvbm5lY3Rpb25NYWMubW0KQEAgLTk5LDYgKzk5LDIzIEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAgICAgCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rpb25E
ZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVu
dGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5lY3Rp
b25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
ZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKQoreworICAgIG1hY2hfcG9ydF90IHBvcnQ7
CisgICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmcG9ydCk7CisgICAgcmV0dXJuIENvbm5lY3Rpb25EZXNjcmlwdG9yKHBvcnQp
OworfQorCiB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CiAgICAgaWYg
KCFtX2lzQ29ubmVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L3VuaXgvQXR0YWNobWVudFVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3Vu
aXgvQXR0YWNobWVudFVuaXguY3BwCmluZGV4IDAyMmM3MmQ0MWYyNjY0MjE3NjhjYjhkYzM2OTRh
NDdmNTQwMWU4MmYuLjY2NGM4ZTEzOTc0YzZlY2YzZDQ0OTVhMDA0NmRjNDc1OTA0NWM4NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5p
eC5jcHAKQEAgLTMxLDYgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBJUEMgewogCitBdHRhY2htZW50
OjpBdHRhY2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29ubmVjdGlv
blJlcXVpcmVtZW50KQorICAgIDogbV90eXBlKFNvY2tldFR5cGUpCisgICAgLCBtX2ZpbGVEZXNj
cmlwdG9yKGlkZW50aWZpZXIpCit7Cit9CisKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQoaW50IGZp
bGVEZXNjcmlwdG9yLCBzaXplX3Qgc2l6ZSkKICAgICA6IG1fdHlwZShNYXBwZWRNZW1vcnlUeXBl
KQogICAgICwgbV9maWxlRGVzY3JpcHRvcihmaWxlRGVzY3JpcHRvcikKQEAgLTUxLDQgKzU3LDE1
IEBAIHZvaWQgQXR0YWNobWVudDo6ZGlzcG9zZSgpCiAgICAgICAgIGNsb3NlV2l0aFJldHJ5KG1f
ZmlsZURlc2NyaXB0b3IpOwogfQogCitBdHRhY2htZW50IEF0dGFjaG1lbnQ6Om51bGxDb25uZWN0
aW9uKENvbm5lY3Rpb25SZXF1aXJlbWVudCkKK3sKKyAgICByZXR1cm4gQXR0YWNobWVudCgtMSk7
Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQXR0YWNobWVudDo6Y29ubmVjdGlvbklkZW50
aWZpZXIoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gU29ja2V0VHlwZSk7CisgICAg
cmV0dXJuIGZpbGVEZXNjcmlwdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmlu
ZGV4IDE2YmUwMTRlODczOWZhYzRkOTcwNDQ5YmZhMTRkMDYxOTQ5OGRiODYuLmIzNDg4N2Y1Zjhm
NWU1MGM2ZGJmZTcwZGQwNWU0ZDEzYzczOTcxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQ0LDE1ICs0NCwxMiBA
QAogI2luY2x1ZGUgPGdsaWIuaD4KICNlbmRpZgogCi0jaWZkZWYgU09DS19TRVFQQUNLRVQKKy8v
IE9uIFFOWCBTT0NLX1NFUVBBQ0tFVCBkb2VzIG5vdCB3b3JrIChhbHRob3VnaCBpdCBpcyBkZWZp
bmVkKSwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTU1My4K
KyNpZiBkZWZpbmVkKFNPQ0tfU0VRUEFDS0VUKSAmJiAhT1MoUU5YKQogI2RlZmluZSBTT0NLRVRf
VFlQRSBTT0NLX1NFUVBBQ0tFVAogI2Vsc2UKLSNpZiBQTEFURk9STShHVEspCiAjZGVmaW5lIFNP
Q0tFVF9UWVBFIFNPQ0tfU1RSRUFNCi0jZWxzZQotI2RlZmluZSBTT0NLRVRfVFlQRSBTT0NLX0RH
UkFNCiAjZW5kaWYKLSNlbmRpZiAvLyBTT0NLX1NFUVBBQ0tFVAogCiBuYW1lc3BhY2UgSVBDIHsK
IApAQCAtNjMsNiArNjAsMzAgQEAgZW51bSB7CiAgICAgTWVzc2FnZUJvZHlJc091dE9mTGluZSA9
IDFVIDw8IDMxCiB9OwogCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OkNvbm5l
Y3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zZXJ2ZXJJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOworfQorCitDb25uZWN0aW9uOjpDb25uZWN0aW9u
RGVzY3JpcHRvciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24odW5zaWduZWQg
b3B0aW9ucykKK3sKKyAgICBpbnQgc29ja2V0c1syXTsKKyAgICBSRUxFQVNFX0FTU0VSVChzb2Nr
ZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSAhPSAtMSk7CisKKyAgICBp
ZiAob3B0aW9ucyAmIFNldENsb2V4ZWNPbkNsaWVudCkgeworICAgICAgICAvLyBBdm9pZCBleHBv
c2luZyB0aGUgc2VydmVyIHNvY2tldCB0byB0aGUgY2hpbGQgcHJvY2VzcworICAgICAgICB3aGls
ZSAoZmNudGwoc29ja2V0c1swXSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyA9PSBFSU5UUik7CisgICAgfQorCisgICAgcmV0dXJu
IENvbm5lY3Rpb25EZXNjcmlwdG9yKHNvY2tldHNbMF0sIHNvY2tldHNbMV0pOworfQorCiBjbGFz
cyBNZXNzYWdlSW5mbyB7CiBwdWJsaWM6CiAgICAgTWVzc2FnZUluZm8oKSB7IH0KQEAgLTU0MSwy
NyArNTYyLDYgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Q29ubmVjdGlvbjo6U29ja2V0UGFpciBDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24odW5zaWduZWQgb3B0aW9ucykKLXsKLSAgICBpbnQgc29ja2V0c1syXTsKLSAgICBSRUxFQVNF
X0FTU0VSVChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tFVF9UWVBFLCAwLCBzb2NrZXRzKSAhPSAt
MSk7Ci0KLSAgICBpZiAob3B0aW9ucyAmIFNldENsb2V4ZWNPblNlcnZlcikgewotICAgICAgICAv
LyBEb24ndCBleHBvc2UgdGhlIGNoaWxkIHNvY2tldCB0byB0aGUgcGFyZW50IHByb2Nlc3MuCi0g
ICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSAgPT0g
LTEpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJubyAhPSBFSU5UUik7Ci0gICAgfQot
Ci0gICAgaWYgKG9wdGlvbnMgJiBTZXRDbG9leGVjT25DbGllbnQpIHsKLSAgICAgICAgLy8gRG9u
J3QgZXhwb3NlIHRoZSBwYXJlbnQgc29ja2V0IHRvIHBvdGVudGlhbCBmdXR1cmUgY2hpbGRyZW4u
Ci0gICAgICAgIHdoaWxlIChmY250bChzb2NrZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9
PSAtMSkKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vICE9IEVJTlRSKTsKLSAgICB9
Ci0KLSAgICBTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSB7IHNvY2tldHNbMF0sIHNvY2tldHNbMV0g
fTsKLSAgICByZXR1cm4gc29ja2V0UGFpcjsKLX0KLSAgICAKIHZvaWQgQ29ubmVjdGlvbjo6d2ls
bFNlbmRTeW5jTWVzc2FnZSh1bnNpZ25lZCBmbGFncykKIHsKICAgICBVTlVTRURfUEFSQU0oZmxh
Z3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAK
aW5kZXggMjg0MWVlZDkwODAyZWRlODRjYWUxNTRhNGM3NjI2OTQwZTlhYzBiZi4uYmFjM2UxMzZi
NTc4ZTdmNzExNjg4MzYzMTdmMTAwYWY0NTEwOTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBAIC0xNTIsMTUgKzE1MiwxMyBAQCB2b2lk
IFBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKGNvbnN0IFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcgogCiB2b2lkIFBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKCkKIHsKLSAgICBib29sIGRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlv
bnMgPSAhbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNFbXB0eSgpOworICAgIHVzaW5nIG5hbWVz
cGFjZSBJUEM7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcg
cG9ydC4KLSAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwotICAgIG1hY2hfcG9ydF9hbGxv
Y2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmxpc3Rlbmlu
Z1BvcnQpOworICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CiAKLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5p
bmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllcihsaXN0ZW5pbmdQb3J0KSk7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwor
ICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpjcmVhdGUoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOworICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAg
ICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIpIHsKICAgICAgICAgaWYgKG1fYXVkaW9IYXJk
d2FyZUxpc3RlbmVyLT5oYXJkd2FyZUFjdGl2aXR5KCkgPT0gV2ViQ29yZTo6QXVkaW9IYXJkd2Fy
ZUFjdGl2aXR5VHlwZTo6SXNBY3RpdmUpCkBAIC0xNjksMjEgKzE2Nyw4IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgY29ubmVj
dGlvbi0+YXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCk7CiAgICAgfQogCi0gICAgbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKLQotICAg
IElQQzo6QXR0YWNobWVudCBjbGllbnRQb3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKTsKKyAgICBBdHRhY2htZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRJ
ZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9zdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09D
S0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7Ci0KLSAgICBSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlKHNvY2tldFBhaXIuc2VydmVyKTsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5hcHBl
bmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFNv
Y2tldChzb2NrZXRQYWlyLmNsaWVudCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjbGllbnRTb2NrZXQsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbiksIDApOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiAKICAg
ICBpZiAoTmV0c2NhcGVQbHVnaW5Nb2R1bGUqIG1vZHVsZSA9IG5ldHNjYXBlUGx1Z2luTW9kdWxl
KCkpIHsKICAgICAgICAgaWYgKCFkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDQwYzg5YTMxMGQzMTcxNGVlNjFmNmY0OWM2MGViODRk
MmVlM2RlMjYuLjVlODEzYTRhZmQyZjllYzkwZjRiZTRjMjg0MzFjNWQzYjMyZWE3MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAKICNpZiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTI0LDExICsxMjYsNyBAQCB2b2lk
IERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgSVBDOjpBdAogCiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBt
X3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikK
LSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9y
dCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKaW5kZXgg
MzdjYjIwMzE2ZDgwNWI2OGUwNGUwMmZiM2YzYmM4NjRmMjRhMGZhZC4uMTMzMjBkMTQ5NDUwNDFl
Y2M0MmM4YzUwYWVhMDRkZmJkYThhN2EwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcApAQCAt
NjcsMTEgKzY3LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPj4gY3Jl
YXRlQXJnc0FycmF5KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb24KIAogdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIGlmIChz
b2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBzb2NrZXRzKSA8IDApIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgSVBD
OjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKIAogICAgIFN0cmluZyBwcm9jZXNz
Q21kUHJlZml4LCBleGVjdXRhYmxlUGF0aCwgcGx1Z2luUGF0aDsKICAgICBzd2l0Y2ggKG1fbGF1
bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkgewpAQCAtOTgsMjAgKzk0LDE5IEBAIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBpZiAoIW1fbGF1bmNoT3B0aW9ucy5wcm9j
ZXNzQ21kUHJlZml4LmlzRW1wdHkoKSkKICAgICAgICAgcHJvY2Vzc0NtZFByZWZpeCA9IG1fbGF1
bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJlZml4OwogI2VuZGlmCi0gICAgYXV0byBhcmdzID0gY3Jl
YXRlQXJnc0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBTdHJpbmc6Om51
bWJlcihzb2NrZXRzWzBdKSwgcGx1Z2luUGF0aCk7CisgICAgYXV0byBhcmdzID0gY3JlYXRlQXJn
c0FycmF5KHByb2Nlc3NDbWRQcmVmaXgsIGV4ZWN1dGFibGVQYXRoLCBTdHJpbmc6Om51bWJlcihk
ZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSksIHBsdWdpblBhdGgpOwogCiAgICAgLy8gRG8g
bm90IHBlcmZvcm0gbWVtb3J5IGFsbG9jYXRpb24gaW4gdGhlIG1pZGRsZSBvZiB0aGUgZm9yaygp
CiAgICAgLy8gZXhlYygpIGJlbG93LiBGYXN0TWFsbG9jIGNhbiBwb3RlbnRpYWxseSBkZWFkbG9j
ayBiZWNhdXNlCiAgICAgLy8gdGhlIGZvcmsoKSBkb2Vzbid0IGluaGVyaXQgdGhlIHJ1bm5pbmcg
dGhyZWFkcy4KICAgICBwaWRfdCBwaWQgPSBmb3JrKCk7CiAgICAgaWYgKCFwaWQpIHsgLy8gQ2hp
bGQgcHJvY2Vzcy4KLSAgICAgICAgY2xvc2Uoc29ja2V0c1sxXSk7CiAgICAgICAgIGV4ZWN2cChh
cmdzLmRhdGEoKVswXS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKiBjb25zdCo+KGFyZ3Mu
ZGF0YSgpKSk7CiAgICAgfSBlbHNlIGlmIChwaWQgPiAwKSB7IC8vIHBhcmVudCBwcm9jZXNzOwot
ICAgICAgICBjbG9zZShzb2NrZXRzWzBdKTsKKyAgICAgICAgY2xvc2UoZGVzY3JpcHRvci5jbGll
bnRJZGVudGlmaWVyKCkpOwogICAgICAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwogICAg
ICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hpbmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFj
ayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KGJpbmQoJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywg
cGlkLCBzb2NrZXRzWzFdKSk7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5k
KCZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIHBpZCwg
ZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsu
Y3BwCmluZGV4IDM2MjM2NWNjYWFiNmZlZmNiOGI1YTYxMDcwMmVmODE0MWRjYzQ0MTcuLjA2NzFh
YTNmN2M5OGNiYzk0Zjk0YzVjZGY2MTk2NjkwMWUyOTNmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAKQEAgLTQ5LDE1ICs0OSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZv
aWQgY2hpbGRTZXR1cEZ1bmN0aW9uKGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIGludCBzb2Nr
ZXQgPSBHUE9JTlRFUl9UT19JTlQodXNlckRhdGEpOwotICAgIGNsb3NlKHNvY2tldCk7CiB9CiAK
IHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBHUGlkIHBpZCA9
IDA7Ci0KLSAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6Q29u
bmVjdGlvbk9wdGlvbnM6OlNldENsb2V4ZWNPblNlcnZlcik7CisgICAgSVBDOjpDb25uZWN0aW9u
OjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9uczo6
U2V0Q2xvZXhlY09uU2VydmVyKTsKIAogICAgIFN0cmluZyBleGVjdXRhYmxlUGF0aCwgcGx1Z2lu
UGF0aDsKICAgICBDU3RyaW5nIHJlYWxFeGVjdXRhYmxlUGF0aCwgcmVhbFBsdWdpblBhdGg7CkBA
IC04NSw3ICs4MSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICB9CiAKICAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZXhlY3V0YWJsZVBhdGgpOwotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1cF9w
cmludGYoIiVkIiwgc29ja2V0UGFpci5jbGllbnQpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBz
b2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigp
KSk7CiAKICAgICB1bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNpemUgb2YgdGhlIGFyZ3YgYXJyYXkg
Zm9yIGdfc3Bhd25fYXN5bmMoKQogCkBAIC0xMTIsMjEgKzEwOCwyMiBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgYXJndltpKytdID0gY29uc3RfY2FzdDxjaGFy
Kj4ocmVhbFBsdWdpblBhdGguZGF0YSgpKTsKICAgICBhcmd2W2krK10gPSAwOwogCisgICAgR1Bp
ZCBwaWQgPSAwOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdf
c3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBj
aGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9fUE9JTlRFUihzb2NrZXRQYWlyLnNlcnZlciksICZw
aWQsICZlcnJvci5vdXRQdHIoKSkpIHsKKyAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwg
MCwgR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJ
TlRfVE9fUE9JTlRFUihkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSksICZwaWQsICZlcnJv
ci5vdXRQdHIoKSkpIHsKICAgICAgICAgZ19wcmludGVycigiVW5hYmxlIHRvIGZvcmsgYSBuZXcg
V2ViUHJvY2VzczogJXMuXG4iLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KIAogICAgIC8vIERvbid0IGV4cG9zZSB0aGUgcGFyZW50IHNvY2tl
dCB0byBwb3RlbnRpYWwgZnV0dXJlIGNoaWxkcmVuLgotICAgIHdoaWxlIChmY250bChzb2NrZXRQ
YWlyLmNsaWVudCwgRl9TRVRGRCwgRkRfQ0xPRVhFQykgPT0gLTEpCisgICAgd2hpbGUgKGZjbnRs
KGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAt
MSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJybm8gIT0gRUlOVFIpOwogCi0gICAgY2xvc2Uo
c29ja2V0UGFpci5jbGllbnQpOworICAgIGNsb3NlKGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmll
cigpKTsKICAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gcGlkOwogCiAgICAgLy8gV2UndmUgZmlu
aXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVu
IGxvb3AuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVuY2hl
cjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgbV9wcm9jZXNzSWRlbnRpZmllciwg
c29ja2V0UGFpci5zZXJ2ZXIpKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgm
UHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nl
c3NJZGVudGlmaWVyLCBkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSkpOwogfQogCiB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDQ5NjY3Yjk1MjQwMjcwMzdiOGIzMzBiMzExNjllNTViOTdmMTE4NmIuLjkzYjk2MzQ4YWQ2Y2Rh
NWI5ZWU4ZjNiMTEyNGY4NGYzY2Y1MzYyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNs
dWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTEsMTMgKzExMiw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAg
d2hpbGUgKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRh
a2VGaXJzdCgpOwogCi0jaWYgT1MoREFSV0lOKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0
dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKLSNlbGlmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoKSk7Ci0j
ZWxzZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQo
SVBDOjpBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRT
ZW5kUmlnaHQpKTsKICAgICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3JrIHByb2Nlc3MgbWFu
YWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5
IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCkBAIC0xNjMsMTMgKzE1OCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
c3QgSVBDOjpBdHRhCiAgICAgLy8gR3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJl
cGx5LgogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9u
UmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJ
UEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCkpOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgcmVwbHkt
PnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDNiMDM1NGIzNzNlNmJkNWFlMmNi
OWU3MjNkZmY5YTNkOTg3OTI4ZS4uZDA1N2E2MzYxMjc0NTFhMWJhNjc2NWMyOWY1YWYyMzVhZmQ1
MjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFu
YWdlci5oIgpAQCAtMTM3LDEzICsxMzgsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICB3aGlsZSAoIW1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAotI2lm
IE9TKERBUldJTikKLSAgICAgICAgcmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tF
VFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7Ci0jZWxz
ZQotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCisgICAgcmVwbHktPnNlbmQoSVBD
OjpBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQ6OkZvcndhcmRTZW5k
UmlnaHQpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgd2hpbGUgKCFtX3BlbmRpbmdHZXRTaXRlc1Jl
cGxpZXMuaXNFbXB0eSgpKQpAQCAtMjQxLDEzICsyMzYsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50
JiBjbwogICAgIC8vIEdyYWIgdGhlIGZpcnN0IHBlbmRpbmcgY29ubmVjdGlvbiByZXBseS4KICAg
ICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50
YWtlRmlyc3QoKTsKIAotI2lmIE9TKERBUldJTikKLSAgICByZXBseS0+c2VuZChJUEM6OkF0dGFj
aG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VO
RCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgcmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwotI2Vsc2UKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotI2VuZGlmCiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5k
ZXggZDhiYjk5MDQ1YmQ1N2M3OWI0YWNkNjQzMTg1ZTJhNTkwZDA0ZTY0MC4uODhiNzVjNzdjNWEx
MWM3ZmQwNDllNmMyOWM2YTEyYzgwMmU2ZDBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5jcHAKQEAgLTc0LDE1ICs3NCw5IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpSZXBs
eShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAg
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRD
b25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOworICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuY29u
bmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiAwOwotI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmZpbGVE
ZXNjcmlwdG9yKCk7Ci0gICAgaWYgKGNvbm5lY3Rpb25JZGVudGlmaWVyID09IC0xKQotICAgICAg
ICByZXR1cm4gMDsKLSNlbmRpZgogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUodGhpcywgcGx1Z2luUHJvY2Vzc1Rva2VuLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9y
dHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CiAgICAgbV9wbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggMWViNmJhZjJk
YTljMzg1YWE2MTljMjM1OGM3OGU1NjYwYjczYWY4ZS4uMzM1NTdlN2YxNzZmYmRmZmUxOTk0ODlh
OGM4NjQ0NmZhMjViYTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKIAorI2luY2x1ZGUgIkF0dGFjaG1lbnQu
aCIKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAt
ODMsOSArODUsOSBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZShib29s
IHVuZGVyVGVzdCkKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZlcihsaXN0ZW5pbmdQb3J0KTsKICAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNs
aWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwogI2VsaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWly
IHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OwotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKHNv
Y2tldFBhaXIuc2VydmVyKTsKLSAgICBJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkNsaWVudFBv
cnQoc29ja2V0UGFpci5jbGllbnQpOworICAgIElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRl
c2NyaXB0b3IgZGVzY3JpcHRvciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25u
ZWN0aW9uKCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmZXIoZGVzY3JpcHRvci5zZXJ2ZXJJZGVudGlmaWVyKCkpOworICAgIElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uQ2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSk7CiAj
ZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggM2U1
NTE2Y2YwNDA2NmFmYTJlNWNhNjAzOTFjYWI2OWIzZjcxNzAwNy4uNDBhMDQ3YTk4MzFmMzZiOGFh
ZWY0ZDk1Y2YzYjcyYzQ5ODAwY2Y4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKIAorI2luY2x1ZGUg
IkF0dGFjaG1lbnQuaCIKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JNZXNzYWdlcy5oIgpAQCAtNjUsMTQgKzY3LDcgQEAgV2ViSW5zcGVjdG9yVUk6Oldl
Ykluc3BlY3RvclVJKFdlYlBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFi
bGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0KQogewot
I2lmIE9TKERBUldJTikKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7Ci0jZWxpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJlbGVhc2VG
aWxlRGVzY3JpcHRvcigpKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm47Ci0jZW5kaWYKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOwogCiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0
aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDdjMTcwYjA5OTlmNDQ1YWJiYWY1MWQyZjIwNmU0NDZjMzQw
NGM0NzcuLjE1NDI1OGMzZjM3ZGY1YzIwYTE1MzhjOTZjYTQ2Nzk3Y2ZhZDA1MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzk2LDEzICszOTYsOCBAQCB2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJldHVybjsK
IAotI2lmIE9TKERBUldJTikKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7Ci0jZWxp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVs
ZWFzZUZpbGVEZXNjcmlwdG9yKCk7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
I2VuZGlmCisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKCk7
CisKICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZp
ZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240920</attachid>
            <date>2014-11-04 04:17:06 -0800</date>
            <delta_ts>2016-03-09 13:25:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110978-20141104131713.patch</filename>
            <type>text/plain</type>
            <size>38695</size>
            <attacher name="Éva Balázsfalvi">evab.u-szeged</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWZjYjA1NjQ2YzM4ZDdh
Yzg3MTY1ZjdkYjljNGU1ZDRiY2I0M2ZkOC4uZGU0YmUwYTZmNGEwOWUxMGNhZmQ4ZDdmNGMyZTVh
ZDY0OWQ5ZTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNC0xMS0wNCAgRXZh
IEJhbGF6c2ZhbHZpICA8ZXZhYi51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtXSzJdIFJlZmFjdG9yaW5nOiB1bmlmeSBJUEMgY29ubmVjdGlvbiBjcmVhdGlvbiAtIGdl
dCByaWQgb2YgaWZkZWYgaGVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwOTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0aGUgcGF0Y2ggbWFkZSBieSBCYWxhenMgS2VsZW1lbiA8a2Jh
bGF6c0B3ZWJraXQub3JnPiwKKyAgICAgICAgS3dhbmcgWXVsIFNlbyA8c2t5dWxAY29tcGFueTEw
MC5uZXQ+LCBDc2FiYSBPc3p0cm9nb27Dg8KhYworICAgICAgICA8b3NzeUB3ZWJraXQub3JnPiBh
bmQgUGV0ZXIgTW9sbmFyIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+Lgor
CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gaWZkZWZzIGRlYWxpbmcgd2l0aCBJUEMgY29u
bmVjdGlvbiBzZXR1cC4gSW50cm9kdWNlCisgICAgICAgIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRm
b3JtQ29ubmVjdGlvbiBhbmQgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3IgdG8KKyAg
ICAgICAgY29udGFpbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgb2YgY3JlYXRpbmcgYW4g
SVBDIGNoYW5uZWwsIGFuZCBleHRlbmQKKyAgICAgICAgQXR0YWNobWVudCB0byBoaWRlIHRoZSBk
ZXRhaWxzIG9mIGV4Y2hhbmluZyBJUEMgZW5kcG9pbnRzIGFjcm9zcyBwcm9jZXNzZXMuCisgICAg
ICAgIFRoZSBwYXRjaCBhbHNvIHVuaWZpZXMgc29tZSBzcGVjaWZpY3MgYWJvdXQgdGhlIHdheSB3
ZSBoYW5kbGUgdW5peCBkb21haW4gc29ja2V0cy4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6
OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIEdldCByaWQg
b2YgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyk6CisgICAgICAgIEdldCByaWQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgbG9naWMgaW4gZmF2
b3Igb2YgdGhlIG5ldyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1l
bnREZWNvZGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5jcHA6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5jb2Rlci5oOgorICAgICAgICBJbmNsdWRpbmcgQXR0YWNo
bWVudC5oIGluIEFyZ3VtZW50W0VuY29kZXIvRGVjb2Rlcl0uaCB3b3VsZCBjYXVzZQorICAgICAg
ICBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgbm93LCBzbyBpdCBpcyBjaGFuZ2VkIHRvIGZvcndhcmQg
ZGVjbGFyYXRpb24KKyAgICAgICAgYW5kIGFkZCBpbmNsdWRlcyB3aGVyZSBpdCBpcyB1c2VkLgor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwOgorICAgICAgICAoSVBDOjpt
ZXNzYWdlRGlzcG9zaXRpb24pOgorICAgICAgICAoSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50
KToKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAo
SVBDOjpBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVu
dCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbCk6CisgICAgICAgIEl0IHdhcyBzaW1wbHkgd3Jv
bmcuIFRoZSBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBpcyAtMSBhbmQgbm90IDAuCisKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OkNvbm5lY3Rpb25EZXNj
cmlwdG9yKToKKyAgICAgICAgVmVyeSBiYXNpYyBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBvZiBhbiBJ
UEMgY2hhbm5lbC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpzZXJ2ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIpOgor
ICAgICAgICBUaGVzZSBhcmUgdGhlIHNhbWUgb24gTWFjLgorCisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbik6CisgICAgICAgIENyZWF0ZXMgdGhlIE9T
IHNwZWNpZmljIElQQyBjaGFubmVsLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQXR0
YWNobWVudFVuaXguY3BwOgorICAgICAgICAoSVBDOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToK
KyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6bnVsbENvbm5lY3Rpb24pOgorICAgICAgICAoSVBD
OjpBdHRhY2htZW50Ojpjb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIENvbm5lY3Rpb25S
ZXF1aXJlbWVudCBpcyBub3QgcmVzcGVjdGVkIGhlcmUgc2luY2UgdGhlIGNvbmNlcHQgb2YgbW92
aW5nIHNvY2tldCByaWdodHMKKyAgICAgICAgYWNyb3NzIHByb2Vzc2VzIGlzIGhhbmRsZWQgdmlh
IGNvbnRyb2wgbWVzc2FnZXMgaW4gQ29ubmVjdGlvblVuaXguY3BwLgorCisgICAgICAgICogUGxh
dGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcik6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yOjpjbGllbnRJZGVudGlmaWVyKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKToKKyAg
ICAgICAgQ29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBzb2NrZXQgY3JlYXRpb24uIFR1cm5lZCBl
cnJvciBoYW5kbGluZyB0byBSRUxFQVNFX0FTU0VSVCdzCisgICAgICAgIHNpbmNlIGVycm9ycyB3
ZXJlIG5ldmVyIGhhbmRsZWQgYW55d2F5IGFuZCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkby4K
KworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmNyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgQ2hhbmdlIHBsYXRmb3JtIHNwZWNpZmljIGxvZ2ljIGluIGZhdm9yIG9mIHRoZSBuZXcgaW50
ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRDcmVh
dGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICBVc2UgdGhlIG5ldyBp
bnRlcmZhY2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVu
Y2hlckVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJv
Y2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4gUmVtb3ZlZCB0aGUgY2xvc2Ug
Y2FsbCBmcm9tIHRoZSBjaGlsZCBzaWRlCisgICAgICAgIG9mIHRoZSBmb3JrIGJlY2F1c2UgRkRf
Q0xPRVhFQyBoYW5kbGVzIHRoYXQgYXV0b21hdGljYWxseS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Y2hpbGRTZXR1cEZ1bmN0aW9uKTogUmVtb3ZlZCB0aGUgY2xvc2UgY2FsbCBzaW5jZSBGRF9DTE9F
WEVDIGhhbmRsZXMgdGhhdC4KKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKTogVXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2gpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZh
aWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFj
ZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcg
aW50ZXJmYWNlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y3JlYXRlSW5zcGVjdG9yUGFnZSk6
CisgICAgICAgIFVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJOjplc3RhYmxpc2hDb25uZWN0aW9uKToKKyAgICAgICAgVXNlIHRoZSBuZXcgaW50ZXJmYWNl
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
VXNlIHRoZSBuZXcgaW50ZXJmYWNlLgorCiAyMDE0LTExLTA0ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIERpY3Rpb25hcnkgbG9va3VwIHBhbmVsIHBv
cHMgdXAgYXQgcmFuZG9tIHdoZW4gY2xpY2tpbmcgb24gc2VsZWN0ZWQgdGV4dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCA1
M2IxZTkyMWVmOGQ4ZWExYzFmMDdiN2U1ODY4MGUzNjRkMGRiNmU5Li43YWFkODVlMTg0MTc4MTk5
MmNhYTk0YjQyMGE3MTk3ZDhhYjhlZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQXN5bmNUYXNrLmgiCisjaW5jbHVk
ZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMTc1LDIwICsxNzYsMTMgQEAgdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCkKIAogdm9pZCBEYXRh
YmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0j
aWYgT1MoREFSV0lOKQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAgbWFj
aF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKLQotICAg
IC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9uLgotICAgIFJlZlB0cjxEYXRhYmFzZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIobGlzdGVuaW5nUG9y
dCkpOworICAgIHVzaW5nIG5hbWVzcGFjZSBJUEM7CisgICAgQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bkRlc2NyaXB0b3IgZGVzY3JpcHRvciA9IENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVj
dGlvbigpOworICAgIFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShkZXNjcmlwdG9y
LnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKLSAgICBJUEM6OkF0dGFjaG1lbnQg
Y2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CisgICAg
QXR0YWNobWVudCBjbGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpLCBBdHRh
Y2htZW50OjpBY3F1aXJlU2VuZFJpZ2h0KTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKLSNlbHNlCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBEYXRh
YmFzZVByb2Nlc3M6OmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJlNWQ3ZjFhNzk0
ZDk4MjUwMTMwM2Q5MWYxMGExZTI5YTRhODc5YmUuLmVjNjcwZjM5MGRiNWUzNWYwNTU3MjhlMWU4
ZjU2M2JiMWQyYmFkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5NywyOCArMTk3LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KQogewotI2lmIE9TKERBUldJTikKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0Lgot
ICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7
Ci0KLSAgICAvLyBDcmVhdGUgYSBsaXN0ZW5pbmcgY29ubmVjdGlvbi4KLSAgICBSZWZQdHI8TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNvbm5lY3Rpb24gPSBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5p
bmdQb3J0KSk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQQzsKKyAgICBDb25uZWN0aW9uOjpDb25u
ZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1D
b25uZWN0aW9uKCk7CisgICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBj
b25uZWN0aW9uID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShkZXNjcmlw
dG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBw
ZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAotICAgIElQQzo6QXR0YWNobWVudCBjbGllbnRQ
b3J0KGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICBBdHRhY2ht
ZW50IGNsaWVudFBvcnQoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCksIEF0dGFjaG1lbnQ6
OkFjcXVpcmVTZW5kUmlnaHQpOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKGNsaWVudFBvcnQpLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKLQotICAgIFJlZlB0cjxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY29ubmVjdGlvbiA9IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7Ci0KLSAgICBJUEM6OkF0
dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldFBhaXIuY2xpZW50KTsKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhjbGllbnRTb2NrZXQpLCAwKTsKLSNl
bHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCmluZGV4
IDQxMDVhNzBkZDE2Zjk2YTFiNzZjN2U4ZmYxNDljOWRhNDc3ZmVkYjEuLjUyYjkzZGYwNGIxZWI1
ZjU1YWI3ZTgzMzBiODlhMmNhNDRjMjc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Bcmd1bWVudERlY29kZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCiAKKyNpbmNsdWRlICJBdHRh
Y2htZW50LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudERlY29kZXIuaAppbmRl
eCAwY2EwYzE5ZDZiZjMyN2E3YTAzOWFhZTg5YmQ5NmMxYmU0OWU2ZmY2Li5iODNiNTMwODE4NzZj
YmUyZWI3ZDAzNjM2NzhjMmM2MzgyNDUzYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5oCkBAIC0yNywxMSArMjcsMTEgQEAKICNkZWZpbmUgQXJn
dW1lbnREZWNvZGVyX2gKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJB
dHRhY2htZW50LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
IAorY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAgICAgCiBjbGFzcyBB
cmd1bWVudERlY29kZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRFbmNvZGVyLmNwcAppbmRleCBjNzFlMWExNGI0ZjE3MTlmNjQ0OTljYzI4MDE2ZmI1Y2RlMjMx
NWMxLi5iZWIxM2NhZGY4MDUxYjhjZTMyZGE0OTJjOTcwNDlhZTMxZTVkYzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5o
IgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuaAppbmRleCA3NWQwYmZiYTdiMTM1MzRh
YzFiZTQ5NTM0MWVjNGJmNzkxYjExNDRhLi5hMjk2YjA3YWE3MTY5YTVhYWYxMGQwYWQwMTU2Zjdm
MjdjMDRkNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RW5j
b2Rlci5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNkZWZpbmUgQXJndW1lbnRFbmNvZGVyX2gKIAog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKLSNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgQXJndW1lbnRF
bmNvZGVyOworY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIGNsYXNz
IEFyZ3VtZW50RW5jb2RlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9J
UEMvQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVu
dC5jcHAKaW5kZXggOTM2N2IxYWQyZWEwYmY2MWM5MjI5ZmMzM2UwMjk2NTBlZDc0NGVkZS4uNzU4
MTgxM2RiZGFiOTk3MDdhNzg0YmNjYWQ3N2I3MjQxNGIzNDYzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcApAQCAtMzEsMTIgKzMxLDI1IEBACiAKIG5hbWVz
cGFjZSBJUEMgewogCi1BdHRhY2htZW50OjpBdHRhY2htZW50KCkKLSAgICA6IG1fdHlwZShVbmlu
aXRpYWxpemVkKQorI2lmIE9TKERBUldJTikKK3N0YXRpYyBpbmxpbmUgbWFjaF9tc2dfdHlwZV9u
YW1lX3QgbWVzc2FnZURpc3Bvc2l0aW9uKEF0dGFjaG1lbnQ6OkNvbm5lY3Rpb25SZXF1aXJlbWVu
dCByZXF1aXJlbWVudCkKIHsKKyAgICBpZiAocmVxdWlyZW1lbnQgPT0gQXR0YWNobWVudDo6QWNx
dWlyZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EOwor
ICAgIGlmIChyZXF1aXJlbWVudCA9PSBBdHRhY2htZW50OjpGb3J3YXJkU2VuZFJpZ2h0KQorICAg
ICAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQ7CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQ7Cit9CisKK0F0dGFj
aG1lbnQ6OkF0dGFjaG1lbnQoQ29ubmVjdGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyLCBBdHRh
Y2htZW50OjpDb25uZWN0aW9uUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQpCisgICAgOiBtX3R5cGUo
TWFjaFBvcnRUeXBlKQoreworICAgIG1fcG9ydCA9IGlkZW50aWZpZXIucG9ydDsKKyAgICBtX2Rp
c3Bvc2l0aW9uID0gbWVzc2FnZURpc3Bvc2l0aW9uKHJlcXVpcmVtZW50KTsKIH0KIAotI2lmIE9T
KERBUldJTikKIEF0dGFjaG1lbnQ6OkF0dGFjaG1lbnQobWFjaF9wb3J0X25hbWVfdCBwb3J0LCBt
YWNoX21zZ190eXBlX25hbWVfdCBkaXNwb3NpdGlvbikKICAgICA6IG1fdHlwZShNYWNoUG9ydFR5
cGUpCiAgICAgLCBtX3BvcnQocG9ydCkKQEAgLTQ4LDYgKzYxLDE2IEBAIHZvaWQgQXR0YWNobWVu
dDo6cmVsZWFzZSgpCiB7CiAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKIH0KKworQXR0YWNo
bWVudCBBdHRhY2htZW50OjpudWxsQ29ubmVjdGlvbihBdHRhY2htZW50OjpDb25uZWN0aW9uUmVx
dWlyZW1lbnQgcmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1lbnQoTUFDSF9QT1JU
X05VTEwsIG1lc3NhZ2VEaXNwb3NpdGlvbihyZXF1aXJlbWVudCkpOworfQorCitDb25uZWN0aW9u
OjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gQ29ubmVjdGlvbjo6SWRlbnRpZmllcihwb3J0KCkpOworfQogI2VuZGlmCiAK
IHZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCmluZGV4IGIwZjFkY2UyMDNl
Yjc4ZTM1ZGE0OTRjM2IwM2MzZTU5N2I3NTI0NWMuLmRjNTM4OTllMmQ0MTM3MzcxMGQ4Nzk1NTkz
YWM5ZmE4YTA2MTIyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9B
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQu
aApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBBdHRhY2htZW50X2gKICNkZWZpbmUgQXR0YWNo
bWVudF9oCiAKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisKICNpZiBPUyhEQVJXSU4pCiAjaW5j
bHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfdHJhcHMuaD4KQEAg
LTM4LDcgKzQwLDkgQEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogCiBjbGFzcyBBdHRhY2htZW50
IHsKIHB1YmxpYzoKLSAgICBBdHRhY2htZW50KCk7CisgICAgQXR0YWNobWVudCgpCisgICAgICAg
IDogbV90eXBlKFVuaW5pdGlhbGl6ZWQpCisgICAgeyB9CiAKICAgICBlbnVtIFR5cGUgewogICAg
ICAgICBVbmluaXRpYWxpemVkLApAQCAtNTAsNiArNTQsMTMgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgfTsKIAorICAgIGVudW0gQ29ubmVjdGlvblJlcXVpcmVtZW50IHsKKyAgICAgICAgQWNxdWly
ZVNlbmRSaWdodCwKKyAgICAgICAgRm9yd2FyZFNlbmRSaWdodAorICAgIH07CisKKyAgICBBdHRh
Y2htZW50KENvbm5lY3Rpb246OklkZW50aWZpZXIsIENvbm5lY3Rpb25SZXF1aXJlbWVudCk7CisK
ICNpZiBPUyhEQVJXSU4pCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90IHBvcnQsIG1h
Y2hfbXNnX3R5cGVfbmFtZV90IGRpc3Bvc2l0aW9uKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQpAQCAtNTcsNiArNjgsOSBAQCBwdWJsaWM6CiAgICAgQXR0YWNobWVudChpbnQgZmls
ZURlc2NyaXB0b3IpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgQXR0YWNobWVudCBudWxsQ29ubmVj
dGlvbihDb25uZWN0aW9uUmVxdWlyZW1lbnQpOworCisgICAgQ29ubmVjdGlvbjo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYjUyY2YxZWUwMGUwNjk3ODMyZTYwYTA3ZGQ5MWE4MGRl
YTMzYThhZC4uYzJhODg3ZDUyMzAzMDAzNGFjNjBiYzBkN2M3Y2Y4YWQ5Yjg4NjVhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC01Niw2ICs1Niw3IEBAIGNs
YXNzIFJ1bkxvb3A7CiAKIG5hbWVzcGFjZSBJUEMgewogCitjbGFzcyBBdHRhY2htZW50Owogc3Ry
dWN0IFdhaXRGb3JNZXNzYWdlU3RhdGU7CiAKIGVudW0gTWVzc2FnZVNlbmRGbGFncyB7CkBAIC0x
MjUsMTkgKzEyNiwzOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRBdWRpdFRva2VuKGF1ZGl0X3Rv
a2VuX3QmKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHR5cGVkZWYgaW50
IElkZW50aWZpZXI7Ci0gICAgc3RhdGljIGJvb2wgaWRlbnRpZmllcklzTnVsbChJZGVudGlmaWVy
IGlkZW50aWZpZXIpIHsgcmV0dXJuICFpZGVudGlmaWVyOyB9Ci0KLSAgICBzdHJ1Y3QgU29ja2V0
UGFpciB7Ci0gICAgICAgIGludCBjbGllbnQ7Ci0gICAgICAgIGludCBzZXJ2ZXI7Ci0gICAgfTsK
KyAgICBzdGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikg
eyByZXR1cm4gaWRlbnRpZmllciA9PSAtMTsgfQogCiAgICAgZW51bSBDb25uZWN0aW9uT3B0aW9u
cyB7CiAgICAgICAgIFNldENsb2V4ZWNPbkNsaWVudCA9IDEgPDwgMCwKICAgICAgICAgU2V0Q2xv
ZXhlY09uU2VydmVyID0gMSA8PCAxLAogICAgIH07CisjZW5kaWYKKyAgICBjbGFzcyBDb25uZWN0
aW9uRGVzY3JpcHRvciB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIElkZW50aWZpZXIg
c2VydmVySWRlbnRpZmllcigpIGNvbnN0OworICAgICAgICAgICAgSWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyKCkgY29uc3Q7CisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBmcmllbmQg
Y2xhc3MgQ29ubmVjdGlvbjsKKyNpZiBPUyhEQVJXSU4pCisgICAgICAgICAgICBDb25uZWN0aW9u
RGVzY3JpcHRvcihJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgICAgIHsgfQorICAgICAgICAgICAgSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKKyAgICAg
ICAgICAgIENvbm5lY3Rpb25EZXNjcmlwdG9yKElkZW50aWZpZXIgc2VydmVySWRlbnRpZmllciwg
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIDogbV9zZXJ2ZXJJ
ZGVudGlmaWVyKHNlcnZlcklkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgLCBtX2NsaWVudElk
ZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKKyAgICAgICAgICAgIHsgfQorICAgICAgICAgICAg
SWRlbnRpZmllciBtX3NlcnZlcklkZW50aWZpZXI7CisgICAgICAgICAgICBJZGVudGlmaWVyIG1f
Y2xpZW50SWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CiAKLSAgICBzdGF0aWMgQ29ubmVjdGlv
bjo6U29ja2V0UGFpciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24odW5zaWduZWQgb3B0aW9ucyA9
IFNldENsb2V4ZWNPbkNsaWVudCB8IFNldENsb2V4ZWNPblNlcnZlcik7CisjaWYgT1MoREFSV0lO
KQorICAgIHN0YXRpYyBDb25uZWN0aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rp
b24oKTsKKyNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgIHN0YXRpYyBDb25uZWN0
aW9uRGVzY3JpcHRvciBjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24odW5zaWduZWQgb3B0aW9ucyA9
IFNldENsb2V4ZWNPbkNsaWVudCB8IFNldENsb2V4ZWNPblNlcnZlcik7CiAjZW5kaWYKIAogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENvbm5lY3Rpb24+IGNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oSWRl
bnRpZmllciwgQ2xpZW50KiwgV1RGOjpSdW5Mb29wJiBjbGllbnRSdW5Mb29wKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29kZXIuY3BwCmluZGV4IDI5YTA1NGVm
MDAyOTEyOGQ0MTNiMjJlNzk3MjdiZTgwMTEwZGVhY2YuLjY0ZjY0OTUzZmQxNDMwZjljMjU4ZmZj
ZjZiZTIwMWExOGVhNDAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01l
c3NhZ2VEZWNvZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VEZWNv
ZGVyLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0dGFjaG1l
bnQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdz
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcAppbmRleCBkMmU0ZWZlOWE5YmFjNGVjNTk2NWZi
NDcxNTZjNjk0ZGJjZDA0YmZkLi45MWY4NDVlNDU0ZjI5Yzg2NjlkYWZjYjAxM2VmN2M1YmMzZWNm
NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZUVuY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRW5jb2Rlci5oIgogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQppbmRleCBj
MDg0NWVjZWE5NzJmOTA5MzcwMDYzYjliMmVjZjE0NWZjM2U2OTQ5Li4xOGE5ZWNkYTI4NjY0ZmE1
MzhiZTZhNGE0OGRhNGI4MTMyNzgzMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCkBAIC05OSw2ICs5OSwyMyBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogICAgIAorQ29ubmVjdGlvbjo6SWRlbnRpZmllciBDb25uZWN0aW9uOjpDb25u
ZWN0aW9uRGVzY3JpcHRvcjo6c2VydmVySWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faWRlbnRpZmllcjsKK30KKworQ29ubmVjdGlvbjo6SWRlbnRpZmllciBDb25uZWN0aW9uOjpD
b25uZWN0aW9uRGVzY3JpcHRvcjo6Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faWRlbnRpZmllcjsKK30KKworQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0b3Ig
Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCkKK3sKKyAgICBtYWNoX3BvcnRf
dCBwb3J0OworICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BP
UlRfUklHSFRfUkVDRUlWRSwgJnBvcnQpOworICAgIHJldHVybiBDb25uZWN0aW9uRGVzY3JpcHRv
cihwb3J0KTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogewog
ICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcAppbmRleCAwMjJjNzJkNDFmMjY2NDIxNzY4Y2I4
ZGMzNjk0YTQ3ZjU0MDFlODJmLi42NjRjOGUxMzk3NGM2ZWNmM2Q0NDk1YTAwNDZkYzQ3NTkwNDVj
ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2ht
ZW50VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQXR0YWNo
bWVudFVuaXguY3BwCkBAIC0zMSw2ICszMSwxMiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAorQXR0
YWNobWVudDo6QXR0YWNobWVudChDb25uZWN0aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bm5lY3Rpb25SZXF1aXJlbWVudCkKKyAgICA6IG1fdHlwZShTb2NrZXRUeXBlKQorICAgICwgbV9m
aWxlRGVzY3JpcHRvcihpZGVudGlmaWVyKQoreworfQorCiBBdHRhY2htZW50OjpBdHRhY2htZW50
KGludCBmaWxlRGVzY3JpcHRvciwgc2l6ZV90IHNpemUpCiAgICAgOiBtX3R5cGUoTWFwcGVkTWVt
b3J5VHlwZSkKICAgICAsIG1fZmlsZURlc2NyaXB0b3IoZmlsZURlc2NyaXB0b3IpCkBAIC01MSw0
ICs1NywxNSBAQCB2b2lkIEF0dGFjaG1lbnQ6OmRpc3Bvc2UoKQogICAgICAgICBjbG9zZVdpdGhS
ZXRyeShtX2ZpbGVEZXNjcmlwdG9yKTsKIH0KIAorQXR0YWNobWVudCBBdHRhY2htZW50OjpudWxs
Q29ubmVjdGlvbihDb25uZWN0aW9uUmVxdWlyZW1lbnQpCit7CisgICAgcmV0dXJuIEF0dGFjaG1l
bnQoLTEpOworfQorCitDb25uZWN0aW9uOjpJZGVudGlmaWVyIEF0dGFjaG1lbnQ6OmNvbm5lY3Rp
b25JZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFNvY2tldFR5cGUp
OworICAgIHJldHVybiBmaWxlRGVzY3JpcHRvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJUEMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcAppbmRleCAxNmJlMDE0ZTg3MzlmYWM0ZDk3MDQ0OWJmYTE0ZDA2MTk0OThkYjg2Li41NjBh
MjEyYjAyOGU1MzczNjlhNjI2NGMzYjQwYTExYjlhYWI0YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC02Myw2ICs2
MywzMCBAQCBlbnVtIHsKICAgICBNZXNzYWdlQm9keUlzT3V0T2ZMaW5lID0gMVUgPDwgMzEKIH07
CiAKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbkRlc2NyaXB0
b3I6OnNlcnZlcklkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcklkZW50
aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bkRlc2NyaXB0b3I6OmNsaWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
aWVudElkZW50aWZpZXI7Cit9CisKK0Nvbm5lY3Rpb246OkNvbm5lY3Rpb25EZXNjcmlwdG9yIENv
bm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbih1bnNpZ25lZCBvcHRpb25zKQorewor
ICAgIGludCBzb2NrZXRzWzJdOworICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tldHBhaXIoQUZfVU5J
WCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKKworICAgIGlmIChvcHRpb25zICYg
U2V0Q2xvZXhlY09uQ2xpZW50KSB7CisgICAgICAgIC8vIEF2b2lkIGV4cG9zaW5nIHRoZSBzZXJ2
ZXIgc29ja2V0IHRvIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgICAgIHdoaWxlIChmY250bChzb2Nr
ZXRzWzBdLCBGX1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVycm5vID09IEVJTlRSKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ29ubmVjdGlvbkRl
c2NyaXB0b3Ioc29ja2V0c1swXSwgc29ja2V0c1sxXSk7Cit9CisKIGNsYXNzIE1lc3NhZ2VJbmZv
IHsKIHB1YmxpYzoKICAgICBNZXNzYWdlSW5mbygpIHsgfQpAQCAtNTQxLDI3ICs1NjUsNiBAQCBi
b29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VFbmNvZGVyPiBlbmNvZGVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1Db25uZWN0aW9uOjpT
b2NrZXRQYWlyIENvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbih1bnNpZ25lZCBv
cHRpb25zKQotewotICAgIGludCBzb2NrZXRzWzJdOwotICAgIFJFTEVBU0VfQVNTRVJUKHNvY2tl
dHBhaXIoQUZfVU5JWCwgU09DS0VUX1RZUEUsIDAsIHNvY2tldHMpICE9IC0xKTsKLQotICAgIGlm
IChvcHRpb25zICYgU2V0Q2xvZXhlY09uU2VydmVyKSB7Ci0gICAgICAgIC8vIERvbid0IGV4cG9z
ZSB0aGUgY2hpbGQgc29ja2V0IHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy4KLSAgICAgICAgd2hpbGUg
KGZjbnRsKHNvY2tldHNbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpICA9PSAtMSkKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGVycm5vICE9IEVJTlRSKTsKLSAgICB9Ci0KLSAgICBpZiAob3B0
aW9ucyAmIFNldENsb2V4ZWNPbkNsaWVudCkgewotICAgICAgICAvLyBEb24ndCBleHBvc2UgdGhl
IHBhcmVudCBzb2NrZXQgdG8gcG90ZW50aWFsIGZ1dHVyZSBjaGlsZHJlbi4KLSAgICAgICAgd2hp
bGUgKGZjbnRsKHNvY2tldHNbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZXJybm8gIT0gRUlOVFIpOwotICAgIH0KLQotICAgIFNvY2tl
dFBhaXIgc29ja2V0UGFpciA9IHsgc29ja2V0c1swXSwgc29ja2V0c1sxXSB9OwotICAgIHJldHVy
biBzb2NrZXRQYWlyOwotfQotICAgIAogdm9pZCBDb25uZWN0aW9uOjp3aWxsU2VuZFN5bmNNZXNz
YWdlKHVuc2lnbmVkIGZsYWdzKQogewogICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAppbmRleCAyODQxZWVk
OTA4MDJlZGU4NGNhZTE1NGE0Yzc2MjY5NDBlOWFjMGJmLi5iYWMzZTEzNmI1NzhlN2Y3MTE2ODgz
NjMxN2YxMDBhZjQ1MTA5MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHAKQEAgLTE1MiwxNSArMTUyLDEzIEBAIHZvaWQgUGx1Z2luUHJvY2Vz
czo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyCiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
KQogewotICAgIGJvb2wgZGlkSGF2ZUFueVdlYlByb2Nlc3NDb25uZWN0aW9ucyA9ICFtX3dlYlBy
b2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CisgICAgdXNpbmcgbmFtZXNwYWNlIElQQzsKIAot
I2lmIE9TKERBUldJTikKLSAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1h
Y2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFz
a19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7CisgICAg
Ym9vbCBkaWRIYXZlQW55V2ViUHJvY2Vzc0Nvbm5lY3Rpb25zID0gIW1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLmlzRW1wdHkoKTsKIAotICAgIC8vIENyZWF0ZSBhIGxpc3RlbmluZyBjb25uZWN0aW9u
LgotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKTsKKyAgICBDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gQ29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CisgICAgUmVmUHRyPFdl
YlByb2Nlc3NDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZShkZXNjcmlwdG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CisgICAgbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIGlmIChtX2F1ZGlv
SGFyZHdhcmVMaXN0ZW5lcikgewogICAgICAgICBpZiAobV9hdWRpb0hhcmR3YXJlTGlzdGVuZXIt
PmhhcmR3YXJlQWN0aXZpdHkoKSA9PSBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBl
OjpJc0FjdGl2ZSkKQEAgLTE2OSwyMSArMTY3LDggQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgICAgICBjb25uZWN0aW9uLT5hdWRpb0hh
cmR3YXJlRGlkQmVjb21lSW5hY3RpdmUoKTsKICAgICB9CiAKLSAgICBtX3dlYlByb2Nlc3NDb25u
ZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbi5yZWxlYXNlKCkpOwotCi0gICAgSVBDOjpBdHRhY2ht
ZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwor
ICAgIEF0dGFjaG1lbnQgY2xpZW50UG9ydChkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIoKSwg
QXR0YWNobWVudDo6QWNxdWlyZVNlbmRSaWdodCk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb24pLCAwKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIElQ
Qzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKLQotICAgIFJlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFp
ci5zZXJ2ZXIpOwotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9u
LnJlbGVhc2UoKSk7Ci0KLSAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldFBh
aXIuY2xpZW50KTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVu
dFNvY2tldCwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7
Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIAogICAgIGlmIChOZXRzY2Fw
ZVBsdWdpbk1vZHVsZSogbW9kdWxlID0gbmV0c2NhcGVQbHVnaW5Nb2R1bGUoKSkgewogICAgICAg
ICBpZiAoIWRpZEhhdmVBbnlXZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94
eS5jcHAKaW5kZXggNDBjODlhMzEwZDMxNzE0ZWU2MWY2ZjQ5YzYwZWI4NGQyZWUzZGUyNi4uNWU4
MTNhNGFmZDJmOWVjOTBmNGJlNGMyODQzMWM1ZDNiMzJlYTcyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94
eS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjQsMTEgKzEyNiw3IEBAIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6OkF0CiAKICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCi0jaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5z
ZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSk7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYK
KyAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAppbmRleCAzN2NiMjAzMTZkODA1
YjY4ZTA0ZTAyZmIzZjNiYzg2NGYyNGEwZmFkLi4xMzMyMGQxNDk0NTA0MWVjYzQyYzhjNTBhZWEw
NGRmYmRhOGE3YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCkBAIC02NywxMSArNjcsNyBA
QCBzdGF0aWMgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+PiBjcmVhdGVBcmdzQXJyYXko
Y29uc3QgU3RyaW5nJiBwcmVmaXgsIGNvbgogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiB7Ci0gICAgaW50IHNvY2tldHNbMl07Ci0gICAgaWYgKHNvY2tldHBhaXIoQUZf
VU5JWCwgU09DS19TVFJFQU0sIDAsIHNvY2tldHMpIDwgMCkgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBJUEM6OkNvbm5lY3Rpb246
OkNvbm5lY3Rpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogCiAgICAgU3RyaW5nIHByb2Nlc3NDbWRQcmVmaXgsIGV4
ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIHN3aXRjaCAobV9sYXVuY2hPcHRpb25zLnBy
b2Nlc3NUeXBlKSB7CkBAIC05OCwyMCArOTQsMTkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogICAgIGlmICghbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NDbWRQcmVmaXgu
aXNFbXB0eSgpKQogICAgICAgICBwcm9jZXNzQ21kUHJlZml4ID0gbV9sYXVuY2hPcHRpb25zLnBy
b2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKLSAgICBhdXRvIGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXko
cHJvY2Vzc0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6bnVtYmVyKHNvY2tldHNb
MF0pLCBwbHVnaW5QYXRoKTsKKyAgICBhdXRvIGFyZ3MgPSBjcmVhdGVBcmdzQXJyYXkocHJvY2Vz
c0NtZFByZWZpeCwgZXhlY3V0YWJsZVBhdGgsIFN0cmluZzo6bnVtYmVyKGRlc2NyaXB0b3IuY2xp
ZW50SWRlbnRpZmllcigpKSwgcGx1Z2luUGF0aCk7CiAKICAgICAvLyBEbyBub3QgcGVyZm9ybSBt
ZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmb3JrKCkKICAgICAvLyBleGVj
KCkgYmVsb3cuIEZhc3RNYWxsb2MgY2FuIHBvdGVudGlhbGx5IGRlYWRsb2NrIGJlY2F1c2UKICAg
ICAvLyB0aGUgZm9yaygpIGRvZXNuJ3QgaW5oZXJpdCB0aGUgcnVubmluZyB0aHJlYWRzLgogICAg
IHBpZF90IHBpZCA9IGZvcmsoKTsKICAgICBpZiAoIXBpZCkgeyAvLyBDaGlsZCBwcm9jZXNzLgot
ICAgICAgICBjbG9zZShzb2NrZXRzWzFdKTsKICAgICAgICAgZXhlY3ZwKGFyZ3MuZGF0YSgpWzBd
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNoYXIqIGNvbnN0Kj4oYXJncy5kYXRhKCkpKTsKICAg
ICB9IGVsc2UgaWYgKHBpZCA+IDApIHsgLy8gcGFyZW50IHByb2Nlc3M7Ci0gICAgICAgIGNsb3Nl
KHNvY2tldHNbMF0pOworICAgICAgICBjbG9zZShkZXNjcmlwdG9yLmNsaWVudElkZW50aWZpZXIo
KSk7CiAgICAgICAgIG1fcHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAgICAgICAgIC8vIFdlJ3Zl
IGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWlu
IHJ1biBsb29wLgotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmUHJvY2Vz
c0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBwaWQsIHNvY2tldHNb
MV0pKTsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKGJpbmQoJlByb2Nlc3NMYXVu
Y2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcywgdGhpcywgcGlkLCBkZXNjcmlwdG9yLnNl
cnZlcklkZW50aWZpZXIoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggMzYy
MzY1Y2NhYWI2ZmVmY2I4YjVhNjEwNzAyZWY4MTQxZGNjNDQxNy4uMDY3MWFhM2Y3Yzk4Y2JjOTRm
OTRjNWNkZjYxOTY2OTAxZTI5M2Y2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcApAQCAtNDks
MTUgKzQ5LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBjaGlsZFNldHVw
RnVuY3Rpb24oZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgaW50IHNvY2tldCA9IEdQT0lOVEVS
X1RPX0lOVCh1c2VyRGF0YSk7Ci0gICAgY2xvc2Uoc29ja2V0KTsKIH0KIAogdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogewotICAgIEdQaWQgcGlkID0gMDsKLQotICAgIElQ
Qzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpj
cmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9u
czo6U2V0Q2xvZXhlY09uU2VydmVyKTsKKyAgICBJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb25PcHRpb25zOjpTZXRDbG9leGVjT25T
ZXJ2ZXIpOwogCiAgICAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoLCBwbHVnaW5QYXRoOwogICAgIENT
dHJpbmcgcmVhbEV4ZWN1dGFibGVQYXRoLCByZWFsUGx1Z2luUGF0aDsKQEAgLTg1LDcgKzgxLDcg
QEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJl
YWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aCk7Ci0gICAgR1VuaXF1ZVB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBz
b2NrZXRQYWlyLmNsaWVudCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNvY2tldChnX3N0cmR1
cF9wcmludGYoIiVkIiwgZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpKTsKIAogICAgIHVu
c2lnbmVkIG5hcmdzID0gNDsgLy8gc2l6ZSBvZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9h
c3luYygpCiAKQEAgLTExMiwyMSArMTA4LDIyIEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKICAgICBhcmd2W2krK10gPSBjb25zdF9jYXN0PGNoYXIqPihyZWFsUGx1Z2lu
UGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbaSsrXSA9IDA7CiAKKyAgICBHUGlkIHBpZCA9IDA7CiAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmICghZ19zcGF3bl9hc3luYygw
LCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5j
dGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldFBhaXIuc2VydmVyKSwgJnBpZCwgJmVycm9yLm91
dFB0cigpKSkgeworICAgIGlmICghZ19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xF
QVZFX0RFU0NSSVBUT1JTX09QRU4sIGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVS
KGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkg
ewogICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUgdG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAl
cy5cbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogCiAgICAgLy8gRG9uJ3QgZXhwb3NlIHRoZSBwYXJlbnQgc29ja2V0IHRvIHBvdGVudGlh
bCBmdXR1cmUgY2hpbGRyZW4uCi0gICAgd2hpbGUgKGZjbnRsKHNvY2tldFBhaXIuY2xpZW50LCBG
X1NFVEZELCBGRF9DTE9FWEVDKSA9PSAtMSkKKyAgICB3aGlsZSAoZmNudGwoZGVzY3JpcHRvci5j
bGllbnRJZGVudGlmaWVyKCksIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQogICAgICAgICBS
RUxFQVNFX0FTU0VSVChlcnJubyAhPSBFSU5UUik7CiAKLSAgICBjbG9zZShzb2NrZXRQYWlyLmNs
aWVudCk7CisgICAgY2xvc2UoZGVzY3JpcHRvci5jbGllbnRJZGVudGlmaWVyKCkpOwogICAgIG1f
cHJvY2Vzc0lkZW50aWZpZXIgPSBwaWQ7CiAKICAgICAvLyBXZSd2ZSBmaW5pc2hlZCBsYXVuY2hp
bmcgdGhlIHByb2Nlc3MsIG1lc3NhZ2UgYmFjayB0byB0aGUgbWFpbiBydW4gbG9vcC4KLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goYmluZCgmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hM
YXVuY2hpbmdQcm9jZXNzLCB0aGlzLCBtX3Byb2Nlc3NJZGVudGlmaWVyLCBzb2NrZXRQYWlyLnNl
cnZlcikpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChiaW5kKCZQcm9jZXNzTGF1bmNo
ZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHRoaXMsIG1fcHJvY2Vzc0lkZW50aWZpZXIs
IGRlc2NyaXB0b3Iuc2VydmVySWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5j
aGVyOjp0ZXJtaW5hdGVQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzYwZDk1N2M4NTUx
MDU3NTBhZjNhMzg2ZWI2MDQ3Y2VmMzZmZTQwNi4uMGVjY2FhNTg1ZTVjMjgyYjljNjFlYjhkMTQy
YjVkYTE3NTgwOTI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVz
c2FnZXMuaCIKQEAgLTEwOSwxMyArMTEwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpu
ZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICB3aGlsZSAoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAK
LSNpZiBPUyhEQVJXSU4pCi0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgwLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCkpOwotI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0gICAgICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudCgpKTsKLSNlbHNlCi0gICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1l
bnQ6Om51bGxDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCkpOwog
ICAgIH0KIAogICAgIC8vIFRlbGwgdGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyIHRvIGZvcmdl
dCBhYm91dCB0aGlzIG5ldHdvcmsgcHJvY2VzcyBwcm94eS4gVGhpcyBtYXkgY2F1c2UgdXMgdG8g
YmUgZGVsZXRlZC4KQEAgLTE2MSwxMyArMTU2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGEK
ICAgICAvLyBHcmFiIHRoZSBmaXJzdCBwZW5kaW5nIGNvbm5lY3Rpb24gcmVwbHkuCiAgICAgUmVm
UHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VG
aXJzdCgpOwogCi0jaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVu
dChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7
Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0
aW9uSWRlbnRpZmllcik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdl
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwM2IwMzU0YjM3M2U2YmQ1YWUyY2I5ZTcyM2RmZjlhM2Q5
ODc5MjhlLi5kMDU3YTYzNjEyNzQ1MWExYmE2NzY1YzI5ZjVhZjIzNWFmZDUyMzAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCkBAIC0x
MzcsMTMgKzEzOCw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jh
c2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVjdGlvblJl
cGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1f
cGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCi0jaWYgT1MoREFSV0lOKQot
ICAgICAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpLCBmYWxzZSk7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAg
cmVwbHktPnNlbmQoSVBDOjpBdHRhY2htZW50KCksIGZhbHNlKTsKLSNlbHNlCi0gICAgICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0jZW5kaWYKKyAgICByZXBseS0+c2VuZChJUEM6OkF0dGFjaG1lbnQ6
Om51bGxDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudDo6Rm9yd2FyZFNlbmRSaWdodCksIGZhbHNl
KTsKICAgICB9CiAKICAgICB3aGlsZSAoIW1fcGVuZGluZ0dldFNpdGVzUmVwbGllcy5pc0VtcHR5
KCkpCkBAIC0yNDEsMTMgKzIzNiw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmIGNvCiAgICAgLy8g
R3JhYiB0aGUgZmlyc3QgcGVuZGluZyBjb25uZWN0aW9uIHJlcGx5LgogICAgIFJlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwog
Ci0jaWYgT1MoREFSV0lOKQotICAgIHJlcGx5LT5zZW5kKElQQzo6QXR0YWNobWVudChjb25uZWN0
aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7Ci0jZWxpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEdldFNpdGVz
V2l0aERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAppbmRleCBkOGJiOTkwNDVi
ZDU3Yzc5YjRhY2Q2NDMxODVlMmE1OTBkMDRlNjQwLi44OGI3NWM3N2M1YTExYzdmZDA0OWU2YzI5
YzZhMTJjODAyZTZkMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cApAQCAtNzQsMTUgKzc0LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25u
ZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiksIDAp
KQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIE9TKERBUldJTikKLSAgICBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVu
dGlmaWVyLnBvcnQoKSk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rp
b25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRp
ZmllcigpKTsKICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuZmlsZURlc2NyaXB0b3IoKTsK
LSAgICBpZiAoY29ubmVjdGlvbklkZW50aWZpZXIgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwot
I2VuZGlmCiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVn
aW5Qcm9jZXNzVG9rZW4sIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91
c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQo
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCAxZWI2YmFmMmRhOWMzODVhYTYxOWMy
MzU4Yzc4ZTU2NjBiNzNhZjhlLi4zMzU1N2U3ZjE3NmZiZGZmZTE5OTQ4OWE4Yzg2NDQ2ZmEyNWJh
M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3Rvci5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5oIgorCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC04Myw5ICs4NSw5IEBA
IHZvaWQgV2ViSW5zcGVjdG9yOjpjcmVhdGVJbnNwZWN0b3JQYWdlKGJvb2wgdW5kZXJUZXN0KQog
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmVyKGxpc3Rl
bmluZ1BvcnQpOwogICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChsaXN0
ZW5pbmdQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7CiAjZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9
IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7Ci0gICAgSVBDOjpD
b25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmZXIoc29ja2V0UGFpci5zZXJ2
ZXIpOwotICAgIElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uQ2xpZW50UG9ydChzb2NrZXRQYWly
LmNsaWVudCk7CisgICAgSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uRGVzY3JpcHRvciBkZXNj
cmlwdG9yID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKKyAg
ICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZlcihkZXNjcmlw
dG9yLnNlcnZlcklkZW50aWZpZXIoKSk7CisgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25D
bGllbnRQb3J0KGRlc2NyaXB0b3IuY2xpZW50SWRlbnRpZmllcigpKTsKICNlbHNlCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCAzZTU1MTZjZjA0MDY2YWZh
MmU1Y2E2MDM5MWNhYjY5YjNmNzE3MDA3Li40MGEwNDdhOTgzMWYzNmI4YWFlZjRkOTVjZjNiNzJj
NDk4MDBjZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgogCisjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3Nh
Z2VzLmgiCkBAIC02NSwxNCArNjcsNyBAQCBXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUko
V2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlv
bihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBp
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QpCiB7Ci0jaWYgT1MoREFSV0lO
KQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihl
bmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKLSNlbGlmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9y
KCkpOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybjsKLSNlbmRpZgor
ICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNv
ZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAKICAgICBp
ZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNDdhNGQ4ZmY4MTA4YTdkYzMyMjExODg4MDBkYzRkNmQwODQzNTgyMS4uOTRjZDRk
MDg4YzllZTljOThhYjI3OTY1NzRhODYwN2ZkYzU0ODU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zOTMsMTMgKzM5Myw4IEBAIHZvaWQgV2ViUHJvY2Vz
czo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICAgICAgTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgT1MoREFS
V0lOKQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKLSNlbGlmIFVTRShVTklYX0RP
TUFJTl9TT0NLRVRTKQotICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllciA9IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2Ny
aXB0b3IoKTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyAgICBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIoKTsKKwogICAgIGlmIChJ
UEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7Cg==
</data>
<flag name="review"
          id="265718"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>