<?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>158215</bug_id>
          
          <creation_ts>2016-05-30 15:04:19 -0700</creation_ts>
          <short_desc>Make createCrossThreadTask() functions return on the stack instead of the heap</short_desc>
          <delta_ts>2016-05-31 12:32:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158207</dependson>
          <blocked>158208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197685</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-30 15:04:19 -0700</bug_when>
    <thetext>Make createCrossThreadTask() functions return on the stack instead of the heap

In our WTFMove() world there&apos;s no reason that CrossThreadTasks have to be kept in std::unique_ptrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197724</commentid>
    <comment_count>1</comment_count>
      <attachid>280120</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-30 22:49:57 -0700</bug_when>
    <thetext>Created attachment 280120
Still building the full stack locally, but I know WTF and WebCore build... this is basically an EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197725</commentid>
    <comment_count>2</comment_count>
      <attachid>280121</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-30 22:55:28 -0700</bug_when>
    <thetext>Created attachment 280121
EWS take two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197726</commentid>
    <comment_count>3</comment_count>
      <attachid>280122</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-30 23:17:30 -0700</bug_when>
    <thetext>Created attachment 280122
EWS take three</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197729</commentid>
    <comment_count>4</comment_count>
      <attachid>280122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-31 00:03:07 -0700</bug_when>
    <thetext>Comment on attachment 280122
EWS take three

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

I suggest we consider using Optional rather than adding a null/invalid value to CrossThreadTask.

&gt; Source/WTF/wtf/CrossThreadQueue.h:44
&gt; +    CrossThreadQueue()
&gt; +    {
&gt; +    }

Could we just omit this and let it get generated? If not, I suggest using = default instead of writing an empty body.

&gt; Source/WTF/wtf/CrossThreadQueue.h:45
&gt; +    ~CrossThreadQueue();

Could we just omit this and let it get generated?

&gt; Source/WTF/wtf/CrossThreadQueue.h:66
&gt; +template&lt;typename DataType&gt;
&gt; +inline void CrossThreadQueue&lt;DataType&gt;::append(DataType&amp;&amp; message)

Should this be inlined? Not sure it’s short enough for that to be a good idea.

Also, I’ve been personally preferring a style where the template part is on the same line as the rest of the function definition. Not sure if anyone else likes that.

&gt; Source/WTF/wtf/CrossThreadQueue.h:74
&gt; +template&lt;typename DataType&gt;
&gt; +inline auto CrossThreadQueue&lt;DataType&gt;::waitForMessage() -&gt; DataType

Should this be inlined? Not sure it’s short enough for that to be a good idea.

We don’t need the &quot;auto -&gt;&quot; syntax when it’s a template argument, as opposed to a dependent name inside the template class.

&gt; Source/WTF/wtf/CrossThreadQueue.h:84
&gt; +        static double infiniteTime = std::numeric_limits&lt;double&gt;::max();

Probably should be const instead of static? Or maybe both. Is it safe to use this maximum value? Is it unsafe to use infinity instead? Can we add a waitForever function to Condition so that you don’t need to think about all these things just to read this function and know it’s correct?

&gt; Source/WTF/wtf/CrossThreadQueue.h:92
&gt; +template&lt;typename DataType&gt;
&gt; +inline auto CrossThreadQueue&lt;DataType&gt;::tryGetMessage() -&gt; DataType

Should this be inlined? Not sure it’s short enough for that to be a good idea.

We don’t need the &quot;auto -&gt;&quot; syntax when it’s a template argument, as opposed to a dependent name inside the template class.

&gt; Source/WTF/wtf/CrossThreadTask.h:39
&gt; +    CrossThreadTask()
&gt; +    {
&gt; +    }

I suggest using = default instead of writing an empty body.

&gt; Source/WTF/wtf/CrossThreadTask.h:48
&gt; +    CrossThreadTask(CrossThreadTask&amp;&amp;) = default;
&gt; +    CrossThreadTask&amp; operator=(CrossThreadTask&amp;&amp;) = default;

Why do we need to write these? Won’t the compiler generate them?

&gt; Source/WTF/wtf/CrossThreadTask.h:55
&gt; +    bool isValid() const { return (bool)m_taskFunction; }

Please consider static_cast instead of a C style cast. Or you could do one of those crazy !! things all the Windows folks seem to prefer.

&gt; Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:414
&gt; +    auto task = m_mainThreadQueue.tryGetMessage();
&gt; +    while (task.isValid()) {
&gt; +        task.performTask();
&gt; +        task = m_mainThreadQueue.tryGetMessage();
&gt; +    }

I would write the loop in a different way to avoid the duplication:

    while (true) {
        auto task = m_mainThreadQueue.tryGetMessage();
        if (!task.isValid())
            break;
        task.performTask();
    }

I wish there was a more elegant way to write it, but I think it’s worth the ugliness of &quot;while (true)&quot; to not repeat the tryGetMessage call.

Another way to make this more elegant is to have tryGetMessage return Optional&lt;CrossThreadTask&gt; instead of adding an invalid state to CrossThreadTask. Then it would look like this:

    while (auto task = m_mainThreadQueue.tryGetMessage())
        task.value().performTask();

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:485
&gt; +    CrossThreadTask task = m_databaseReplyQueue.tryGetMessage();
&gt; +    while (task.isValid()) {
&gt; +        task.performTask();
&gt; +        task = m_databaseReplyQueue.tryGetMessage();
&gt; +    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197785</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 08:59:51 -0700</bug_when>
    <thetext>The Windows EWS errors make no sense to me - I&apos;m just going to comment out CrossThreadCopier.cpp for windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197790</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 09:21:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; 
&gt; &gt; Source/WTF/wtf/CrossThreadQueue.h:84
&gt; &gt; +        static double infiniteTime = std::numeric_limits&lt;double&gt;::max();
&gt; 
&gt; Probably should be const instead of static? Or maybe both. Is it safe to use
&gt; this maximum value? Is it unsafe to use infinity instead? Can we add a
&gt; waitForever function to Condition so that you don’t need to think about all
&gt; these things just to read this function and know it’s correct?

This is what MessageQueue does, so I am assuming (for now) that its safe for our needs.

I think adding waitForever to condition is probably a great idea.

&gt; &gt; Source/WTF/wtf/CrossThreadTask.h:48
&gt; &gt; +    CrossThreadTask(CrossThreadTask&amp;&amp;) = default;
&gt; &gt; +    CrossThreadTask&amp; operator=(CrossThreadTask&amp;&amp;) = default;
&gt; 
&gt; Why do we need to write these? Won’t the compiler generate them?

The move constructor and assignment operators are only auto generated in very specific circumstances.

One of the circumstances where you do *not* get the auto generated move functions is if you have any user defined copy constructor, which this class does.

More here:
http://en.cppreference.com/w/cpp/language/move_constructor
http://en.cppreference.com/w/cpp/language/move_assignment
 
&gt; &gt; Source/WTF/wtf/CrossThreadTask.h:55
&gt; &gt; +    bool isValid() const { return (bool)m_taskFunction; }
&gt; 
&gt; Please consider static_cast instead of a C style cast. Or you could do one
&gt; of those crazy !! things all the Windows folks seem to prefer.

Got rid of this for Optional, instead.

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:414
&gt; &gt; +    auto task = m_mainThreadQueue.tryGetMessage();
&gt; &gt; +    while (task.isValid()) {
&gt; &gt; +        task.performTask();
&gt; &gt; +        task = m_mainThreadQueue.tryGetMessage();
&gt; &gt; +    }
&gt; 
&gt; I would write the loop in a different way to avoid the duplication:
&gt; 
&gt;     while (true) {
&gt;         auto task = m_mainThreadQueue.tryGetMessage();
&gt;         if (!task.isValid())
&gt;             break;
&gt;         task.performTask();
&gt;     }
&gt; 
&gt; I wish there was a more elegant way to write it, but I think it’s worth the
&gt; ugliness of &quot;while (true)&quot; to not repeat the tryGetMessage call.

I actually did that first, and then though quite specifically - &quot;Darin hates while(true)&quot;

&gt; 
&gt; Another way to make this more elegant is to have tryGetMessage return
&gt; Optional&lt;CrossThreadTask&gt; instead of adding an invalid state to
&gt; CrossThreadTask. Then it would look like this:
&gt; 
&gt;     while (auto task = m_mainThreadQueue.tryGetMessage())
&gt;         task.value().performTask();

That&apos;s what we have now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197798</commentid>
    <comment_count>7</comment_count>
      <attachid>280151</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 09:38:34 -0700</bug_when>
    <thetext>Created attachment 280151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197807</commentid>
    <comment_count>8</comment_count>
      <attachid>280151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-31 09:52:49 -0700</bug_when>
    <thetext>Comment on attachment 280151
Patch

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

&gt; Source/WTF/wtf/CrossThreadCopier.cpp:37
&gt; +#if !OS(WINDOWS)

Would be nice to have a comment explaining why we don’t even try to compile these tests on Windows.

&gt; Source/WTF/wtf/CrossThreadQueue.h:93
&gt; +template&lt;typename DataType&gt;
&gt; +Optional&lt;DataType&gt; CrossThreadQueue&lt;DataType&gt;::tryGetMessage()
&gt; +{
&gt; +    LockHolder lock(m_lock);
&gt; +
&gt; +    if (m_queue.isEmpty())
&gt; +        return { };
&gt; +
&gt; +    return m_queue.takeFirst();
&gt; +}

I don’t think anyone is using this function.

&gt; Source/WTF/wtf/CrossThreadTask.h:46
&gt; +    CrossThreadTask(CrossThreadTask&amp;&amp;) = default;
&gt; +    CrossThreadTask&amp; operator=(CrossThreadTask&amp;&amp;) = default;

I think we only have to explicitly define these because we use WTF_MAKE_NONCOPYABLE. Since NoncopyableFunction is already non-copyable, I think we can get the same results by leaving out these two lines and also removing the use of WTF_MAKE_NONCOPYABLE on this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197817</commentid>
    <comment_count>9</comment_count>
      <attachid>280155</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 10:15:43 -0700</bug_when>
    <thetext>Created attachment 280155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197819</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 10:17:05 -0700</bug_when>
    <thetext>Try to get Windows happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197820</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 10:17:48 -0700</bug_when>
    <thetext>Attachment 280155 did not pass style-queue:


ERROR: Source/WTF/wtf/CrossThreadCopier.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197823</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 10:23:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 280151 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280151&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CrossThreadCopier.cpp:37
&gt; &gt; +#if !OS(WINDOWS)
&gt; 
&gt; Would be nice to have a comment explaining why we don’t even try to compile
&gt; these tests on Windows.

Trying a different fix based on consulting with Alex.

&gt; 
&gt; &gt; Source/WTF/wtf/CrossThreadQueue.h:93
&gt; &gt; +template&lt;typename DataType&gt;
&gt; &gt; +Optional&lt;DataType&gt; CrossThreadQueue&lt;DataType&gt;::tryGetMessage()
&gt; &gt; +{
&gt; &gt; +    LockHolder lock(m_lock);
&gt; &gt; +
&gt; &gt; +    if (m_queue.isEmpty())
&gt; &gt; +        return { };
&gt; &gt; +
&gt; &gt; +    return m_queue.takeFirst();
&gt; &gt; +}
&gt; 
&gt; I don’t think anyone is using this function.

It is supposed to be! I must&apos;ve done something tragically wrong in this iteration, will go find.

&gt; 
&gt; &gt; Source/WTF/wtf/CrossThreadTask.h:46
&gt; &gt; +    CrossThreadTask(CrossThreadTask&amp;&amp;) = default;
&gt; &gt; +    CrossThreadTask&amp; operator=(CrossThreadTask&amp;&amp;) = default;
&gt; 
&gt; I think we only have to explicitly define these because we use
&gt; WTF_MAKE_NONCOPYABLE. Since NoncopyableFunction is already non-copyable, I
&gt; think we can get the same results by leaving out these two lines and also
&gt; removing the use of WTF_MAKE_NONCOPYABLE on this class.

You may be right! I&apos;ll try that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197835</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:12:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; &gt; Source/WTF/wtf/CrossThreadQueue.h:93
&gt; &gt; &gt; +template&lt;typename DataType&gt;
&gt; &gt; &gt; +Optional&lt;DataType&gt; CrossThreadQueue&lt;DataType&gt;::tryGetMessage()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    LockHolder lock(m_lock);
&gt; &gt; &gt; +
&gt; &gt; &gt; +    if (m_queue.isEmpty())
&gt; &gt; &gt; +        return { };
&gt; &gt; &gt; +
&gt; &gt; &gt; +    return m_queue.takeFirst();
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; I don’t think anyone is using this function.
&gt; 
&gt; It is supposed to be! I must&apos;ve done something tragically wrong in this
&gt; iteration, will go find.

It *is* used - code that used to use tryGetMessage on MessageQueue now uses it on CrossThreadQueue.

Those code sites reverted to untouched (after your comments on EWS take three), so they don&apos;t show in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197836</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:12:45 -0700</bug_when>
    <thetext>Windows bot made much more progress this time, suggesting it&apos;s over its WTF hurdle.

\o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197841</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:17:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/CrossThreadTask.h:46
&gt; &gt; &gt; +    CrossThreadTask(CrossThreadTask&amp;&amp;) = default;
&gt; &gt; &gt; +    CrossThreadTask&amp; operator=(CrossThreadTask&amp;&amp;) = default;
&gt; &gt; 
&gt; &gt; I think we only have to explicitly define these because we use
&gt; &gt; WTF_MAKE_NONCOPYABLE. Since NoncopyableFunction is already non-copyable, I
&gt; &gt; think we can get the same results by leaving out these two lines and also
&gt; &gt; removing the use of WTF_MAKE_NONCOPYABLE on this class.
&gt; 
&gt; You may be right! I&apos;ll try that.

Haven&apos;t 100% finished my build yet, but it looks like this worked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197844</commentid>
    <comment_count>16</comment_count>
      <attachid>280159</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:19:40 -0700</bug_when>
    <thetext>Created attachment 280159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197845</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:20:25 -0700</bug_when>
    <thetext>I&apos;ll wait for a full EWS sign off before cq+&apos;ing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197846</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 11:22:40 -0700</bug_when>
    <thetext>Attachment 280159 did not pass style-queue:


ERROR: Source/WTF/wtf/CrossThreadCopier.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197883</commentid>
    <comment_count>19</comment_count>
      <attachid>280159</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 12:32:05 -0700</bug_when>
    <thetext>Comment on attachment 280159
Patch

Clearing flags on attachment: 280159

Committed r201518: &lt;http://trac.webkit.org/changeset/201518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197884</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 12:32:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280120</attachid>
            <date>2016-05-30 22:49:57 -0700</date>
            <delta_ts>2016-05-30 22:55:25 -0700</delta_ts>
            <desc>Still building the full stack locally, but I know WTF and WebCore build... this is basically an EWS run</desc>
            <filename>bug-158215-20160530225112.patch</filename>
            <type>text/plain</type>
            <size>29947</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjEwYWRkNzM5MGEzNjA5MDZmMGRlODExNmFhNTIyYTMzMWVlMGZl
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTYtMDUtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5jcHA6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg6IEFkZGVk
LiBBIGxpZ2h0d2VpZ2h0IG9mIE1lc3NhZ2VRdWV1ZSB0aGF0IGRlYWxzIGRpcmVjdGx5CisgICAg
ICAgICAgaW4gb2JqZWN0cyBpbnN0ZWFkIG9mIGluIHN0ZDo6dW5pcXVlX3B0cnMuCisgICAgICAg
IChXVEY6OkNyb3NzVGhyZWFkUXVldWU6OkNyb3NzVGhyZWFkUXVldWUpOgorICAgICAgICAoV1RG
OjpDcm9zc1RocmVhZFF1ZXVlOjppc0tpbGxlZCk6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFk
UXVldWU8RGF0YVR5cGU+Ojp+Q3Jvc3NUaHJlYWRRdWV1ZSk6CisgICAgICAgIChXVEY6OkNyb3Nz
VGhyZWFkUXVldWU8RGF0YVR5cGU+OjphcHBlbmQpOgorICAgICAgICAKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NU
aHJlYWRUYXNrKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrOjppc1ZhbGlkKToKKyAg
ICAgICAgKFdURjo6Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZDMyM2E1MzFjMmVm
ZDUwNzNjYTk0ZmU5MGNkM2RiZDZlMGFjYTFiLi45NjM2MDkxOWQ1ZjUyNjA4MGE2ZDFhY2UxZTU1
NTFjZTEwZTA0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDIgQEAKIDIwMTYtMDUtMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCkgZnVuY3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0
aGUgaGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWNjb3VudHMgZm9yIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IG5vIGxvbmdlciBiZWluZyBhIHRoaW5nLAorICAgICAgICBhcyB3ZWxsIGFzIGNoYW5naW5n
IE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+cyBpbnRvIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5OjpoYW5kbGVNYWluVGhyZWFkVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaDoKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZVJ1bkxvb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVz
T25NYWluVGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4dERhdGFiYXNl
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpl
eGVjdXRlTmV4dERhdGFiYXNlVGFza1JlcGx5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgCisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RDcm9zc1RocmVhZFRhc2spOgorICAgICAgICAKKyAgICAgICAgKiBmaWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFk
YWJsZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQ4MjY4ODE0MTFjNGMyMzEzZDQzNDYyODVlZmY4NTZjMTZjYTg0
NDkuLjVhZGUxZTllYTliN2M2YTMxN2E4MjA2NGY0N2ZlODZiNDIxYTZiMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCTUx
NUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QjFDRkM5RjRBMDBD
Q0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MTVGNzk0RjFDRkM5RjRB
MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZENvcGllci5oICovOyB9OwogCQk1MTVGNzk1MDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi87IH07CisJ
CTUxNUY3OTU2MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk1NTFDRkQzQTY5MDBD
Q0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovOyB9OwogCQk1NTMwNzFDQTFDNDA0MjcyMDAz
ODQ4OTggLyogVGlueUxSVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmgg
Ki87IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEE5OTNGRjFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1i
b2xSZWdpc3RyeS5oICovOyB9OwpAQCAtNDI2LDYgKzQyNyw3IEBACiAJCTUxNUY3OTRCMUNGQzlG
NEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMg
LyogQ3Jvc3NUaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
b3NzVGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVGNzk1NTFD
RkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MDUsNiArODA3LDcgQEAKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyog
Q29uZGl0aW9uLmggKi8sCiAJCQkJNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhy
ZWFkQ29waWVyLmNwcCAqLywKIAkJCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRDb3BpZXIuaCAqLywKKwkJCQk1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRRdWV1ZS5oICovLAogCQkJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFRhc2suaCAqLywKIAkJCQlBOEE0NzI3MzE1MUE4MjVBMDA0MTIzRkYgLyogQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4QTQ3Mjc0MTUxQTgyNUEwMDQxMjNG
RiAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oICovLApAQCAtMTE4Miw2ICsxMTg1
LDcgQEAKIAkJCQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4QTE1MUE4MjVCMDA0MTIzRkYgLyogQml0bWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4QzE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5NDRGNDcxQzNEODgxNDAwNUJEMjhD
IC8qIEJsb2NrUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0RERTkzMjFDREMwNTJEMDBGRDM0
OTEgLyogZHlsZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEUxNTFBODI1QjAwNDEy
M0ZGIC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwCmluZGV4IGY5N2FkNzhjMWFhNmY2MWY2NmE5YTY4YjJkZWEwMzViMWUxM2U2M2Iu
LjY5YmY2ZGY1ZjM4ODZkMWQxN2U1OTBkYWZhMzdmNmNiOWFjZjZkMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
cm9zc1RocmVhZENvcGllci5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgogCisjaW5jbHVkZSAiQ3Jvc3NUaHJl
YWRUYXNrLmgiCisKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBUZXN0IENyb3NzVGhyZWFkQ29waWVy
IHVzaW5nIENPTVBJTEVfQVNTRVJULgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZmYjdjZjI1YzE3YWE1MTc4Y2NkODM1NWRlYTk0ZmYwYTI1NmQ0YzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTAsMCArMSwxMDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgorY2xhc3MgQ3Jvc3NUaHJlYWRRdWV1
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRRdWV1ZSk7CitwdWJsaWM6
CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZSgpCisgICAgeworICAgIH0KKyAgICB+Q3Jvc3NUaHJlYWRR
dWV1ZSgpOworCisgICAgdm9pZCBhcHBlbmQoRGF0YVR5cGUmJik7CisKKyAgICBEYXRhVHlwZSB3
YWl0Rm9yTWVzc2FnZSgpOworICAgIERhdGFUeXBlIHRyeUdldE1lc3NhZ2UoKTsKKworICAgIGJv
b2wgaXNLaWxsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIG11
dGFibGUgTG9jayBtX2xvY2s7CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgIERlcXVl
PERhdGFUeXBlPiBtX3F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CitD
cm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6fkNyb3NzVGhyZWFkUXVldWUoKQoreworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSB2b2lkIENyb3NzVGhyZWFkUXVldWU8
RGF0YVR5cGU+OjphcHBlbmQoRGF0YVR5cGUmJiBtZXNzYWdlKQoreworICAgIExvY2tIb2xkZXIg
bG9jayhtX2xvY2spOworICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAg
IG1fY29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlw
ZT4KK2lubGluZSBhdXRvIENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2Fn
ZSgpIC0+IERhdGFUeXBlCit7CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisKKyAgICBh
dXRvIGZvdW5kID0gbV9xdWV1ZS5lbmQoKTsKKyAgICB3aGlsZSAoZm91bmQgPT0gbV9xdWV1ZS5l
bmQoKSkgeworICAgICAgICBmb3VuZCA9IG1fcXVldWUuYmVnaW4oKTsKKyAgICAgICAgaWYgKGZv
dW5kICE9IG1fcXVldWUuZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBzdGF0
aWMgZG91YmxlIGluZmluaXRlVGltZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCk7CisgICAgICAgIG1fY29uZGl0aW9uLndhaXRVbnRpbFdhbGxDbG9ja1NlY29uZHMobV9sb2Nr
LCBpbmZpbml0ZVRpbWUpOworICAgIH0KKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSBhdXRvIENyb3NzVGhy
ZWFkUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkgLT4gRGF0YVR5cGUKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKKworICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDcm9zc1RocmVhZFF1ZXVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2suaAppbmRleCBlOWMyYWI5MDRlMmU0MGEyNzEzMTBmMmIxNzg3N2Ey
MGEyYTU1NDU2Li5iYzM0MjVkMzBmMjJlNzE0ZjQwMmRlOGI1Y2QyNzA3OWM4YzkyYWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2suaApAQCAtMjcsMjYgKzI3LDM0IEBACiAKICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9zdGRsaWJleHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
IGNsYXNzIENyb3NzVGhyZWFkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NU
aHJlYWRUYXNrKTsKIHB1YmxpYzoKKyAgICBDcm9zc1RocmVhZFRhc2soKQorICAgIHsKKyAgICB9
CisKICAgICBDcm9zc1RocmVhZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2tGdW5jdGlvbikKICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlv
bikpCiAgICAgewogICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKICAgICB9CiAKKyAgICBD
cm9zc1RocmVhZFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpID0gZGVmYXVsdDsKKyAgICBDcm9zc1Ro
cmVhZFRhc2smIG9wZXJhdG9yPShDcm9zc1RocmVhZFRhc2smJikgPSBkZWZhdWx0OworCiAgICAg
dm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICBtX3Rhc2tGdW5jdGlvbigpOwogICAg
IH0KIAotcHJvdGVjdGVkOgotICAgIENyb3NzVGhyZWFkVGFzaygpIHsgfQorICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIChib29sKW1fdGFza0Z1bmN0aW9uOyB9CiAKK3Byb3RlY3Rl
ZDoKICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwogfTsK
IApAQCAtNzMsMzMgKzgxLDMzIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2so
CitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwK
ICAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENyb3NzVGhyZWFkVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0dXJuIENy
b3NzVGhyZWFkVGFza0ltcGw8VD4oJmNhbGxlZSwgbWV0aG9kKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVh
dGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2Qp
KE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDE+PigKKyAgICByZXR1cm4gQ3Jvc3NU
aHJlYWRUYXNrSW1wbDxULCBNUDE+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2Qs
CiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyKSwK
ICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwg
TVAyPj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDI+KAogICAg
ICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRD
b3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTA4LDE0ICsxMTYsMTQgQEAgc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRU
YXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6
Km1ldGhvZCkoTVAxLCBNUDIsIE1QMyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAg
Y29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwg
TVAzPj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4o
CiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9zc1Ro
cmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xMjQsMTMgKzEzMiwxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAogICAg
IGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFza1N0YXRpY0ltcGw8TVAxLCBNUDIsIE1QMz4+KAorICAgIHJldHVybiBDcm9z
c1RocmVhZFRhc2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+KAogICAgICAgICBtZXRob2QsCiAg
ICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAogICAg
ICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKQEAgLTEz
OCw3ICsxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShN
UDEsIE1QMiwgTVAzLCBNUDQpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTQ2LDcg
KzE1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKICAgICBjb25zdCBQNCYgcGFyYW1l
dGVyNCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QND4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QND4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhv
ZCwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSks
CkBAIC0xNTYsNyArMTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgTVA1Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBU
JiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUp
LAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTY1LDcgKzE3Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25z
dCBQNCYgcGFyYW1ldGVyNCwKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMs
IE1QNCwgTVA1Pj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDU+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTc2
LDcgKzE4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1Q
NSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwg
TVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAt
MTg2LDcgKzE5NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKICAgICBjb25zdCBQNiYg
cGFyYW1ldGVyNikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRh
c2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigKKyAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2PigKICAgICAg
ICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE5OCw3ICsyMDYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBl
bmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFt
ZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxLApAQCAtMjA5LDcgKzIxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKICAgICBj
b25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9z
c1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAor
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1
LCBNUDYsIE1QNz4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAg
V1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0yMjIsNyAr
MjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0
eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0eXBl
bmFtZSBQOCwgdHlwZW5hbWUgTVA4Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4g
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1Q
MywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApA
QCAtMjM0LDcgKzI0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywKICAgICBjb25zdCBQ
OCYgcGFyYW1ldGVyOCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVh
ZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4Pj4oCisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNiwgTVA3LCBNUDg+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcAppbmRleCA2NGVlOTMwNDRkMGFlMzA1NjgzM2YzM2EzNTk0NGM0
NGRkNTEzYTNjLi44M2YzNGVkZjljMDU5NjRmMGZkZDExNDUzZTkzMmMyNGE0NTk1ZjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAtNDA3LDggKzQwNywxMSBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6aGFuZGxlTWFpblRocmVhZFRhc2tzKCkKICAgICAgICAgcHJvdGVjdG9y
ID0gV1RGTW92ZShtX21haW5UaHJlYWRQcm90ZWN0b3IpOwogICAgIH0KIAotICAgIHdoaWxlIChh
dXRvIHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRNZXNzYWdlKCkpCi0gICAgICAgIHRh
c2stPnBlcmZvcm1UYXNrKCk7CisgICAgYXV0byB0YXNrID0gbV9tYWluVGhyZWFkUXVldWUudHJ5
R2V0TWVzc2FnZSgpOworICAgIHdoaWxlICh0YXNrLmlzVmFsaWQoKSkgeworICAgICAgICB0YXNr
LnBlcmZvcm1UYXNrKCk7CisgICAgICAgIHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRN
ZXNzYWdlKCk7CisgICAgfQogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0
YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCA4
ZmY2YTY2MDRjYmFiODc4ODM1NzA5NGRmMDRkZDliOTE0MzhjMDI5Li40ZDM3MGM5OTk2NGJmMGM0
ZWY3MDM0MDQwZjA3M2I3MDAxNmQxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiVHJhbnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFz
ay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlv
bnM7CiAgICAgTG9jayBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTG9jazsKIAotICAgIE1lc3NhZ2VR
dWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fbWFpblRocmVhZFF1ZXVlOworICAgIENyb3NzVGhyZWFk
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX21haW5UaHJlYWRRdWV1ZTsKICAgICBMb2NrIG1fbWFp
blRocmVhZFRhc2tMb2NrOwogICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fbWFp
blRocmVhZFByb3RlY3RvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDNkZTFlZjI5MTI0M2IxMDRhOTAx
ZWRiZDU0NjZhOTMzMjc2NzYzY2EuLjQyNGQxZDUwZTdlMTVmMWZmN2U4OTAyMzVkYzE5Nzk1MTVl
ZjM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludAogICAgIGNvbm5lY3Rpb24tPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJ
RCwgZGF0YWJhc2VOYW1lcyk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVy
Ojpwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURk1vdmUodGFz
aykpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0
YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUmVwbHlRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0
YXNrKSk7CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9v
cCgpCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9u
TG9jayk7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0YWJhc2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHdoaWxl
ICghbV9kYXRhYmFzZVF1ZXVlLmlzS2lsbGVkKCkpCisgICAgICAgIG1fZGF0YWJhc2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpoYW5k
bGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBAIC00NzgsOCArNDc4LDExIEBAIHZvaWQgSURC
U2VydmVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCiAgICAgICAgIG1fbWFpblRo
cmVhZFJlcGx5U2NoZWR1bGVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFz
ayA9IG1fZGF0YWJhc2VSZXBseVF1ZXVlLnRyeUdldE1lc3NhZ2UoKSkKLSAgICAgICAgdGFzay0+
cGVyZm9ybVRhc2soKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBs
eVF1ZXVlLnRyeUdldE1lc3NhZ2UoKTsKKyAgICB3aGlsZSAodGFzay5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgdGFzay5wZXJmb3JtVGFzaygpOworICAgICAgICB0YXNrID0gbV9kYXRhYmFzZVJlcGx5
UXVldWUudHJ5R2V0TWVzc2FnZSgpOworICAgIH0KIH0KIAogc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlRGVsZXRlQ2FsbGJhY2tJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMDc3MGMxYzAzZjZjNzJlNzg4N2JkYTMz
ODE2NzhlMWIwYmFkODI5MS4uNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3NjgwMTE2MGQ5YTEyMDky
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZy
YW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAgIHZvaWQgcG9zdERhdGFi
YXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVw
bHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CkBAIC0xMjQs
OCArMTI1LDggQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAg
ICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAotICAgIE1lc3Nh
Z2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAgICBNZXNzYWdlUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAgICBDcm9zc1RocmVh
ZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAgIENyb3NzVGhyZWFk
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKIAogICAgIEhhc2hN
YXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1fZGF0YWJhc2VDb25u
ZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKaW5kZXggZjBkNDcyNzc4NDY0YWQ5MzNlOGU2ZTExYTM3Y2QzYjkxZDcxNTA1MC4uMzEzZTQ1
NjNkM2MyYTNmODhjNGI4MDUyYzM4NjJjZDRlZGYyOTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkNvbXBsZXRlZChSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbgogICAg
ICAgICBpbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkVGFzaz4mJiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFz
ayhDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgbV9kYXRhYmFzZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MTQsNyAr
MTUxNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrCiAgICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2spKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYg
dGFzaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9z
c1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IG1fZGF0YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MjgsMTAg
KzE1MjgsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRh
c2soKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3F1ZXVlZFRh
c2tDb3VudCk7CiAKLSAgICBhdXRvIHRhc2sgPSBtX2RhdGFiYXNlUXVldWUudHJ5R2V0TWVzc2Fn
ZSgpOwotICAgIEFTU0VSVCh0YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0
YWJhc2VRdWV1ZS50cnlHZXRNZXNzYWdlKCk7CisgICAgQVNTRVJUKHRhc2suaXNWYWxpZCgpKTsK
IAotICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CisgICAgdGFzay5wZXJmb3JtVGFzaygpOwogICAg
IC0tbV9xdWV1ZWRUYXNrQ291bnQ7CiB9CiAKQEAgLTE1NDAsMTMgKzE1NDAsMTMgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSgpCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZWRUYXNrQ291bnQpOwogCi0g
ICAgYXV0byB0YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUudHJ5R2V0TWVzc2FnZSgpOwotICAg
IEFTU0VSVCh0YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBs
eVF1ZXVlLnRyeUdldE1lc3NhZ2UoKTsKKyAgICBBU1NFUlQodGFzay5pc1ZhbGlkKCkpOwogCiAg
ICAgLy8gUGVyZm9ybWluZyB0aGUgdGFzayBtaWdodCBlbmQgdXAgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIHRoaXMuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogCi0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrLnBlcmZv
cm1UYXNrKCk7CiAgICAgLS1tX3F1ZXVlZFRhc2tDb3VudDsKIAogICAgIC8vIElmIHRoaXMgZGF0
YWJhc2Ugd2FzIGZvcmNlIGNsb3NlZCAoZS5nLiBmb3IgYSB1c2VyIGRlbGV0ZSkgYW5kIHRoZXJl
IGFyZSBubyBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGU5NzAyNTY3MjAzZDQ3MmI3
YjkzZmJmZmUyMjBjOGRkN2Y0MDQwNDYuLmVhZTU0YjBkYmJkYjA1NmE2MDZiOWY1NjdhN2JjMzY4
NzEyYzM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBA
IC0xOTUsOCArMTk2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogCi0gICAgdm9pZCBwb3N0
RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZv
aWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
JiYpOworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAg
dm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQg
ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2soKTsKICAgICB2b2lkIGV4ZWN1dGVOZXh0RGF0YWJhc2VU
YXNrUmVwbHkoKTsKIApAQCAtMjQyLDggKzI0Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
ZGVsZXRlQmFja2luZ1N0b3JlSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiAKLSAgICBNZXNzYWdlUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7Ci0gICAgTWVzc2FnZVF1ZXVlPENy
b3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CisgICAgQ3Jvc3NUaHJlYWRRdWV1
ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVl
PENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CiAgICAgc3RkOjphdG9taWM8
dWludDY0X3Q+IG1fcXVldWVkVGFza0NvdW50IHsgMCB9OwogCiAgICAgYm9vbCBtX2hhcmRDbG9z
ZWRGb3JVc2VyRGVsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IGZlNzVkMjU1OWQzN2FiNDNkMDE2NGFkYWQ3NjRhMGY0NTQy
OGY4ZWYuLjA2NWEyODhlN2U1MTY5MmIyODhkNjM3MzNhNDE4ZWUyMzA2OTFiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTcyLDExICsxNzIs
OCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZv
aWQgcG9zdENyb3NzVGhyZWFkVGFzayhBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewot
ICAgICAgICBhdXRvIGNyb3NzVGhyZWFkVGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1
bWVudHMuLi4pOwotICAgICAgICBhdXRvKiByYXdUYXNrID0gY3Jvc3NUaHJlYWRUYXNrLnJlbGVh
c2UoKTsKLSAgICAgICAgcG9zdFRhc2soWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrKHJhd1Rhc2sp
OwotICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICAgICAgcG9zdFRhc2soW2Ny
b3NzVGhyZWFkVGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1bWVudHMuLi4pXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAgICAgICBjcm9zc1RocmVhZFRh
c2sucGVyZm9ybVRhc2soKTsKICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBmZjgxOTRlMGNm
Yjc1MzA1YWIzMzdjMWE1ZDc3NmU4ZDAyY2JkN2RiLi5kM2I1YWRkMTU4MDYzNWU3OWRhOTgwMmU3
YWNlZDIzNzQ1OTZjODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCbG9iVVJM
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtdXRleD4KKyNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC0xMDAsMTIgKzEwMSwxMiBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9y
aWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyBNZXNz
YWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJsZVF1ZXVlKCkKK3N0YXRpYyBDcm9z
c1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4mIHRocmVhZGFibGVRdWV1ZSgpCiB7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBNZXNzYWdlUXVldWU8
Q3Jvc3NUaHJlYWRUYXNrPiogcXVldWU7CisgICAgc3RhdGljIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPiogcXVldWU7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSAgICAgICAgcXVldWUgPSBuZXcgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz47CisgICAg
ICAgIHF1ZXVlID0gbmV3IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKICAgICB9
KTsKIAogICAgIHJldHVybiAqcXVldWU7CkBAIC0xNTksOSArMTYwLDkgQEAgdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBVUkwmIHVybCwKICAgICAgICAgdGhyZWFkYWJsZVF1ZXVlKCkuYXBwZW5kKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoKSk7CiAKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbXSB7Ci0gICAgICAgICAgICBhdXRvIHRhc2sgPSB0aHJlYWRhYmxl
UXVldWUoKS50cnlHZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICBBU1NFUlQodGFzayk7Ci0gICAg
ICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNr
IHRhc2sgPSB0aHJlYWRhYmxlUXVldWUoKS50cnlHZXRNZXNzYWdlKCk7CisgICAgICAgICAgICBB
U1NFUlQodGFzay5pc1ZhbGlkKCkpOworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygpOwog
ICAgICAgICB9KTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280121</attachid>
            <date>2016-05-30 22:55:28 -0700</date>
            <delta_ts>2016-05-30 23:17:25 -0700</delta_ts>
            <desc>EWS take two</desc>
            <filename>bug-158215-20160530225643.patch</filename>
            <type>text/plain</type>
            <size>29947</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjEwYWRkNzM5MGEzNjA5MDZmMGRlODExNmFhNTIyYTMzMWVlMGZl
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTYtMDUtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5jcHA6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg6IEFkZGVk
LiBBIGxpZ2h0d2VpZ2h0IG9mIE1lc3NhZ2VRdWV1ZSB0aGF0IGRlYWxzIGRpcmVjdGx5CisgICAg
ICAgICAgaW4gb2JqZWN0cyBpbnN0ZWFkIG9mIGluIHN0ZDo6dW5pcXVlX3B0cnMuCisgICAgICAg
IChXVEY6OkNyb3NzVGhyZWFkUXVldWU6OkNyb3NzVGhyZWFkUXVldWUpOgorICAgICAgICAoV1RG
OjpDcm9zc1RocmVhZFF1ZXVlOjppc0tpbGxlZCk6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFk
UXVldWU8RGF0YVR5cGU+Ojp+Q3Jvc3NUaHJlYWRRdWV1ZSk6CisgICAgICAgIChXVEY6OkNyb3Nz
VGhyZWFkUXVldWU8RGF0YVR5cGU+OjphcHBlbmQpOgorICAgICAgICAKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NU
aHJlYWRUYXNrKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrOjppc1ZhbGlkKToKKyAg
ICAgICAgKFdURjo6Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZDMyM2E1MzFjMmVm
ZDUwNzNjYTk0ZmU5MGNkM2RiZDZlMGFjYTFiLi45NjM2MDkxOWQ1ZjUyNjA4MGE2ZDFhY2UxZTU1
NTFjZTEwZTA0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDIgQEAKIDIwMTYtMDUtMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCkgZnVuY3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0
aGUgaGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWNjb3VudHMgZm9yIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IG5vIGxvbmdlciBiZWluZyBhIHRoaW5nLAorICAgICAgICBhcyB3ZWxsIGFzIGNoYW5naW5n
IE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+cyBpbnRvIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5OjpoYW5kbGVNYWluVGhyZWFkVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaDoKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZVJ1bkxvb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVz
T25NYWluVGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4dERhdGFiYXNl
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpl
eGVjdXRlTmV4dERhdGFiYXNlVGFza1JlcGx5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgCisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RDcm9zc1RocmVhZFRhc2spOgorICAgICAgICAKKyAgICAgICAgKiBmaWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFk
YWJsZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQ4MjY4ODE0MTFjNGMyMzEzZDQzNDYyODVlZmY4NTZjMTZjYTg0
NDkuLjVhZGUxZTllYTliN2M2YTMxN2E4MjA2NGY0N2ZlODZiNDIxYTZiMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCTUx
NUY3OTRFMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QjFDRkM5RjRBMDBD
Q0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MTVGNzk0RjFDRkM5RjRB
MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZENvcGllci5oICovOyB9OwogCQk1MTVGNzk1MDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi87IH07CisJ
CTUxNUY3OTU2MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk1NTFDRkQzQTY5MDBD
Q0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovOyB9OwogCQk1NTMwNzFDQTFDNDA0MjcyMDAz
ODQ4OTggLyogVGlueUxSVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmgg
Ki87IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEE5OTNGRjFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1i
b2xSZWdpc3RyeS5oICovOyB9OwpAQCAtNDI2LDYgKzQyNyw3IEBACiAJCTUxNUY3OTRCMUNGQzlG
NEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMg
LyogQ3Jvc3NUaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
b3NzVGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVGNzk1NTFD
RkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MDUsNiArODA3LDcgQEAKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyog
Q29uZGl0aW9uLmggKi8sCiAJCQkJNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhy
ZWFkQ29waWVyLmNwcCAqLywKIAkJCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRDb3BpZXIuaCAqLywKKwkJCQk1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRRdWV1ZS5oICovLAogCQkJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFRhc2suaCAqLywKIAkJCQlBOEE0NzI3MzE1MUE4MjVBMDA0MTIzRkYgLyogQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4QTQ3Mjc0MTUxQTgyNUEwMDQxMjNG
RiAvKiBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oICovLApAQCAtMTE4Miw2ICsxMTg1
LDcgQEAKIAkJCQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4QTE1MUE4MjVCMDA0MTIzRkYgLyogQml0bWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzM4QzE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5NDRGNDcxQzNEODgxNDAwNUJEMjhD
IC8qIEJsb2NrUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0RERTkzMjFDREMwNTJEMDBGRDM0
OTEgLyogZHlsZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEUxNTFBODI1QjAwNDEy
M0ZGIC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwCmluZGV4IGY5N2FkNzhjMWFhNmY2MWY2NmE5YTY4YjJkZWEwMzViMWUxM2U2M2Iu
LjY5YmY2ZGY1ZjM4ODZkMWQxN2U1OTBkYWZhMzdmNmNiOWFjZjZkMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
cm9zc1RocmVhZENvcGllci5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgogCisjaW5jbHVkZSAiQ3Jvc3NUaHJl
YWRUYXNrLmgiCisKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBUZXN0IENyb3NzVGhyZWFkQ29waWVy
IHVzaW5nIENPTVBJTEVfQVNTRVJULgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZmYjdjZjI1YzE3YWE1MTc4Y2NkODM1NWRlYTk0ZmYwYTI1NmQ0YzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTAsMCArMSwxMDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgorY2xhc3MgQ3Jvc3NUaHJlYWRRdWV1
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRRdWV1ZSk7CitwdWJsaWM6
CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZSgpCisgICAgeworICAgIH0KKyAgICB+Q3Jvc3NUaHJlYWRR
dWV1ZSgpOworCisgICAgdm9pZCBhcHBlbmQoRGF0YVR5cGUmJik7CisKKyAgICBEYXRhVHlwZSB3
YWl0Rm9yTWVzc2FnZSgpOworICAgIERhdGFUeXBlIHRyeUdldE1lc3NhZ2UoKTsKKworICAgIGJv
b2wgaXNLaWxsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIG11
dGFibGUgTG9jayBtX2xvY2s7CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgIERlcXVl
PERhdGFUeXBlPiBtX3F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CitD
cm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6fkNyb3NzVGhyZWFkUXVldWUoKQoreworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSB2b2lkIENyb3NzVGhyZWFkUXVldWU8
RGF0YVR5cGU+OjphcHBlbmQoRGF0YVR5cGUmJiBtZXNzYWdlKQoreworICAgIExvY2tIb2xkZXIg
bG9jayhtX2xvY2spOworICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAg
IG1fY29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlw
ZT4KK2lubGluZSBhdXRvIENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2Fn
ZSgpIC0+IERhdGFUeXBlCit7CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisKKyAgICBh
dXRvIGZvdW5kID0gbV9xdWV1ZS5lbmQoKTsKKyAgICB3aGlsZSAoZm91bmQgPT0gbV9xdWV1ZS5l
bmQoKSkgeworICAgICAgICBmb3VuZCA9IG1fcXVldWUuYmVnaW4oKTsKKyAgICAgICAgaWYgKGZv
dW5kICE9IG1fcXVldWUuZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBzdGF0
aWMgZG91YmxlIGluZmluaXRlVGltZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCk7CisgICAgICAgIG1fY29uZGl0aW9uLndhaXRVbnRpbFdhbGxDbG9ja1NlY29uZHMobV9sb2Nr
LCBpbmZpbml0ZVRpbWUpOworICAgIH0KKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSBhdXRvIENyb3NzVGhy
ZWFkUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkgLT4gRGF0YVR5cGUKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKKworICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDcm9zc1RocmVhZFF1ZXVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2suaAppbmRleCBlOWMyYWI5MDRlMmU0MGEyNzEzMTBmMmIxNzg3N2Ey
MGEyYTU1NDU2Li42OTBiNDhmYzgyNTFhN2M3ZWI1MDkyOTM4MWRiMWUzYmM4MDA5YjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2suaApAQCAtMjcsMjYgKzI3LDM0IEBACiAKICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
IGNsYXNzIENyb3NzVGhyZWFkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NU
aHJlYWRUYXNrKTsKIHB1YmxpYzoKKyAgICBDcm9zc1RocmVhZFRhc2soKQorICAgIHsKKyAgICB9
CisKICAgICBDcm9zc1RocmVhZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2tGdW5jdGlvbikKICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlv
bikpCiAgICAgewogICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKICAgICB9CiAKKyAgICBD
cm9zc1RocmVhZFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpID0gZGVmYXVsdDsKKyAgICBDcm9zc1Ro
cmVhZFRhc2smIG9wZXJhdG9yPShDcm9zc1RocmVhZFRhc2smJikgPSBkZWZhdWx0OworCiAgICAg
dm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICBtX3Rhc2tGdW5jdGlvbigpOwogICAg
IH0KIAotcHJvdGVjdGVkOgotICAgIENyb3NzVGhyZWFkVGFzaygpIHsgfQorICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIChib29sKW1fdGFza0Z1bmN0aW9uOyB9CiAKK3Byb3RlY3Rl
ZDoKICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwogfTsK
IApAQCAtNzMsMzMgKzgxLDMzIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2so
CitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwK
ICAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENyb3NzVGhyZWFkVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0dXJuIENy
b3NzVGhyZWFkVGFza0ltcGw8VD4oJmNhbGxlZSwgbWV0aG9kKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVh
dGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2Qp
KE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDE+PigKKyAgICByZXR1cm4gQ3Jvc3NU
aHJlYWRUYXNrSW1wbDxULCBNUDE+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2Qs
CiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlw
ZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyKSwK
ICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwg
TVAyPj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDI+KAogICAg
ICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRD
b3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTA4LDE0ICsxMTYsMTQgQEAgc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQ
MiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRU
YXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6
Km1ldGhvZCkoTVAxLCBNUDIsIE1QMyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAg
Y29uc3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwg
TVAzPj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4o
CiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9zc1Ro
cmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xMjQsMTMgKzEzMiwxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAog
ICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAogICAg
IGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkVGFza1N0YXRpY0ltcGw8TVAxLCBNUDIsIE1QMz4+KAorICAgIHJldHVybiBDcm9z
c1RocmVhZFRhc2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+KAogICAgICAgICBtZXRob2QsCiAg
ICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAogICAg
ICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKQEAgLTEz
OCw3ICsxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFt
ZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShN
UDEsIE1QMiwgTVAzLCBNUDQpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTQ2LDcg
KzE1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKICAgICBjb25zdCBQNCYgcGFyYW1l
dGVyNCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QND4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QND4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhv
ZCwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSks
CkBAIC0xNTYsNyArMTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlw
ZW5hbWUgTVA1Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBU
JiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUp
LAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTY1LDcgKzE3Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25z
dCBQNCYgcGFyYW1ldGVyNCwKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMs
IE1QNCwgTVA1Pj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDU+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTc2
LDcgKzE4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVu
YW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1l
IE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1Q
NSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwg
TVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAt
MTg2LDcgKzE5NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKICAgICBjb25zdCBQNiYg
cGFyYW1ldGVyNikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRh
c2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigKKyAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2PigKICAgICAg
ICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29w
aWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE5OCw3ICsyMDYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBl
bmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFt
ZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0
ZXIxLApAQCAtMjA5LDcgKzIxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKICAgICBj
b25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9z
c1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAor
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1
LCBNUDYsIE1QNz4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAg
V1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0yMjIsNyAr
MjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUg
TVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAz
LCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0
eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0eXBl
bmFtZSBQOCwgdHlwZW5hbWUgTVA4Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4g
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1Q
MywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApA
QCAtMjM0LDcgKzI0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywKICAgICBjb25zdCBQ
OCYgcGFyYW1ldGVyOCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVh
ZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4Pj4oCisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNiwgTVA3LCBNUDg+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcAppbmRleCA2NGVlOTMwNDRkMGFlMzA1NjgzM2YzM2EzNTk0NGM0
NGRkNTEzYTNjLi44M2YzNGVkZjljMDU5NjRmMGZkZDExNDUzZTkzMmMyNGE0NTk1ZjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAtNDA3LDggKzQwNywxMSBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6aGFuZGxlTWFpblRocmVhZFRhc2tzKCkKICAgICAgICAgcHJvdGVjdG9y
ID0gV1RGTW92ZShtX21haW5UaHJlYWRQcm90ZWN0b3IpOwogICAgIH0KIAotICAgIHdoaWxlIChh
dXRvIHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRNZXNzYWdlKCkpCi0gICAgICAgIHRh
c2stPnBlcmZvcm1UYXNrKCk7CisgICAgYXV0byB0YXNrID0gbV9tYWluVGhyZWFkUXVldWUudHJ5
R2V0TWVzc2FnZSgpOworICAgIHdoaWxlICh0YXNrLmlzVmFsaWQoKSkgeworICAgICAgICB0YXNr
LnBlcmZvcm1UYXNrKCk7CisgICAgICAgIHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRN
ZXNzYWdlKCk7CisgICAgfQogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0
YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCA4
ZmY2YTY2MDRjYmFiODc4ODM1NzA5NGRmMDRkZDliOTE0MzhjMDI5Li40ZDM3MGM5OTk2NGJmMGM0
ZWY3MDM0MDQwZjA3M2I3MDAxNmQxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiVHJhbnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1
ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFz
ay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlv
bnM7CiAgICAgTG9jayBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTG9jazsKIAotICAgIE1lc3NhZ2VR
dWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fbWFpblRocmVhZFF1ZXVlOworICAgIENyb3NzVGhyZWFk
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX21haW5UaHJlYWRRdWV1ZTsKICAgICBMb2NrIG1fbWFp
blRocmVhZFRhc2tMb2NrOwogICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fbWFp
blRocmVhZFByb3RlY3RvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDNkZTFlZjI5MTI0M2IxMDRhOTAx
ZWRiZDU0NjZhOTMzMjc2NzYzY2EuLjQyNGQxZDUwZTdlMTVmMWZmN2U4OTAyMzVkYzE5Nzk1MTVl
ZjM5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6
ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludAogICAgIGNvbm5lY3Rpb24tPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJ
RCwgZGF0YWJhc2VOYW1lcyk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVy
Ojpwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURk1vdmUodGFz
aykpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0
YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUmVwbHlRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0
YXNrKSk7CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9v
cCgpCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9u
TG9jayk7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0YWJhc2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHdoaWxl
ICghbV9kYXRhYmFzZVF1ZXVlLmlzS2lsbGVkKCkpCisgICAgICAgIG1fZGF0YWJhc2VRdWV1ZS53
YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpoYW5k
bGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBAIC00NzgsOCArNDc4LDExIEBAIHZvaWQgSURC
U2VydmVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCiAgICAgICAgIG1fbWFpblRo
cmVhZFJlcGx5U2NoZWR1bGVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFz
ayA9IG1fZGF0YWJhc2VSZXBseVF1ZXVlLnRyeUdldE1lc3NhZ2UoKSkKLSAgICAgICAgdGFzay0+
cGVyZm9ybVRhc2soKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBs
eVF1ZXVlLnRyeUdldE1lc3NhZ2UoKTsKKyAgICB3aGlsZSAodGFzay5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgdGFzay5wZXJmb3JtVGFzaygpOworICAgICAgICB0YXNrID0gbV9kYXRhYmFzZVJlcGx5
UXVldWUudHJ5R2V0TWVzc2FnZSgpOworICAgIH0KIH0KIAogc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlRGVsZXRlQ2FsbGJhY2tJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMDc3MGMxYzAzZjZjNzJlNzg4N2JkYTMz
ODE2NzhlMWIwYmFkODI5MS4uNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3NjgwMTE2MGQ5YTEyMDky
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZy
YW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAgIHZvaWQgcG9zdERhdGFi
YXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVw
bHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVj
dGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJE
YXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CkBAIC0xMjQs
OCArMTI1LDggQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAg
ICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAotICAgIE1lc3Nh
Z2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAgICBNZXNzYWdlUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAgICBDcm9zc1RocmVh
ZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAgIENyb3NzVGhyZWFk
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKIAogICAgIEhhc2hN
YXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1fZGF0YWJhc2VDb25u
ZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKaW5kZXggZjBkNDcyNzc4NDY0YWQ5MzNlOGU2ZTExYTM3Y2QzYjkxZDcxNTA1MC4uMzEzZTQ1
NjNkM2MyYTNmODhjNGI4MDUyYzM4NjJjZDRlZGYyOTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkNvbXBsZXRlZChSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbgogICAg
ICAgICBpbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkVGFzaz4mJiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFz
ayhDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgbV9kYXRhYmFzZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MTQsNyAr
MTUxNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrCiAgICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2spKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYg
dGFzaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9z
c1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IG1fZGF0YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MjgsMTAg
KzE1MjgsMTAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRh
c2soKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3F1ZXVlZFRh
c2tDb3VudCk7CiAKLSAgICBhdXRvIHRhc2sgPSBtX2RhdGFiYXNlUXVldWUudHJ5R2V0TWVzc2Fn
ZSgpOwotICAgIEFTU0VSVCh0YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0
YWJhc2VRdWV1ZS50cnlHZXRNZXNzYWdlKCk7CisgICAgQVNTRVJUKHRhc2suaXNWYWxpZCgpKTsK
IAotICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CisgICAgdGFzay5wZXJmb3JtVGFzaygpOwogICAg
IC0tbV9xdWV1ZWRUYXNrQ291bnQ7CiB9CiAKQEAgLTE1NDAsMTMgKzE1NDAsMTMgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSgpCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZWRUYXNrQ291bnQpOwogCi0g
ICAgYXV0byB0YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUudHJ5R2V0TWVzc2FnZSgpOwotICAg
IEFTU0VSVCh0YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBs
eVF1ZXVlLnRyeUdldE1lc3NhZ2UoKTsKKyAgICBBU1NFUlQodGFzay5pc1ZhbGlkKCkpOwogCiAg
ICAgLy8gUGVyZm9ybWluZyB0aGUgdGFzayBtaWdodCBlbmQgdXAgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIHRoaXMuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogCi0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrLnBlcmZv
cm1UYXNrKCk7CiAgICAgLS1tX3F1ZXVlZFRhc2tDb3VudDsKIAogICAgIC8vIElmIHRoaXMgZGF0
YWJhc2Ugd2FzIGZvcmNlIGNsb3NlZCAoZS5nLiBmb3IgYSB1c2VyIGRlbGV0ZSkgYW5kIHRoZXJl
IGFyZSBubyBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGU5NzAyNTY3MjAzZDQ3MmI3
YjkzZmJmZmUyMjBjOGRkN2Y0MDQwNDYuLmVhZTU0YjBkYmJkYjA1NmE2MDZiOWY1NjdhN2JjMzY4
NzEyYzM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBA
IC0xOTUsOCArMTk2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogCi0gICAgdm9pZCBwb3N0
RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZv
aWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
JiYpOworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAg
dm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQg
ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2soKTsKICAgICB2b2lkIGV4ZWN1dGVOZXh0RGF0YWJhc2VU
YXNrUmVwbHkoKTsKIApAQCAtMjQyLDggKzI0Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1f
ZGVsZXRlQmFja2luZ1N0b3JlSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiAKLSAgICBNZXNzYWdlUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7Ci0gICAgTWVzc2FnZVF1ZXVlPENy
b3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CisgICAgQ3Jvc3NUaHJlYWRRdWV1
ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVl
PENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CiAgICAgc3RkOjphdG9taWM8
dWludDY0X3Q+IG1fcXVldWVkVGFza0NvdW50IHsgMCB9OwogCiAgICAgYm9vbCBtX2hhcmRDbG9z
ZWRGb3JVc2VyRGVsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IGZlNzVkMjU1OWQzN2FiNDNkMDE2NGFkYWQ3NjRhMGY0NTQy
OGY4ZWYuLjA2NWEyODhlN2U1MTY5MmIyODhkNjM3MzNhNDE4ZWUyMzA2OTFiYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTcyLDExICsxNzIs
OCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZv
aWQgcG9zdENyb3NzVGhyZWFkVGFzayhBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewot
ICAgICAgICBhdXRvIGNyb3NzVGhyZWFkVGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1
bWVudHMuLi4pOwotICAgICAgICBhdXRvKiByYXdUYXNrID0gY3Jvc3NUaHJlYWRUYXNrLnJlbGVh
c2UoKTsKLSAgICAgICAgcG9zdFRhc2soWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrKHJhd1Rhc2sp
OwotICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICAgICAgcG9zdFRhc2soW2Ny
b3NzVGhyZWFkVGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1bWVudHMuLi4pXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAgICAgICBjcm9zc1RocmVhZFRh
c2sucGVyZm9ybVRhc2soKTsKICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBmZjgxOTRlMGNm
Yjc1MzA1YWIzMzdjMWE1ZDc3NmU4ZDAyY2JkN2RiLi5kM2I1YWRkMTU4MDYzNWU3OWRhOTgwMmU3
YWNlZDIzNzQ1OTZjODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCbG9iVVJM
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtdXRleD4KKyNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRh
c2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC0xMDAsMTIgKzEwMSwxMiBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9y
aWdpbk1hcD4mIG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyBNZXNz
YWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJsZVF1ZXVlKCkKK3N0YXRpYyBDcm9z
c1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4mIHRocmVhZGFibGVRdWV1ZSgpCiB7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBNZXNzYWdlUXVldWU8
Q3Jvc3NUaHJlYWRUYXNrPiogcXVldWU7CisgICAgc3RhdGljIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPiogcXVldWU7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsK
LSAgICAgICAgcXVldWUgPSBuZXcgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz47CisgICAg
ICAgIHF1ZXVlID0gbmV3IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKICAgICB9
KTsKIAogICAgIHJldHVybiAqcXVldWU7CkBAIC0xNTksOSArMTYwLDkgQEAgdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25z
dCBVUkwmIHVybCwKICAgICAgICAgdGhyZWFkYWJsZVF1ZXVlKCkuYXBwZW5kKGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoKSk7CiAKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbXSB7Ci0gICAgICAgICAgICBhdXRvIHRhc2sgPSB0aHJlYWRhYmxl
UXVldWUoKS50cnlHZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICBBU1NFUlQodGFzayk7Ci0gICAg
ICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNr
IHRhc2sgPSB0aHJlYWRhYmxlUXVldWUoKS50cnlHZXRNZXNzYWdlKCk7CisgICAgICAgICAgICBB
U1NFUlQodGFzay5pc1ZhbGlkKCkpOworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygpOwog
ICAgICAgICB9KTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280122</attachid>
            <date>2016-05-30 23:17:30 -0700</date>
            <delta_ts>2016-05-31 09:38:30 -0700</delta_ts>
            <desc>EWS take three</desc>
            <filename>bug-158215-20160530231845.patch</filename>
            <type>text/plain</type>
            <size>33475</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjEwYWRkNzM5MGEzNjA5MDZmMGRlODExNmFhNTIyYTMzMWVlMGZl
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIwMTYtMDUtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGll
ci5jcHA6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg6IEFkZGVk
LiBBIGxpZ2h0d2VpZ2h0IG9mIE1lc3NhZ2VRdWV1ZSB0aGF0IGRlYWxzIGRpcmVjdGx5CisgICAg
ICAgICAgaW4gb2JqZWN0cyBpbnN0ZWFkIG9mIGluIHN0ZDo6dW5pcXVlX3B0cnMuCisgICAgICAg
IChXVEY6OkNyb3NzVGhyZWFkUXVldWU6OkNyb3NzVGhyZWFkUXVldWUpOgorICAgICAgICAoV1RG
OjpDcm9zc1RocmVhZFF1ZXVlOjppc0tpbGxlZCk6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFk
UXVldWU8RGF0YVR5cGU+Ojp+Q3Jvc3NUaHJlYWRRdWV1ZSk6CisgICAgICAgIChXVEY6OkNyb3Nz
VGhyZWFkUXVldWU8RGF0YVR5cGU+OjphcHBlbmQpOgorICAgICAgICAKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NU
aHJlYWRUYXNrKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrOjppc1ZhbGlkKToKKyAg
ICAgICAgKFdURjo6Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZDMyM2E1MzFjMmVm
ZDUwNzNjYTk0ZmU5MGNkM2RiZDZlMGFjYTFiLi45NjM2MDkxOWQ1ZjUyNjA4MGE2ZDFhY2UxZTU1
NTFjZTEwZTA0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDIgQEAKIDIwMTYtMDUtMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCkgZnVuY3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0
aGUgaGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWNjb3VudHMgZm9yIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IG5vIGxvbmdlciBiZWluZyBhIHRoaW5nLAorICAgICAgICBhcyB3ZWxsIGFzIGNoYW5naW5n
IE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+cyBpbnRvIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5OjpoYW5kbGVNYWluVGhyZWFkVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaDoKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZVJ1bkxvb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVz
T25NYWluVGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4dERhdGFiYXNl
VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpl
eGVjdXRlTmV4dERhdGFiYXNlVGFza1JlcGx5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgCisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RDcm9zc1RocmVhZFRhc2spOgorICAgICAgICAKKyAgICAgICAgKiBmaWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFk
YWJsZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKToKKworMjAxNi0wNS0zMCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENv
cGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNTk1MWNhN2MzMTZk
ZGJjNGVkYzdlNDkyODY1ZmIyZmViNjljNmUxLi44NmUzNzViNDNjZWVjMDE2NzNmOGE0OWYxZjkx
MTQyZjFhNGZlOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTYtMDUtMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCkgZnVuY3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0
aGUgaGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFiYXNlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIERhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKworMjAxNi0wNS0zMCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgTW92ZSBDcm9zc1RocmVhZENvcGllci9Dcm9z
c1RocmVhZFRhc2sgdG8gV1RGLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjA3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQ4MjY4ODE0MTFjNGMyMzEzZDQzNDYyODVlZmY4NTZjMTZjYTg0NDkuLjVhZGUx
ZTllYTliN2M2YTMxN2E4MjA2NGY0N2ZlODZiNDIxYTZiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCTUxNUY3OTRFMUNG
QzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyog
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovOyB9OwogCQk1MTVGNzk0RjFDRkM5RjRBMDBDQ0VEOTMg
LyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGll
ci5oICovOyB9OwogCQk1MTVGNzk1MDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0
RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi87IH07CisJCTUxNUY3OTU2
MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyog
Q3Jvc3NUaHJlYWRRdWV1ZS5oICovOyB9OwogCQk1NTMwNzFDQTFDNDA0MjcyMDAzODQ4OTggLyog
VGlueUxSVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi87IH07CiAJ
CTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBG
QTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEE5OTNGRjFBRDcxNTEzMDBG
QTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3Ry
eS5oICovOyB9OwpAQCAtNDI2LDYgKzQyNyw3IEBACiAJCTUxNUY3OTRCMUNGQzlGNEEwMENDRUQ5
MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVGNzk1NTFDRkQzQTY5MDBD
Q0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDcm9zc1RocmVhZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MDUsNiArODA3LDcgQEAKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9u
LmggKi8sCiAJCQkJNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVy
LmNwcCAqLywKIAkJCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaCAqLywKKwkJCQk1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1
ZS5oICovLAogCQkJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2su
aCAqLywKIAkJCQlBOEE0NzI3MzE1MUE4MjVBMDA0MTIzRkYgLyogQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4QTQ3Mjc0MTUxQTgyNUEwMDQxMjNGRiAvKiBDcnlw
dG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oICovLApAQCAtMTE4Miw2ICsxMTg1LDcgQEAKIAkJ
CQlBOEE0NzQ1MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzM4QTE1MUE4MjVCMDA0MTIzRkYgLyogQml0bWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzM4QzE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5NDRGNDcxQzNEODgxNDAwNUJEMjhDIC8qIEJsb2Nr
UHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0RERTkzMjFDREMwNTJEMDBGRDM0OTEgLyogZHls
ZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEUxNTFBODI1QjAwNDEyM0ZGIC8qIEJs
b2NrU3RhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3Bw
CmluZGV4IGY5N2FkNzhjMWFhNmY2MWY2NmE5YTY4YjJkZWEwMzViMWUxM2U2M2IuLjY5YmY2ZGY1
ZjM4ODZkMWQxN2U1OTBkYWZhMzdmNmNiOWFjZjZkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZENvcGllci5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDcm9zc1RocmVhZENvcGllci5oIgogCisjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgi
CisKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBUZXN0IENyb3NzVGhyZWFkQ29waWVyIHVzaW5nIENP
TVBJTEVfQVNTRVJULgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1
ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYjdj
ZjI1YzE3YWE1MTc4Y2NkODM1NWRlYTk0ZmYwYTI1NmQ0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgorY2xhc3MgQ3Jvc3NUaHJlYWRRdWV1ZSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRRdWV1ZSk7CitwdWJsaWM6CisgICAgQ3Jv
c3NUaHJlYWRRdWV1ZSgpCisgICAgeworICAgIH0KKyAgICB+Q3Jvc3NUaHJlYWRRdWV1ZSgpOwor
CisgICAgdm9pZCBhcHBlbmQoRGF0YVR5cGUmJik7CisKKyAgICBEYXRhVHlwZSB3YWl0Rm9yTWVz
c2FnZSgpOworICAgIERhdGFUeXBlIHRyeUdldE1lc3NhZ2UoKTsKKworICAgIGJvb2wgaXNLaWxs
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIG11dGFibGUgTG9j
ayBtX2xvY2s7CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgIERlcXVlPERhdGFUeXBl
PiBtX3F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CitDcm9zc1RocmVh
ZFF1ZXVlPERhdGFUeXBlPjo6fkNyb3NzVGhyZWFkUXVldWUoKQoreworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSB2b2lkIENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+
OjphcHBlbmQoRGF0YVR5cGUmJiBtZXNzYWdlKQoreworICAgIExvY2tIb2xkZXIgbG9jayhtX2xv
Y2spOworICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIG1fY29uZGl0
aW9uLm5vdGlmeU9uZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGlu
ZSBhdXRvIENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2FnZSgpIC0+IERh
dGFUeXBlCit7CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisKKyAgICBhdXRvIGZvdW5k
ID0gbV9xdWV1ZS5lbmQoKTsKKyAgICB3aGlsZSAoZm91bmQgPT0gbV9xdWV1ZS5lbmQoKSkgewor
ICAgICAgICBmb3VuZCA9IG1fcXVldWUuYmVnaW4oKTsKKyAgICAgICAgaWYgKGZvdW5kICE9IG1f
cXVldWUuZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBzdGF0aWMgZG91Ymxl
IGluZmluaXRlVGltZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7CisgICAg
ICAgIG1fY29uZGl0aW9uLndhaXRVbnRpbFdhbGxDbG9ja1NlY29uZHMobV9sb2NrLCBpbmZpbml0
ZVRpbWUpOworICAgIH0KKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2lubGluZSBhdXRvIENyb3NzVGhyZWFkUXVldWU8
RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkgLT4gRGF0YVR5cGUKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2sobV9sb2NrKTsKKworICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDcm9zc1RocmVhZFF1ZXVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1Ro
cmVhZFRhc2suaAppbmRleCBlOWMyYWI5MDRlMmU0MGEyNzEzMTBmMmIxNzg3N2EyMGEyYTU1NDU2
Li42OTBiNDhmYzgyNTFhN2M3ZWI1MDkyOTM4MWRiMWUzYmM4MDA5YjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9z
c1RocmVhZFRhc2suaApAQCAtMjcsMjYgKzI3LDM0IEBACiAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5jdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIENy
b3NzVGhyZWFkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRUYXNr
KTsKIHB1YmxpYzoKKyAgICBDcm9zc1RocmVhZFRhc2soKQorICAgIHsKKyAgICB9CisKICAgICBD
cm9zc1RocmVhZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2tGdW5jdGlv
bikKICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlvbikpCiAgICAg
ewogICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKICAgICB9CiAKKyAgICBDcm9zc1RocmVh
ZFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpID0gZGVmYXVsdDsKKyAgICBDcm9zc1RocmVhZFRhc2sm
IG9wZXJhdG9yPShDcm9zc1RocmVhZFRhc2smJikgPSBkZWZhdWx0OworCiAgICAgdm9pZCBwZXJm
b3JtVGFzaygpCiAgICAgewogICAgICAgICBtX3Rhc2tGdW5jdGlvbigpOwogICAgIH0KIAotcHJv
dGVjdGVkOgotICAgIENyb3NzVGhyZWFkVGFzaygpIHsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIChib29sKW1fdGFza0Z1bmN0aW9uOyB9CiAKK3Byb3RlY3RlZDoKICAgICBO
b25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwogfTsKIApAQCAtNzMs
MzMgKzgxLDMzIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1Ro
cmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lk
IChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhy
ZWFkVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFk
VGFza0ltcGw8VD4oJmNhbGxlZSwgbWV0aG9kKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSksCiAg
ICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDE+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNr
SW1wbDxULCBNUDE+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAg
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIE1QMj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAg
ICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyKSwKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyPj4oCisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDI+KAogICAgICAgICAmY2Fs
bGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+
Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTA4LDE0ICsxMTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5h
bWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCko
TVAxLCBNUDIsIE1QMyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29uc3QgUDIm
IHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzPj4oCisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4oCiAgICAgICAg
ICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xMjQsMTMgKzEzMiwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAogICAgIGNvbnN0
IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAz
JiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFk
VGFza1N0YXRpY0ltcGw8TVAxLCBNUDIsIE1QMz4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRh
c2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+KAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAogICAgICAgICBXVEY6
OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKQEAgLTEzOCw3ICsxNDYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRh
c2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEs
IHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5
cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwg
TVAzLCBNUDQpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTQ2LDcgKzE1NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygK
ICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKICAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwg
TVAyLCBNUDMsIE1QND4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwg
TVAyLCBNUDMsIE1QND4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAg
ICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xNTYs
NyArMTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUs
CiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAogICAgIGNv
bnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTY1LDcgKzE3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNCYgcGFy
YW1ldGVyNCwKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1
Pj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDU+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTc2LDcgKzE4NCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlw
ZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5h
bWUgUDYsIHR5cGVuYW1lIE1QNj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRh
c2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMs
IE1QNCwgTVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTg2LDcgKzE5
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKICAgICBjb25zdCBQNiYgcGFyYW1ldGVy
NikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQs
IE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRU
YXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2PigKICAgICAgICAgJmNhbGxl
ZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6
Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE5OCw3ICsyMDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQs
IHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5
cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwg
TVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAt
MjA5LDcgKzIxNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKICAgICBjb25zdCBQNyYg
cGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRh
c2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAorICAgIHJldHVy
biBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1Q
Nz4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0yMjIsNyArMjMwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFt
ZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQ
NiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0eXBlbmFtZSBQOCwg
dHlwZW5hbWUgTVA4Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAg
ICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUsIE1QNiwgTVA3LCBNUDgpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMjM0LDcg
KzI0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywKICAgICBjb25zdCBQOCYgcGFyYW1l
dGVyOCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4Pj4oCisgICAgcmV0dXJu
IENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3
LCBNUDg+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blByb3h5LmNwcAppbmRleCA2NGVlOTMwNDRkMGFlMzA1NjgzM2YzM2EzNTk0NGM0NGRkNTEzYTNj
Li44M2YzNGVkZjljMDU5NjRmMGZkZDExNDUzZTkzMmMyNGE0NTk1ZjMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblByb3h5LmNwcApAQCAtNDA3LDggKzQwNywxMSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Q
cm94eTo6aGFuZGxlTWFpblRocmVhZFRhc2tzKCkKICAgICAgICAgcHJvdGVjdG9yID0gV1RGTW92
ZShtX21haW5UaHJlYWRQcm90ZWN0b3IpOwogICAgIH0KIAotICAgIHdoaWxlIChhdXRvIHRhc2sg
PSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRNZXNzYWdlKCkpCi0gICAgICAgIHRhc2stPnBlcmZv
cm1UYXNrKCk7CisgICAgYXV0byB0YXNrID0gbV9tYWluVGhyZWFkUXVldWUudHJ5R2V0TWVzc2Fn
ZSgpOworICAgIHdoaWxlICh0YXNrLmlzVmFsaWQoKSkgeworICAgICAgICB0YXNrLnBlcmZvcm1U
YXNrKCk7CisgICAgICAgIHRhc2sgPSBtX21haW5UaHJlYWRRdWV1ZS50cnlHZXRNZXNzYWdlKCk7
CisgICAgfQogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpPiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCA4ZmY2YTY2MDRj
YmFiODc4ODM1NzA5NGRmMDRkZDliOTE0MzhjMDI5Li40ZDM3MGM5OTk2NGJmMGM0ZWY3MDM0MDQw
ZjA3M2I3MDAxNmQxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE1
Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlvbnM7CiAgICAg
TG9jayBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTG9jazsKIAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9z
c1RocmVhZFRhc2s+IG1fbWFpblRocmVhZFF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPiBtX21haW5UaHJlYWRRdWV1ZTsKICAgICBMb2NrIG1fbWFpblRocmVhZFRh
c2tMb2NrOwogICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fbWFpblRocmVhZFBy
b3RlY3RvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDNkZTFlZjI5MTI0M2IxMDRhOTAxZWRiZDU0NjZh
OTMzMjc2NzYzY2EuLjQyNGQxZDUwZTdlMTVmMWZmN2U4OTAyMzVkYzE5Nzk1MTVlZjM5ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6ZGlkR2V0QWxs
RGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludAog
ICAgIGNvbm5lY3Rpb24tPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJh
c2VOYW1lcyk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0
YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQog
Ci12b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNr
UmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBtX2RhdGFiYXNlUmVwbHlRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CkBA
IC00NjcsOCArNDY3LDggQEAgdm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCgpCiAgICAg
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9uTG9jayk7CiAg
ICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0YWJhc2VRdWV1ZS53YWl0Rm9yTWVz
c2FnZSgpKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHdoaWxlICghbV9kYXRh
YmFzZVF1ZXVlLmlzS2lsbGVkKCkpCisgICAgICAgIG1fZGF0YWJhc2VRdWV1ZS53YWl0Rm9yTWVz
c2FnZSgpLnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpoYW5kbGVUYXNrUmVw
bGllc09uTWFpblRocmVhZCgpCkBAIC00NzgsOCArNDc4LDExIEBAIHZvaWQgSURCU2VydmVyOjpo
YW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCiAgICAgICAgIG1fbWFpblRocmVhZFJlcGx5
U2NoZWR1bGVkID0gZmFsc2U7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0
YWJhc2VSZXBseVF1ZXVlLnRyeUdldE1lc3NhZ2UoKSkKLSAgICAgICAgdGFzay0+cGVyZm9ybVRh
c2soKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBseVF1ZXVlLnRy
eUdldE1lc3NhZ2UoKTsKKyAgICB3aGlsZSAodGFzay5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdGFz
ay5wZXJmb3JtVGFzaygpOworICAgICAgICB0YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUudHJ5
R2V0TWVzc2FnZSgpOworICAgIH0KIH0KIAogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRGVsZXRl
Q2FsbGJhY2tJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMDc3MGMxYzAzZjZjNzJlNzg4N2JkYTMzODE2NzhlMWIw
YmFkODI5MS4uNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3NjgwMTE2MGQ5YTEyMDkyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNs
dWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhD
cm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NU
aHJlYWRUYXNrJiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNv
bm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CkBAIC0xMjQsOCArMTI1LDgg
QEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1f
bWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxD
cm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAgICBNZXNzYWdlUXVldWU8Q3Jvc3NU
aHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVlPENy
b3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jv
c3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1fZGF0YWJhc2VDb25uZWN0aW9uczsK
ICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXgg
ZjBkNDcyNzc4NDY0YWQ5MzNlOGU2ZTExYTM3Y2QzYjkxZDcxNTA1MC4uMzEzZTQ1NjNkM2MyYTNm
ODhjNGI4MDUyYzM4NjJjZDRlZGYyOTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBA
IC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNv
bXBsZXRlZChSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbgogICAgICAgICBpbnZv
a2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4m
JiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayhDcm9zc1Ro
cmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9k
YXRhYmFzZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MTQsNyArMTUxNCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrCiAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5l
eHREYXRhYmFzZVRhc2spKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFi
YXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRh
c2smJiB0YXNrKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGF0YWJh
c2VSZXBseVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MjgsMTAgKzE1MjgsMTAg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2soKQogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3F1ZXVlZFRhc2tDb3VudCk7
CiAKLSAgICBhdXRvIHRhc2sgPSBtX2RhdGFiYXNlUXVldWUudHJ5R2V0TWVzc2FnZSgpOwotICAg
IEFTU0VSVCh0YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VRdWV1
ZS50cnlHZXRNZXNzYWdlKCk7CisgICAgQVNTRVJUKHRhc2suaXNWYWxpZCgpKTsKIAotICAgIHRh
c2stPnBlcmZvcm1UYXNrKCk7CisgICAgdGFzay5wZXJmb3JtVGFzaygpOwogICAgIC0tbV9xdWV1
ZWRUYXNrQ291bnQ7CiB9CiAKQEAgLTE1NDAsMTMgKzE1NDAsMTMgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSgpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZWRUYXNrQ291bnQpOwogCi0gICAgYXV0byB0
YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUudHJ5R2V0TWVzc2FnZSgpOwotICAgIEFTU0VSVCh0
YXNrKTsKKyAgICBDcm9zc1RocmVhZFRhc2sgdGFzayA9IG1fZGF0YWJhc2VSZXBseVF1ZXVlLnRy
eUdldE1lc3NhZ2UoKTsKKyAgICBBU1NFUlQodGFzay5pc1ZhbGlkKCkpOwogCiAgICAgLy8gUGVy
Zm9ybWluZyB0aGUgdGFzayBtaWdodCBlbmQgdXAgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNl
IHRvIHRoaXMuCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogCi0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrLnBlcmZvcm1UYXNrKCk7
CiAgICAgLS1tX3F1ZXVlZFRhc2tDb3VudDsKIAogICAgIC8vIElmIHRoaXMgZGF0YWJhc2Ugd2Fz
IGZvcmNlIGNsb3NlZCAoZS5nLiBmb3IgYSB1c2VyIGRlbGV0ZSkgYW5kIHRoZXJlIGFyZSBubyBt
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGU5NzAyNTY3MjAzZDQ3MmI3YjkzZmJmZmUy
MjBjOGRkN2Y0MDQwNDYuLmVhZTU0YjBkYmJkYjA1NmE2MDZiOWY1NjdhN2JjMzY4NzEyYzM1NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC0xOTUsOCAr
MTk2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERh
dGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAg
IHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0
RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQgZXhlY3V0ZU5l
eHREYXRhYmFzZVRhc2soKTsKICAgICB2b2lkIGV4ZWN1dGVOZXh0RGF0YWJhc2VUYXNrUmVwbHko
KTsKIApAQCAtMjQyLDggKzI0Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZGVsZXRlQmFj
a2luZ1N0b3JlSW5Qcm9ncmVzcyB7IGZhbHNlIH07CiAKLSAgICBNZXNzYWdlUXVldWU8Q3Jvc3NU
aHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7Ci0gICAgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFk
VGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1Ro
cmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhy
ZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CiAgICAgc3RkOjphdG9taWM8dWludDY0X3Q+
IG1fcXVldWVkVGFza0NvdW50IHsgMCB9OwogCiAgICAgYm9vbCBtX2hhcmRDbG9zZWRGb3JVc2Vy
RGVsZXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGZlNzVkMjU1OWQzN2FiNDNkMDE2NGFkYWQ3NjRhMGY0NTQyOGY4ZWYuLjA2
NWEyODhlN2U1MTY5MmIyODhkNjM3MzNhNDE4ZWUyMzA2OTFiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTcyLDExICsxNzIsOCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcG9zdENy
b3NzVGhyZWFkVGFzayhBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBh
dXRvIGNyb3NzVGhyZWFkVGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1bWVudHMuLi4p
OwotICAgICAgICBhdXRvKiByYXdUYXNrID0gY3Jvc3NUaHJlYWRUYXNrLnJlbGVhc2UoKTsKLSAg
ICAgICAgcG9zdFRhc2soWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrKHJhd1Rhc2spOwotICAgICAg
ICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICAgICAgcG9zdFRhc2soW2Nyb3NzVGhyZWFk
VGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhhcmd1bWVudHMuLi4pXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgICAgICAgICBjcm9zc1RocmVhZFRhc2sucGVyZm9y
bVRhc2soKTsKICAgICAgICAgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCBmZjgxOTRlMGNmYjc1MzA1YWIz
MzdjMWE1ZDc3NmU4ZDAyY2JkN2RiLi5kM2I1YWRkMTU4MDYzNWU3OWRhOTgwMmU3YWNlZDIzNzQ1
OTZjODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYv
Q3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0x
MDAsMTIgKzEwMSwxMiBAQCBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8QmxvYlVybE9yaWdpbk1hcD4m
IG9yaWdpbk1hcCgpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKLXN0YXRpYyBNZXNzYWdlUXVldWU8
Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJsZVF1ZXVlKCkKK3N0YXRpYyBDcm9zc1RocmVhZFF1
ZXVlPENyb3NzVGhyZWFkVGFzaz4mIHRocmVhZGFibGVRdWV1ZSgpCiB7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJl
YWRUYXNrPiogcXVldWU7CisgICAgc3RhdGljIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRU
YXNrPiogcXVldWU7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAg
cXVldWUgPSBuZXcgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz47CisgICAgICAgIHF1ZXVl
ID0gbmV3IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKICAgICB9KTsKIAogICAg
IHJldHVybiAqcXVldWU7CkBAIC0xNTksOSArMTYwLDkgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVy
bCwKICAgICAgICAgdGhyZWFkYWJsZVF1ZXVlKCkuYXBwZW5kKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
ayhUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJh
Y2tlZCwgdXJsLCBzcmNVUkwsIGZpbGVCYWNrZWRQYXRoKSk7CiAKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbXSB7Ci0gICAgICAgICAgICBhdXRvIHRhc2sgPSB0aHJlYWRhYmxlUXVldWUoKS50
cnlHZXRNZXNzYWdlKCk7Ci0gICAgICAgICAgICBBU1NFUlQodGFzayk7Ci0gICAgICAgICAgICB0
YXNrLT5wZXJmb3JtVGFzaygpOworICAgICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2sgPSB0
aHJlYWRhYmxlUXVldWUoKS50cnlHZXRNZXNzYWdlKCk7CisgICAgICAgICAgICBBU1NFUlQodGFz
ay5pc1ZhbGlkKCkpOworICAgICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogICAgICAgICB9
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRh
YmFzZVByb2Nlc3MuY3BwCmluZGV4IDNjMDlkYTdlM2FhYTdkMDA3NTU1YjE0NDg3YTgyMTgzNDkw
Yzc1MzIuLjQ2MGM3NjBkYTJjYzJmZDliNmYzNDk2ZGNiYWU3ZmU2ZjQ5NDI4N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCkBA
IC0xNDIsNyArMTQyLDcgQEAgU3RyaW5nIERhdGFiYXNlUHJvY2Vzczo6YWJzb2x1dGVJbmRleGVk
RGF0YWJhc2VQYXRoRnJvbURhdGFiYXNlUmVsYXRpdmVQYXRoKGNvbnMKIH0KICNlbmRpZgogCi12
b2lkIERhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiB0YXNrKQordm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRh
c2soQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0xNTksMTQgKzE1OSwxNCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6cGVyZm9y
bU5leHREYXRhYmFzZVRhc2soKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gdGFzazsKKyAgICBDcm9zc1Ro
cmVhZFRhc2sgdGFzazsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJh
c2VUYXNrTXV0ZXgpOwogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2VUYXNrcy5pc0VtcHR5KCkp
OwogICAgICAgICB0YXNrID0gbV9kYXRhYmFzZVRhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KIAot
ICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CisgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCiB2
b2lkIERhdGFiYXNlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRl
RGF0YShTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYgogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhNRTog
UGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQuCi0g
ICAgICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2s+
KFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYnNpdGVEYXRhVHlwZXMsIHRoaXNdIHsKKyAgICAgICAg
cG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2soW2NhbGxiYWNrQWdncmVnYXRvciwgd2Vi
c2l0ZURhdGFUeXBlcywgdGhpc10gewogCiAgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgK
aW5kZXggZjBiYjk3YzY4OTcwNTk4MDZkYWM4YTMxYzNkMWI2OTFkNjg5MTAzNy4uZDAzYmU5NGE1
NTMwNTA1YTRjYTk2MWUxY2YzODU4MWEyNTNlOTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAKICAgICBXb3JrUXVldWUmIHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQog
Ci0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+KTsKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgLy8gV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJCYWNraW5nU3RvcmVGaWxlSGFuZGxlcgpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9ibG9iVGVtcG9y
YXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zOwogICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmKT4+IG1fc2Fu
ZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwogCi0gICAgRGVxdWU8c3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4+IG1fZGF0YWJhc2VUYXNrczsKKyAgICBEZXF1
ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VUYXNrczsKICAgICBMb2NrIG1fZGF0YWJhc2VU
YXNrTXV0ZXg7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280151</attachid>
            <date>2016-05-31 09:38:34 -0700</date>
            <delta_ts>2016-05-31 10:15:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158215-20160531093951.patch</filename>
            <type>text/plain</type>
            <size>30513</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjVhNGY2NTgzYTg2ZGQxZGM3ZjNiYmEwYThiYmU1ODhhYjVmZjFk
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGllci5j
cHA6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg6IEFkZGVkLiBB
IGxpZ2h0d2VpZ2h0IG9mIE1lc3NhZ2VRdWV1ZSB0aGF0IGRlYWxzIGRpcmVjdGx5CisgICAgICAg
ICAgaW4gb2JqZWN0cyBpbnN0ZWFkIG9mIGluIHN0ZDo6dW5pcXVlX3B0cnMuCisgICAgICAgIChX
VEY6OkNyb3NzVGhyZWFkUXVldWU6OkNyb3NzVGhyZWFkUXVldWUpOgorICAgICAgICAoV1RGOjpD
cm9zc1RocmVhZFF1ZXVlOjppc0tpbGxlZCk6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkUXVl
dWU8RGF0YVR5cGU+Ojp+Q3Jvc3NUaHJlYWRRdWV1ZSk6CisgICAgICAgIChXVEY6OkNyb3NzVGhy
ZWFkUXVldWU8RGF0YVR5cGU+OjphcHBlbmQpOgorICAgICAgICAKKyAgICAgICAgKiB3dGYvQ3Jv
c3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJl
YWRUYXNrKToKKyAgICAgICAgKFdURjo6Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKToKKwogMjAxNi0w
NS0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBD
cm9zc1RocmVhZENvcGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4
NjBmNDZkNzQwYWE2YzA2NTA1ZGVjZWU1N2NhYzNkYjFiNTgzODYuLjE5YmZkZjM3MDJhYTg4MzIx
MGZkNzUyZWQwNmJlM2M3MTNjYmFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAx
Ni0wNS0zMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFr
ZSBjcmVhdGVDcm9zc1RocmVhZFRhc2soKSBmdW5jdGlvbnMgcmV0dXJuIG9uIHRoZSBzdGFjayBp
bnN0ZWFkIG9mIHRoZSBoZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rvciwgbm8gY2hhbmdlIGluIGJlaGF2aW9yKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBhY2NvdW50cyBmb3Igc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkVGFzaz4gbm8gbG9uZ2VyIGJlaW5nIGEgdGhpbmcsCisgICAgICAgIGFzIHdlbGwgYXMg
Y2hhbmdpbmcgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz5zIGludG8gQ3Jvc3NUaHJlYWRR
dWV1ZTxDcm9zc1RocmVhZFRhc2s+cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcyk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oOgorICAgICAgICAK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlUnVu
TG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6aGFuZGxlVGFz
a1JlcGxpZXNPbk1haW5UaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmV4ZWN1dGVOZXh0
RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OmV4ZWN1dGVOZXh0RGF0YWJhc2VUYXNrUmVwbHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdENyb3NzVGhyZWFkVGFzayk6CisgICAgICAgIAorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0aHJlYWRhYmxlUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorCiAyMDE2LTA1LTMx
ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFiMTE3ZTI3MzBiMjQ4ZTc0NzQwOWNl
MTE0MDVkMTZkYWZiNjdjMDguLjEzZGY4MmMyMjczYmYyNzg1NjUwYjhiOWY5YTkxMWUxNzk3ZDAx
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNS0zMSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVDcm9zc1RocmVhZFRh
c2soKSBmdW5jdGlvbnMgcmV0dXJuIG9uIHRoZSBzdGFjayBpbnN0ZWFkIG9mIHRoZSBoZWFwLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBEYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9j
ZXNzOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
OjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5oOgorCiAyMDE2LTA1LTMxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5j
bWFrZSBhbmQgTkVXUyBmb3IgMi4xMy4xIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkODI2ODgxNDExYzRjMjMxM2Q0MzQ2Mjg1ZWZmODU2YzE2
Y2E4NDQ5Li41YWRlMWU5ZWE5YjdjNmEzMTdhODIwNjRmNDdmZTg2YjQyMWE2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNCw2ICsxMDQsNyBAQAog
CQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1Rjc5NEIxQ0ZDOUY0
QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLzsgfTsKIAkJNTE1Rjc5NEYxQ0ZD
OUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuaCAqLzsgfTsKIAkJNTE1Rjc5NTAxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1Rjc5NEQxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkVGFzay5oICovOyB9
OworCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1Rjc5NTUxQ0ZEM0E2
OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCAqLzsgfTsKIAkJNTUzMDcxQ0ExQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNo
ZS5oICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkz
RkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkz
RkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTQyNiw2ICs0MjcsNyBAQAogCQk1MTVGNzk0QjFD
RkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRD
b3BpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NEQxQ0ZDOUY0QTAwQ0NF
RDkzIC8qIENyb3NzVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcm9zc1RocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1Rjc5
NTUxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODA1LDYgKzgwNyw3IEBACiAJCQkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4
IC8qIENvbmRpdGlvbi5oICovLAogCQkJCTUxNUY3OTRCMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9z
c1RocmVhZENvcGllci5jcHAgKi8sCiAJCQkJNTE1Rjc5NEMxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkQ29waWVyLmggKi8sCisJCQkJNTE1Rjc5NTUxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkUXVldWUuaCAqLywKIAkJCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRUYXNrLmggKi8sCiAJCQkJQThBNDcyNzMxNTFBODI1QTAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzI3NDE1MUE4MjVBMDA0
MTIzRkYgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaCAqLywKQEAgLTExODIsNiAr
MTE4NSw3IEBACiAJCQkJQThBNDc0NTIxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEExNTFBODI1QjAwNDEyM0ZGIC8qIEJpdG1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEMxNTFBODI1QjAwNDEyM0ZGIC8qIEJpdFZl
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTQ0RjQ3MUMzRDg4MTQwMDVC
RDI4QyAvKiBCbG9ja1B0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNEREU5MzIxQ0RDMDUyRDAw
RkQzNDkxIC8qIGR5bGRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3MzhFMTUxQTgyNUIw
MDQxMjNGRiAvKiBCbG9ja1N0YWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmNwcAppbmRleCBmOTdhZDc4YzFhYTZmNjFmNjZhOWE2OGIyZGVhMDM1YjFlMTNl
NjNiLi5kYmNkZGZhYTZiNTZlNjRiMjQwMjE5ODM1ZTNiMzhkN2VlZjZlOTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCiAKKyNpbmNsdWRlICJDcm9z
c1RocmVhZFRhc2suaCIKKworI2lmICFPUyhXSU5ET1dTKQorCiBuYW1lc3BhY2UgV1RGIHsKIAog
Ly8gVGVzdCBDcm9zc1RocmVhZENvcGllciB1c2luZyBDT01QSUxFX0FTU0VSVC4KQEAgLTc4LDMg
KzgyLDYgQEAgc3RhdGljX2Fzc2VydCgoc3RkOjppc19zYW1lPGludCwgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UmVmUHRyPENvcGllclJlZkNvdW50ZWRUZXN0Pj4KIHN0YXRpY19hc3NlcnQoKHN0ZDo6aXNf
c2FtZTxpbnQsIENyb3NzVGhyZWFkQ29waWVyPENvcGllclJlZkNvdW50ZWRUZXN0Kj46OlR5cGU+
Ojp2YWx1ZSksICJDcm9zc1RocmVhZENvcGllciBzcGVjaWFsaXphdGlvbiBpbXByb3Blcmx5IGFw
cGxpZWQgdG8gcmF3IHBvaW50ZXIgb2YgYSBSZWZDb3VudGVkIChidXQgbm90IFRocmVhZFNhZmVS
ZWZDb3VudGVkKSB0eXBlIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gIU9T
KFdJTkRPV1MpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUu
aCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDZiZTk1
NzU4NGYyMGYxZjc3YzE4MDg4NzFlMGVhZGE5Zjk0ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgorY2xhc3Mg
Q3Jvc3NUaHJlYWRRdWV1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRR
dWV1ZSk7CitwdWJsaWM6CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZSgpID0gZGVmYXVsdDsKKworICAg
IHZvaWQgYXBwZW5kKERhdGFUeXBlJiYpOworCisgICAgRGF0YVR5cGUgd2FpdEZvck1lc3NhZ2Uo
KTsKKyAgICBPcHRpb25hbDxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZSgpOworCisgICAgYm9vbCBp
c0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3ByaXZhdGU6CisgICAgbXV0YWJs
ZSBMb2NrIG1fbG9jazsKKyAgICBDb25kaXRpb24gbV9jb25kaXRpb247CisgICAgRGVxdWU8RGF0
YVR5cGU+IG1fcXVldWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK3ZvaWQg
Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChEYXRhVHlwZSYmIG1lc3NhZ2UpCit7
CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92
ZShtZXNzYWdlKSk7CisgICAgbV9jb25kaXRpb24ubm90aWZ5T25lKCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERhdGFUeXBlPgorRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46
OndhaXRGb3JNZXNzYWdlKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKKworICAg
IGF1dG8gZm91bmQgPSBtX3F1ZXVlLmVuZCgpOworICAgIHdoaWxlIChmb3VuZCA9PSBtX3F1ZXVl
LmVuZCgpKSB7CisgICAgICAgIGZvdW5kID0gbV9xdWV1ZS5iZWdpbigpOworICAgICAgICBpZiAo
Zm91bmQgIT0gbV9xdWV1ZS5lbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgaW5maW5pdGVUaW1lID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKTsKKyAgICAgICAgbV9jb25kaXRpb24ud2FpdFVudGlsV2FsbENsb2NrU2Vjb25k
cyhtX2xvY2ssIGluZmluaXRlVGltZSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fcXVldWUudGFr
ZUZpcnN0KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPgorT3B0aW9uYWw8RGF0
YVR5cGU+IENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRNZXNzYWdlKCkKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKKworICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDcm9zc1RocmVhZFF1ZXVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2suaAppbmRleCBlOWMyYWI5MDRlMmU0MGEyNzEzMTBmMmIxNzg3
N2EyMGEyYTU1NDU2Li5iMDA2MjZiZjNmMjg1YWZmOTdiMTYzZDY5Y2QzMjk4Njg3ZjliZWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaApAQCAtMjcsMjYgKzI3LDMwIEBACiAKICNpbmNsdWRl
IDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGVGdW5j
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIENyb3NzVGhyZWFkVGFzayB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jv
c3NUaHJlYWRUYXNrKTsKIHB1YmxpYzoKKyAgICBDcm9zc1RocmVhZFRhc2soKSA9IGRlZmF1bHQ7
CisKICAgICBDcm9zc1RocmVhZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiYmIHRh
c2tGdW5jdGlvbikKICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRhc2tGdW5jdGlv
bikpCiAgICAgewogICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKICAgICB9CiAKKyAgICBD
cm9zc1RocmVhZFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpID0gZGVmYXVsdDsKKyAgICBDcm9zc1Ro
cmVhZFRhc2smIG9wZXJhdG9yPShDcm9zc1RocmVhZFRhc2smJikgPSBkZWZhdWx0OworCiAgICAg
dm9pZCBwZXJmb3JtVGFzaygpCiAgICAgewogICAgICAgICBtX3Rhc2tGdW5jdGlvbigpOwogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIENyb3NzVGhyZWFkVGFzaygpIHsgfQotCiAgICAgTm9uY29w
eWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKQEAgLTczLDMzICs3
NywzMyBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRU
YXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6
Km1ldGhvZCkoKSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRh
c2tJbXBsPFQ+PigmY2FsbGVlLCBtZXRob2QpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJ
bXBsPFQ+KCZjYWxsZWUsIG1ldGhvZCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBj
cmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEpLAogICAgIGNv
bnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3Nz
VGhyZWFkVGFza0ltcGw8VCwgTVAxPj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8
VCwgTVAxPigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6
OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDI+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQm
IGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiksCiAgICAgY29uc3QgUDEm
IHBhcmFtZXRlcjEsCiAgICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMj4+KAorICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyPigKICAgICAgICAgJmNhbGxlZSwK
ICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29w
eShwYXJhbWV0ZXIxKSwKQEAgLTEwOCwxNCArMTEyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwg
TVAyLCBNUDMpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4+KAorICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDM+KAogICAgICAgICAmY2Fs
bGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+
Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTI0LDEzICsxMjgsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBl
bmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4g
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICB2b2lkICgqbWV0aG9kKShNUDEsIE1QMiwgTVAzKSwKICAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFy
YW1ldGVyMykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tT
dGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrU3Rh
dGljSW1wbDxNUDEsIE1QMiwgTVAzPigKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKICAgICAgICAgV1RGOjpDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCkBAIC0xMzgsNyArMTQyLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFt
ZSBQNCwgdHlwZW5hbWUgTVA0Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywg
TVA0KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTE0Niw3ICsxNTAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAg
Y29uc3QgUDMmIHBhcmFtZXRlcjMsCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwg
TVAzLCBNUDQ+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwg
TVAzLCBNUDQ+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTU2LDcgKzE2
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLXN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Ny
b3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAg
IHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwKICAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwKQEAgLTE2NSw3ICsxNjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDQmIHBhcmFtZXRl
cjQsCiAgICAgY29uc3QgUDUmIHBhcmFtZXRlcjUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNT4+KAor
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1
PigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE3Niw3ICsxODAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVu
YW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1l
IFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2
LCB0eXBlbmFtZSBNUDY+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVD
cm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAog
ICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQs
IE1QNSwgTVA2KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTE4Niw3ICsxOTAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2so
CiAgICAgY29uc3QgUDUmIHBhcmFtZXRlcjUsCiAgICAgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEs
IE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2Pj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0lt
cGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNj4oCiAgICAgICAgICZjYWxsZWUsCiAg
ICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSksCkBAIC0xOTgsNyArMjAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0
eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBl
bmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFt
ZSBQNywgdHlwZW5hbWUgTVA3Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywg
TVA0LCBNUDUsIE1QNiwgTVA3KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTIwOSw3
ICsyMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soCiAgICAgY29uc3QgUDYmIHBhcmFtZXRlcjYsCiAgICAgY29uc3QgUDcmIHBhcmFt
ZXRlcjcpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1w
bDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDc+PigKKyAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDc+KAog
ICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJl
YWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMjIyLDcgKzIyNiw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5
cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVu
YW1lIE1QOD4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYg
Y2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBN
UDYsIE1QNywgTVA4KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTIzNCw3ICsyMzgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRh
c2soCiAgICAgY29uc3QgUDcmIHBhcmFtZXRlcjcsCiAgICAgY29uc3QgUDgmIHBhcmFtZXRlcjgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOD4+KAorICAgIHJldHVybiBDcm9z
c1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4
PigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
aAppbmRleCA4ZmY2YTY2MDRjYmFiODc4ODM1NzA5NGRmMDRkZDliOTE0MzhjMDI5Li40ZDM3MGM5
OTk2NGJmMGM0ZWY3MDM0MDQwZjA3M2I3MDAxNmQxNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiVHJhbnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KQEAgLTE1Nyw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURC
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2
ZU9wZXJhdGlvbnM7CiAgICAgTG9jayBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTG9jazsKIAotICAg
IE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fbWFpblRocmVhZFF1ZXVlOworICAgIENy
b3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX21haW5UaHJlYWRRdWV1ZTsKICAgICBM
b2NrIG1fbWFpblRocmVhZFRhc2tMb2NrOwogICAgIFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2
ZXI+IG1fbWFpblRocmVhZFByb3RlY3RvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDNkZTFlZjI5MTI0
M2IxMDRhOTAxZWRiZDU0NjZhOTMzMjc2NzYzY2EuLmNjN2EzZjYwMWMxNjQ3NWI3Nzg2ZmQ0ZTJk
NTljMmY5OGQ5NGRmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIElE
QlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludAogICAgIGNvbm5lY3Rpb24tPmRpZEdldEFsbERhdGFiYXNlTmFtZXMo
Y2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0
YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQg
SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdU
Rk1vdmUodGFzaykpOwogfQogCi12b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVy
Ojpwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUmVwbHlRdWV1ZS5hcHBlbmQo
V1RGTW92ZSh0YXNrKSk7CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBJREJTZXJ2ZXI6OmRhdGFi
YXNlUnVuTG9vcCgpCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVh
ZENyZWF0aW9uTG9jayk7CiAgICAgfQogCi0gICAgd2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0YWJh
c2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQotICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwor
ICAgIHdoaWxlICghbV9kYXRhYmFzZVF1ZXVlLmlzS2lsbGVkKCkpCisgICAgICAgIG1fZGF0YWJh
c2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCU2Vy
dmVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMDc3MGMxYzAz
ZjZjNzJlNzg4N2JkYTMzODE2NzhlMWIwYmFkODI5MS4uNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3
NjgwMTE2MGQ5YTEyMDkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklE
QkRhdGFiYXNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Ny
b3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtODQsOCArODUs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFt
ZXModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5p
bmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERh
dGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAg
IHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0
RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCiAgICAgdm9pZCByZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2
b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uJik7CkBAIC0xMjQsOCArMTI1LDggQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVh
ZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2Ug
fTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsK
LSAgICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsK
KyAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOwor
ICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1
ZTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+
IG1fZGF0YWJhc2VDb25uZWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmll
ciwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbio+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKaW5kZXggZjBkNDcyNzc4NDY0YWQ5MzNlOGU2ZTExYTM3Y2QzYjkx
ZDcxNTA1MC4uNTAyMzMxMWY0ZmNiNWRhNDMyYzZlZWUyYjNmMzY5MzU1YmU1OTExYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNvbXBsZXRlZChSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbgogICAgICAgICBpbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgbV9kYXRhYmFzZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2sp
KTsKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRh
YmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrCiAgICAgbV9z
ZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRhYmFzZVRhc2spKTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFz
ZVRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIG1fZGF0YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2sp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggZTk3MDI1NjcyMDNkNDcyYjdiOTNmYmZmZTIy
MGM4ZGQ3ZjQwNDA0Ni4uZWFlNTRiMGRiYmRiMDU2YTYwNmI5ZjU2N2E3YmMzNjg3MTJjMzU1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJl
YWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KQEAgLTE5NSw4ICsx
OTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAKLSAgICB2b2lkIHBvc3REYXRhYmFzZVRh
c2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJik7Ci0gICAgdm9pZCBwb3N0RGF0
YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJik7CisgICAg
dm9pZCBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3RE
YXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAgICAgdm9pZCBleGVjdXRlTmV4
dERhdGFiYXNlVGFzaygpOwogICAgIHZvaWQgZXhlY3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSgp
OwogCkBAIC0yNDIsOCArMjQzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9kZWxldGVCYWNr
aW5nU3RvcmVJblByb2dyZXNzIHsgZmFsc2UgfTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1Ro
cmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAgICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRU
YXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhy
ZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJl
YWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKICAgICBzdGQ6OmF0b21pYzx1aW50NjRfdD4g
bV9xdWV1ZWRUYXNrQ291bnQgeyAwIH07CiAKICAgICBib29sIG1faGFyZENsb3NlZEZvclVzZXJE
ZWxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKaW5kZXggZmU3NWQyNTU5ZDM3YWI0M2QwMTY0YWRhZDc2NGEwZjQ1NDI4ZjhlZi4uMDY1
YTI4OGU3ZTUxNjkyYjI4OGQ2MzczM2E0MThlZTIzMDY5MWJiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xNzIsMTEgKzE3Miw4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgdm9pZCBwb3N0Q3Jv
c3NUaHJlYWRUYXNrKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1
dG8gY3Jvc3NUaHJlYWRUYXNrID0gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKGFyZ3VtZW50cy4uLik7
Ci0gICAgICAgIGF1dG8qIHJhd1Rhc2sgPSBjcm9zc1RocmVhZFRhc2sucmVsZWFzZSgpOwotICAg
ICAgICBwb3N0VGFzayhbPV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2socmF3VGFzayk7Ci0gICAgICAg
ICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgICAgICBwb3N0VGFzayhbY3Jvc3NUaHJlYWRU
YXNrID0gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKGFyZ3VtZW50cy4uLildKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNyb3NzVGhyZWFkVGFzay5wZXJmb3Jt
VGFzaygpOwogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGZmODE5NGUwY2ZiNzUzMDVhYjMz
N2MxYTVkNzc2ZThkMDJjYmQ3ZGIuLjFlYzc3M2IzODEwYjJmNmIyOGViY2JjZjBkYjZhYWEwMDll
NWUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTEw
MCwxMiArMTAxLDEyIEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYg
b3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1hcDsKIH0KIAotc3RhdGljIE1lc3NhZ2VRdWV1ZTxD
cm9zc1RocmVhZFRhc2s+JiB0aHJlYWRhYmxlUXVldWUoKQorc3RhdGljIENyb3NzVGhyZWFkUXVl
dWU8Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJsZVF1ZXVlKCkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVh
ZFRhc2s+KiBxdWV1ZTsKKyAgICBzdGF0aWMgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRh
c2s+KiBxdWV1ZTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBx
dWV1ZSA9IG5ldyBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPjsKKyAgICAgICAgcXVldWUg
PSBuZXcgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+OwogICAgIH0pOwogCiAgICAg
cmV0dXJuICpxdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggNDY4Zjg0NzdiNDc2M2M3OTY5Y2Y1NzIyMThkZWIzMzRk
MzAyY2FiYi4uYzJkNzBkMmVjZjlmZTExZjBmOTZjNGI5OTg2YjBlNTNmZGVhMjRlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCBTdHJpbmcgRGF0YWJhc2VQcm9jZXNzOjphYnNvbHV0ZUluZGV4
ZWREYXRhYmFzZVBhdGhGcm9tRGF0YWJhc2VSZWxhdGl2ZVBhdGgoY29ucwogfQogI2VuZGlmCiAK
LXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFRhc2s+IHRhc2spCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNl
VGFzayhDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTE2MCwxNCArMTYwLDE0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwZXJm
b3JtTmV4dERhdGFiYXNlVGFzaygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrOworICAgIENyb3Nz
VGhyZWFkVGFzayB0YXNrOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRh
YmFzZVRhc2tNdXRleCk7CiAgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZVRhc2tzLmlzRW1wdHko
KSk7CiAgICAgICAgIHRhc2sgPSBtX2RhdGFiYXNlVGFza3MudGFrZUZpcnN0KCk7CiAgICAgfQog
Ci0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAK
IHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNp
dGVEYXRhKFNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2ViCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBQaWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4K
LSAgICAgICAgcG9zdERhdGFiYXNlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFz
az4oW2NhbGxiYWNrQWdncmVnYXRvciwgd2Vic2l0ZURhdGFUeXBlcywgdGhpc10geworICAgICAg
ICBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayhbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3
ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7CiAKICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBzZWN1cml0eU9yaWdpbnMgPSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
aAppbmRleCBmMGJiOTdjNjg5NzA1OTgwNmRhYzhhMzFjM2QxYjY5MWQ2ODkxMDM3Li5kMDNiZTk0
YTU1MzA1MDVhNGNhOTYxZTFjZjM4NTgxYTI1M2U5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKIAogICAgIFdvcmtRdWV1ZSYgcXVldWUoKSB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9
CiAKLSAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
VGFzaz4pOworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAvLyBXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX2Jsb2JUZW1w
b3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpPj4gbV9z
YW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CiAKLSAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPj4gbV9kYXRhYmFzZVRhc2tzOworICAgIERl
cXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVRhc2tzOwogICAgIExvY2sgbV9kYXRhYmFz
ZVRhc2tNdXRleDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280155</attachid>
            <date>2016-05-31 10:15:43 -0700</date>
            <delta_ts>2016-05-31 11:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158215-20160531101700.patch</filename>
            <type>text/plain</type>
            <size>30464</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjVhNGY2NTgzYTg2ZGQxZGM3ZjNiYmEwYThiYmU1ODhhYjVmZjFk
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZENvcGllci5j
cHA6CisgICAgICAgIAorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg6IEFkZGVkLiBB
IGxpZ2h0d2VpZ2h0IG9mIE1lc3NhZ2VRdWV1ZSB0aGF0IGRlYWxzIGRpcmVjdGx5CisgICAgICAg
ICAgaW4gb2JqZWN0cyBpbnN0ZWFkIG9mIGluIHN0ZDo6dW5pcXVlX3B0cnMuCisgICAgICAgIChX
VEY6OkNyb3NzVGhyZWFkUXVldWU6OkNyb3NzVGhyZWFkUXVldWUpOgorICAgICAgICAoV1RGOjpD
cm9zc1RocmVhZFF1ZXVlOjppc0tpbGxlZCk6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkUXVl
dWU8RGF0YVR5cGU+Ojp+Q3Jvc3NUaHJlYWRRdWV1ZSk6CisgICAgICAgIChXVEY6OkNyb3NzVGhy
ZWFkUXVldWU8RGF0YVR5cGU+OjphcHBlbmQpOgorICAgICAgICAKKyAgICAgICAgKiB3dGYvQ3Jv
c3NUaHJlYWRUYXNrLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFzazo6Q3Jvc3NUaHJl
YWRUYXNrKToKKyAgICAgICAgKFdURjo6Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKToKKwogMjAxNi0w
NS0zMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBD
cm9zc1RocmVhZENvcGllci9Dcm9zc1RocmVhZFRhc2sgdG8gV1RGLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4
NjBmNDZkNzQwYWE2YzA2NTA1ZGVjZWU1N2NhYzNkYjFiNTgzODYuLjE5YmZkZjM3MDJhYTg4MzIx
MGZkNzUyZWQwNmJlM2M3MTNjYmFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAx
Ni0wNS0zMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFr
ZSBjcmVhdGVDcm9zc1RocmVhZFRhc2soKSBmdW5jdGlvbnMgcmV0dXJuIG9uIHRoZSBzdGFjayBp
bnN0ZWFkIG9mIHRoZSBoZWFwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rvciwgbm8gY2hhbmdlIGluIGJlaGF2aW9yKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSBhY2NvdW50cyBmb3Igc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkVGFzaz4gbm8gbG9uZ2VyIGJlaW5nIGEgdGhpbmcsCisgICAgICAgIGFzIHdlbGwgYXMg
Y2hhbmdpbmcgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz5zIGludG8gQ3Jvc3NUaHJlYWRR
dWV1ZTxDcm9zc1RocmVhZFRhc2s+cy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcyk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oOgorICAgICAgICAK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlUnVu
TG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6aGFuZGxlVGFz
a1JlcGxpZXNPbk1haW5UaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFza1JlcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmV4ZWN1dGVOZXh0
RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OmV4ZWN1dGVOZXh0RGF0YWJhc2VUYXNrUmVwbHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdENyb3NzVGhyZWFkVGFzayk6CisgICAgICAgIAorICAgICAg
ICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0aHJlYWRhYmxlUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorCiAyMDE2LTA1LTMx
ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFiMTE3ZTI3MzBiMjQ4ZTc0NzQwOWNl
MTE0MDVkMTZkYWZiNjdjMDguLjEzZGY4MmMyMjczYmYyNzg1NjUwYjhiOWY5YTkxMWUxNzk3ZDAx
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNS0zMSAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVDcm9zc1RocmVhZFRh
c2soKSBmdW5jdGlvbnMgcmV0dXJuIG9uIHRoZSBzdGFjayBpbnN0ZWFkIG9mIHRoZSBoZWFwLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBEYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9j
ZXNzOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
OjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5oOgorCiAyMDE2LTA1LTMxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5j
bWFrZSBhbmQgTkVXUyBmb3IgMi4xMy4xIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkODI2ODgxNDExYzRjMjMxM2Q0MzQ2Mjg1ZWZmODU2YzE2
Y2E4NDQ5Li41YWRlMWU5ZWE5YjdjNmEzMTdhODIwNjRmNDdmZTg2YjQyMWE2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNCw2ICsxMDQsNyBAQAog
CQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1Rjc5NEIxQ0ZDOUY0
QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLzsgfTsKIAkJNTE1Rjc5NEYxQ0ZD
OUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuaCAqLzsgfTsKIAkJNTE1Rjc5NTAxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1Rjc5NEQxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkVGFzay5oICovOyB9
OworCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1Rjc5NTUxQ0ZEM0E2
OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCAqLzsgfTsKIAkJNTUzMDcxQ0ExQzQwNDI3
MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNo
ZS5oICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkz
RkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkz
RkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsKQEAgLTQyNiw2ICs0MjcsNyBAQAogCQk1MTVGNzk0QjFD
RkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRD
b3BpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1Rjc5NEQxQ0ZDOUY0QTAwQ0NF
RDkzIC8qIENyb3NzVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcm9zc1RocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1Rjc5
NTUxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTMwNzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRpbnlMUlVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODA1LDYgKzgwNyw3IEBACiAJCQkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4
IC8qIENvbmRpdGlvbi5oICovLAogCQkJCTUxNUY3OTRCMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9z
c1RocmVhZENvcGllci5jcHAgKi8sCiAJCQkJNTE1Rjc5NEMxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkQ29waWVyLmggKi8sCisJCQkJNTE1Rjc5NTUxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkUXVldWUuaCAqLywKIAkJCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRUYXNrLmggKi8sCiAJCQkJQThBNDcyNzMxNTFBODI1QTAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzI3NDE1MUE4MjVBMDA0
MTIzRkYgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaCAqLywKQEAgLTExODIsNiAr
MTE4NSw3IEBACiAJCQkJQThBNDc0NTIxNTFBODI1QjAwNDEyM0ZGIC8qIEJpbmFyeVNlbWFwaG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEExNTFBODI1QjAwNDEyM0ZGIC8qIEJpdG1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEMxNTFBODI1QjAwNDEyM0ZGIC8qIEJpdFZl
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENy
b3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTQ0RjQ3MUMzRDg4MTQwMDVC
RDI4QyAvKiBCbG9ja1B0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNEREU5MzIxQ0RDMDUyRDAw
RkQzNDkxIC8qIGR5bGRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3MzhFMTUxQTgyNUIw
MDQxMjNGRiAvKiBCbG9ja1N0YWNrLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmNwcAppbmRleCBmOTdhZDc4YzFhYTZmNjFmNjZhOWE2OGIyZGVhMDM1YjFlMTNl
NjNiLi5lNTkyNDlmOTg5MjcyY2VkZmFjM2UzNjlhN2VhNjJjNmE4MTFmMjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCisjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkQ29waWVyLmg+CisKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNr
Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC03OCwzICs4MCw0IEBAIHN0YXRpY19hc3NlcnQo
KHN0ZDo6aXNfc2FtZTxpbnQsIENyb3NzVGhyZWFkQ29waWVyPFJlZlB0cjxDb3BpZXJSZWZDb3Vu
dGVkVGVzdD4+CiBzdGF0aWNfYXNzZXJ0KChzdGQ6OmlzX3NhbWU8aW50LCBDcm9zc1RocmVhZENv
cGllcjxDb3BpZXJSZWZDb3VudGVkVGVzdCo+OjpUeXBlPjo6dmFsdWUpLCAiQ3Jvc3NUaHJlYWRD
b3BpZXIgc3BlY2lhbGl6YXRpb24gaW1wcm9wZXJseSBhcHBsaWVkIHRvIHJhdyBwb2ludGVyIG9m
IGEgUmVmQ291bnRlZCAoYnV0IG5vdCBUaHJlYWRTYWZlUmVmQ291bnRlZCkgdHlwZSIpOwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0NmJlOTU3NTg0ZjIwZjFmNzdjMTgwODg3MWUwZWFkYTlmOTRlOWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+
CitjbGFzcyBDcm9zc1RocmVhZFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9z
c1RocmVhZFF1ZXVlKTsKK3B1YmxpYzoKKyAgICBDcm9zc1RocmVhZFF1ZXVlKCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBhcHBlbmQoRGF0YVR5cGUmJik7CisKKyAgICBEYXRhVHlwZSB3YWl0Rm9y
TWVzc2FnZSgpOworICAgIE9wdGlvbmFsPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7CisKKyAg
ICBib29sIGlzS2lsbGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToKKyAg
ICBtdXRhYmxlIExvY2sgbV9sb2NrOworICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKKyAgICBE
ZXF1ZTxEYXRhVHlwZT4gbV9xdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBl
Pgordm9pZCBDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6YXBwZW5kKERhdGFUeXBlJiYgbWVz
c2FnZSkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKKyAgICBtX3F1ZXVlLmFwcGVu
ZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CitEYXRhVHlwZSBDcm9zc1RocmVhZFF1ZXVlPERh
dGFUeXBlPjo6d2FpdEZvck1lc3NhZ2UoKQoreworICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2sp
OworCisgICAgYXV0byBmb3VuZCA9IG1fcXVldWUuZW5kKCk7CisgICAgd2hpbGUgKGZvdW5kID09
IG1fcXVldWUuZW5kKCkpIHsKKyAgICAgICAgZm91bmQgPSBtX3F1ZXVlLmJlZ2luKCk7CisgICAg
ICAgIGlmIChmb3VuZCAhPSBtX3F1ZXVlLmVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBpbmZpbml0ZVRpbWUgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1heCgpOworICAgICAgICBtX2NvbmRpdGlvbi53YWl0VW50aWxXYWxsQ2xv
Y2tTZWNvbmRzKG1fbG9jaywgaW5maW5pdGVUaW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9x
dWV1ZS50YWtlRmlyc3QoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+CitPcHRp
b25hbDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2Uo
KQoreworICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOworCisgICAgaWYgKG1fcXVldWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIG1fcXVldWUudGFrZUZp
cnN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNyb3NzVGhyZWFk
UXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaCBiL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IGU5YzJhYjkwNGUyZTQwYTI3MTMx
MGYyYjE3ODc3YTIwYTJhNTU0NTYuLmIwMDYyNmJmM2YyODVhZmY5N2IxNjNkNjljZDMyOTg2ODdm
OWJlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oCkBAIC0yNywyNiArMjcsMzAgQEAKIAog
I2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDcm9zc1RocmVhZFRhc2spOwogcHVibGljOgorICAgIENyb3NzVGhyZWFkVGFzaygpID0g
ZGVmYXVsdDsKKwogICAgIENyb3NzVGhyZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+JiYgdGFza0Z1bmN0aW9uKQogICAgICAgICA6IG1fdGFza0Z1bmN0aW9uKFdURk1vdmUodGFz
a0Z1bmN0aW9uKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YXNrRnVuY3Rpb24pOwogICAgIH0K
IAorICAgIENyb3NzVGhyZWFkVGFzayhDcm9zc1RocmVhZFRhc2smJikgPSBkZWZhdWx0OworICAg
IENyb3NzVGhyZWFkVGFzayYgb3BlcmF0b3I9KENyb3NzVGhyZWFkVGFzayYmKSA9IGRlZmF1bHQ7
CisKICAgICB2b2lkIHBlcmZvcm1UYXNrKCkKICAgICB7CiAgICAgICAgIG1fdGFza0Z1bmN0aW9u
KCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ3Jvc3NUaHJlYWRUYXNrKCkgeyB9Ci0KICAg
ICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+IG1fdGFza0Z1bmN0aW9uOwogfTsKIApAQCAt
NzMsMzMgKzc3LDMzIEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9z
c1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2
b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3Nz
VGhyZWFkVGFza0ltcGw8VD4+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0dXJuIENyb3NzVGhy
ZWFkVGFza0ltcGw8VD4oJmNhbGxlZSwgbWV0aG9kKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSks
CiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDE+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRU
YXNrSW1wbDxULCBNUDE+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2so
CiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyKSwKICAgICBj
b25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyPj4o
CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDI+KAogICAgICAgICAm
Y2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTA4LDE0ICsxMTIsMTQgQEAgc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhv
ZCkoTVAxLCBNUDIsIE1QMyksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29uc3Qg
UDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzPj4o
CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4oCiAgICAg
ICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENv
cGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xMjQsMTMgKzEyOCwxMyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBN
UDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJl
YWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKAogICAgIHZvaWQgKCptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAogICAgIGNv
bnN0IFAxJiBwYXJhbWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0
IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhy
ZWFkVGFza1N0YXRpY0ltcGw8TVAxLCBNUDIsIE1QMz4+KAorICAgIHJldHVybiBDcm9zc1RocmVh
ZFRhc2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+KAogICAgICAgICBtZXRob2QsCiAgICAgICAg
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAogICAgICAgICBX
VEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKQEAgLTEzOCw3ICsx
NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBN
UDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMs
IHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1Q
MiwgTVAzLCBNUDQpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTQ2LDcgKzE1MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKICAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1Q
MSwgTVAyLCBNUDMsIE1QND4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1Q
MSwgTVAyLCBNUDMsIE1QND4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAg
ICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0x
NTYsNyArMTYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlw
ZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUg
TVA1Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxs
ZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLAogICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTY1LDcgKzE2OSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNCYg
cGFyYW1ldGVyNCwKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwg
TVA1Pj4oCisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywg
TVA0LCBNUDU+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTc2LDcgKzE4
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMTg2LDcg
KzE5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKICAgICBjb25zdCBQNiYgcGFyYW1l
dGVyNikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDY+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJl
YWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2PigKICAgICAgICAgJmNh
bGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAx
Pjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTE5OCw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBN
UDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYs
IHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1Q
MiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApA
QCAtMjA5LDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwKICAgICBjb25zdCBQ
NyYgcGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVh
ZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4+KAorICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYs
IE1QNz4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0yMjIsNyArMjI2LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBl
bmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFt
ZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0eXBlbmFtZSBQ
OCwgdHlwZW5hbWUgTVA4Pgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygK
ICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0
LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLApAQCAtMjM0
LDcgKzIzOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywKICAgICBjb25zdCBQOCYgcGFy
YW1ldGVyOCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJ
bXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4Pj4oCisgICAgcmV0
dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwg
TVA3LCBNUDg+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5oCmluZGV4IDhmZjZhNjYwNGNiYWI4Nzg4MzU3MDk0ZGYwNGRkOWI5MTQzOGMwMjku
LjRkMzcwYzk5OTY0YmYwYzRlZjcwMzQwNDBmMDczYjcwMDE2ZDE2ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2FjdGlvbk9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMTU3LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+
IG1fYWN0aXZlT3BlcmF0aW9uczsKICAgICBMb2NrIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25Mb2Nr
OwogCi0gICAgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9tYWluVGhyZWFkUXVldWU7
CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fbWFpblRocmVhZFF1ZXVl
OwogICAgIExvY2sgbV9tYWluVGhyZWFkVGFza0xvY2s7CiAgICAgUmVmUHRyPElEQkNvbm5lY3Rp
b25Ub1NlcnZlcj4gbV9tYWluVGhyZWFkUHJvdGVjdG9yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggM2Rl
MWVmMjkxMjQzYjEwNGE5MDFlZGJkNTQ2NmE5MzMyNzY3NjNjYS4uY2M3YTNmNjAxYzE2NDc1Yjc3
ODZmZDRlMmQ1OWMyZjk4ZDk0ZGY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQzMSwxMyArNDMxLDEzIEBA
IHZvaWQgSURCU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50CiAgICAgY29ubmVjdGlvbi0+ZGlkR2V0QWxsRGF0YWJh
c2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsKIH0KIAotdm9pZCBJREJTZXJ2ZXI6
OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNr
KQordm9pZCBJREJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYgdGFz
aykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGF0YWJhc2VRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VU
YXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrKQordm9pZCBJ
REJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJiB0YXNrKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGF0YWJhc2VSZXBseVF1ZXVl
LmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTQ2Nyw4ICs0NjcsOCBAQCB2b2lkIElEQlNlcnZl
cjo6ZGF0YWJhc2VSdW5Mb29wKCkKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFi
YXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKICAgICB9CiAKLSAgICB3aGlsZSAoYXV0byB0YXNrID0g
bV9kYXRhYmFzZVF1ZXVlLndhaXRGb3JNZXNzYWdlKCkpCi0gICAgICAgIHRhc2stPnBlcmZvcm1U
YXNrKCk7CisgICAgd2hpbGUgKCFtX2RhdGFiYXNlUXVldWUuaXNLaWxsZWQoKSkKKyAgICAgICAg
bV9kYXRhYmFzZVF1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKIH0KIAogdm9p
ZCBJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCAw
NzcwYzFjMDNmNmM3MmU3ODg3YmRhMzM4MTY3OGUxYjBiYWQ4MjkxLi43MmUzZjcxMjM0MzcyZWQz
YzEzYWRjZjc2ODAxMTYwZDlhMTIwOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
IDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2su
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04
NCw4ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0QWxsRGF0
YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHBvc3RE
YXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJik7Ci0gICAgdm9p
ZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4m
Jik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKKyAgICB2
b2lkIHBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAKICAgICB2b2lk
IHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYp
OwogICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24mKTsKQEAgLTEyNCw4ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIExvY2sgbV9t
YWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJvb2wgbV9tYWluVGhyZWFkUmVwbHlTY2hlZHVsZWQg
eyBmYWxzZSB9OwogCi0gICAgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFz
ZVF1ZXVlOwotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VSZXBs
eVF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNl
UXVldWU7CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VS
ZXBseVF1ZXVlOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKj4gbV9kYXRhYmFzZUNvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBmMGQ0NzI3Nzg0NjRhZDkzM2U4ZTZlMTFh
MzdjZDNiOTFkNzE1MDUwLi41MDIzMzExZjRmY2I1ZGE0MzJjNmVlZTJiM2YzNjkzNTViZTU5MTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTE1MDUsNyArMTUwNSw3IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29tcGxldGVkKFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uCiAgICAgICAgIGludm9rZU9wZXJhdGlvbkFuZFRyYW5zYWN0aW9u
VGltZXIoKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayhz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmIHRhc2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmIHRhc2sK
ICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4dERhdGFiYXNlVGFzaykpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9z
dERhdGFiYXNlVGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgbV9kYXRhYmFzZVJlcGx5UXVldWUuYXBwZW5kKFdURk1v
dmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBlOTcwMjU2NzIwM2Q0NzJiN2I5
M2ZiZmZlMjIwYzhkZDdmNDA0MDQ2Li5lYWU1NGIwZGJiZGIwNTZhNjA2YjlmNTY3YTdiYzM2ODcx
MmMzNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9D
cm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAt
MTk1LDggKzE5Niw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHByZXBhcmVUb0ZpbmlzaFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKIAotICAgIHZvaWQgcG9zdERh
dGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmKTsKLSAgICB2b2lk
IHBvc3REYXRhYmFzZVRhc2tSZXBseShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYm
KTsKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOworICAgIHZv
aWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KENyb3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lkIGV4
ZWN1dGVOZXh0RGF0YWJhc2VUYXNrKCk7CiAgICAgdm9pZCBleGVjdXRlTmV4dERhdGFiYXNlVGFz
a1JlcGx5KCk7CiAKQEAgLTI0Miw4ICsyNDMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2Rl
bGV0ZUJhY2tpbmdTdG9yZUluUHJvZ3Jlc3MgeyBmYWxzZSB9OwogCi0gICAgTWVzc2FnZVF1ZXVl
PENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOwotICAgIE1lc3NhZ2VRdWV1ZTxDcm9z
c1RocmVhZFRhc2s+IG1fZGF0YWJhc2VSZXBseVF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8
Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7CisgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxD
cm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VSZXBseVF1ZXVlOwogICAgIHN0ZDo6YXRvbWljPHVp
bnQ2NF90PiBtX3F1ZXVlZFRhc2tDb3VudCB7IDAgfTsKIAogICAgIGJvb2wgbV9oYXJkQ2xvc2Vk
Rm9yVXNlckRlbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCBmZTc1ZDI1NTlkMzdhYjQzZDAxNjRhZGFkNzY0YTBmNDU0Mjhm
OGVmLi4wNjVhMjg4ZTdlNTE2OTJiMjg4ZDYzNzMzYTQxOGVlMjMwNjkxYmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE3MiwxMSArMTcyLDgg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICB2b2lk
IHBvc3RDcm9zc1RocmVhZFRhc2soQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAg
ICAgICAgYXV0byBjcm9zc1RocmVhZFRhc2sgPSBjcmVhdGVDcm9zc1RocmVhZFRhc2soYXJndW1l
bnRzLi4uKTsKLSAgICAgICAgYXV0byogcmF3VGFzayA9IGNyb3NzVGhyZWFkVGFzay5yZWxlYXNl
KCk7Ci0gICAgICAgIHBvc3RUYXNrKFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gdGFzayhyYXdUYXNrKTsK
LSAgICAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7CisgICAgICAgIHBvc3RUYXNrKFtjcm9z
c1RocmVhZFRhc2sgPSBjcmVhdGVDcm9zc1RocmVhZFRhc2soYXJndW1lbnRzLi4uKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgICAgICAgICAgY3Jvc3NUaHJlYWRUYXNr
LnBlcmZvcm1UYXNrKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggZmY4MTk0ZTBjZmI3
NTMwNWFiMzM3YzFhNWQ3NzZlOGQwMmNiZDdkYi4uMWVjNzczYjM4MTBiMmY2YjI4ZWJjYmNmMGRi
NmFhYTAwOWU1ZTIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQmxvYlVSTC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVk
ZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNr
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgpAQCAtMTAwLDEyICsxMDEsMTIgQEAgc3RhdGljIFRocmVhZFNwZWNpZmljPEJsb2JVcmxPcmln
aW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAqbWFwOwogfQogCi1zdGF0aWMgTWVzc2Fn
ZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4mIHRocmVhZGFibGVRdWV1ZSgpCitzdGF0aWMgQ3Jvc3NU
aHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+JiB0aHJlYWRhYmxlUXVldWUoKQogewogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgTWVzc2FnZVF1ZXVlPENy
b3NzVGhyZWFkVGFzaz4qIHF1ZXVlOworICAgIHN0YXRpYyBDcm9zc1RocmVhZFF1ZXVlPENyb3Nz
VGhyZWFkVGFzaz4qIHF1ZXVlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0g
ICAgICAgIHF1ZXVlID0gbmV3IE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+OworICAgICAg
ICBxdWV1ZSA9IG5ldyBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz47CiAgICAgfSk7
CiAKICAgICByZXR1cm4gKnF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCA0NjhmODQ3N2I0NzYzYzc5NjljZjU3MjIx
OGRlYjMzNGQzMDJjYWJiLi5jMmQ3MGQyZWNmOWZlMTFmMGY5NmM0Yjk5ODZiMGU1M2ZkZWEyNGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBEYXRhYmFzZVByb2Nlc3M6OmFic29s
dXRlSW5kZXhlZERhdGFiYXNlUGF0aEZyb21EYXRhYmFzZVJlbGF0aXZlUGF0aChjb25zCiB9CiAj
ZW5kaWYKIAotdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gdGFzaykKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0
RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTYwLDE0ICsxNjAsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nl
c3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2s7Cisg
ICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2s7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2RhdGFiYXNlVGFza011dGV4KTsKICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3Mu
aXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsK
ICAgICB9CiAKLSAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHRhc2sucGVyZm9ybVRhc2so
KTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbigpCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZl
dGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWIK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykpIHsKICAgICAgICAg
Ly8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNz
aW9uIElELgotICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NU
aHJlYWRUYXNrPihbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7
CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsYmFja0FnZ3Jl
Z2F0b3IsIHdlYnNpdGVEYXRhVHlwZXMsIHRoaXNdIHsKIAogICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9y
aWdpbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5oCmluZGV4IGYwYmI5N2M2ODk3MDU5ODA2ZGFjOGEzMWMzZDFiNjkxZDY4OTEwMzcu
LmQwM2JlOTRhNTUzMDUwNWE0Y2E5NjFlMWNmMzg1ODFhMjUzZTk2ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogCiAgICAgV29ya1F1ZXVlJiBxdWV1ZSgpIHsgcmV0dXJuIG1fcXVldWUu
Z2V0KCk7IH0KIAotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFkVGFz
ayYmKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIC8vIFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCQmFja2luZ1N0b3JlRmlsZUhhbmRsZXIKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1f
YmxvYlRlbXBvcmFyeUZpbGVTYW5kYm94RXh0ZW5zaW9uczsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
Jik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRpb25IYW5kbGVyczsKIAotICAg
IERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+PiBtX2RhdGFiYXNlVGFza3M7
CisgICAgRGVxdWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlVGFza3M7CiAgICAgTG9jayBt
X2RhdGFiYXNlVGFza011dGV4OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280159</attachid>
            <date>2016-05-31 11:19:40 -0700</date>
            <delta_ts>2016-05-31 12:32:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158215-20160531112056.patch</filename>
            <type>text/plain</type>
            <size>29628</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNTVhMDg0ZDgxZWJiODBhYTU0ZjQ1
NDgyMjkyMDlkNTdkMWFkMmEuLjU1YWQzNTljODU4ZWQ0NzE3YzgwYTI0YjgwZjgzMjI1MTY3Nzc0
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDUtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCkgZnVu
Y3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0aGUgaGVhcC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorCisg
ICAgICAgICogd3RmL0Nyb3NzVGhyZWFkUXVldWUuaDogQWRkZWQuIEEgbGlnaHR3ZWlnaHQgb2Yg
TWVzc2FnZVF1ZXVlIHRoYXQgZGVhbHMgZGlyZWN0bHkKKyAgICAgICAgICBpbiBvYmplY3RzIGlu
c3RlYWQgb2YgaW4gc3RkOjp1bmlxdWVfcHRycy4KKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRR
dWV1ZTo6aXNLaWxsZWQpOgorICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBl
Pjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46Ondh
aXRGb3JNZXNzYWdlKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46
OnRyeUdldE1lc3NhZ2UpOgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFzay5oOgorICAg
ICAgICAoV1RGOjpjcmVhdGVDcm9zc1RocmVhZFRhc2spOgorICAgICAgICAoV1RGOjpDcm9zc1Ro
cmVhZFRhc2s6OkNyb3NzVGhyZWFkVGFzayk6IERlbGV0ZWQuCisKIDIwMTYtMDUtMzAgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgQ3Jvc3NUaHJlYWRD
b3BpZXIvQ3Jvc3NUaHJlYWRUYXNrIHRvIFdURi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODYwZjQ2ZDc0MGFh
NmMwNjUwNWRlY2VlNTdjYWMzZGIxYjU4Mzg2Li40YmZiMWRiNzBiYzg3N2Y1OTgxOWE3YWZkNTdm
OTc2YzhlNzM2YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTYtMDUtMzEgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCkgZnVuY3Rpb25zIHJldHVybiBvbiB0aGUgc3RhY2sgaW5zdGVhZCBvZiB0
aGUgaGVhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoUmVmYWN0b3IsIG5vIGNoYW5nZSBpbiBiZWhhdmlvcikuCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5Lmg6CisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2spOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2tS
ZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGF0YWJhc2VS
dW5Mb29wKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgIAorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0Q3Jvc3NUaHJlYWRUYXNrKToKKyAgICAgICAgCisgICAg
ICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRocmVhZGFibGVRdWV1ZSk6CisKIDIwMTYtMDUtMzEgIFNlcmdpbyBWaWxsYXIgU2VuaW4g
IDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYWIxMTdlMjczMGIyNDhlNzQ3NDA5Y2UxMTQwNWQxNmRhZmI2N2MwOC4uMTNk
ZjgyYzIyNzNiZjI3ODU2NTBiOGI5ZjlhOTExZTE3OTdkMDE2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE2LTA1LTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygpIGZ1bmN0aW9ucyByZXR1cm4g
b24gdGhlIHN0YWNrIGluc3RlYWQgb2YgdGhlIGhlYXAuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyMTUKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2sp
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VU
YXNrKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRh
KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmg6CisKIDIwMTYt
MDUtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjEz
LjEgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ4MjY4ODE0MTFjNGMyMzEzZDQzNDYyODVlZmY4NTZjMTZjYTg0NDkuLjVhZGUxZTllYTliN2M2
YTMxN2E4MjA2NGY0N2ZlODZiNDIxYTZiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA0LDYgKzEwNCw3IEBACiAJCTUxNUY3OTRFMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwICovOyB9OwogCQk1MTVGNzk0RjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNUY3OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5oICovOyB9
OwogCQk1MTVGNzk1MDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0RDFDRkM5RjRB
MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNrLmggKi87IH07CisJCTUxNUY3OTU2MUNGRDNBNjkw
MENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJl
YWRRdWV1ZS5oICovOyB9OwogCQk1NTMwNzFDQTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTMw
NzFDOTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi87IH07CiAJCTcwQTk5M0ZF
MUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEE5OTNGRjFBRDcxNTEzMDBGQTYxNUIgLyog
U3ltYm9sUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQTk5M0ZEMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5oICovOyB9
OwpAQCAtNDI2LDYgKzQyNyw3IEBACiAJCTUxNUY3OTRCMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9z
c1RocmVhZENvcGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cm9zc1RocmVhZENvcGllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3
OTRDMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDcm9zc1RocmVhZENvcGllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTVGNzk0RDFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRUYXNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyog
Q3Jvc3NUaHJlYWRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9z
c1RocmVhZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MzA3MUM5MUM0
MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGlueUxSVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
MjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDUsNiArODA3
LDcgQEAKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8sCiAJ
CQkJNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywK
IAkJCQk1MTVGNzk0QzFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywK
KwkJCQk1MTVGNzk1NTFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oICovLAog
CQkJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLywKIAkJ
CQlBOEE0NzI3MzE1MUE4MjVBMDA0MTIzRkYgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuY3BwICovLAogCQkJCUE4QTQ3Mjc0MTUxQTgyNUEwMDQxMjNGRiAvKiBDcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oICovLApAQCAtMTE4Miw2ICsxMTg1LDcgQEAKIAkJCQlBOEE0NzQ1
MjE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzM4QTE1MUE4MjVCMDA0MTIzRkYgLyogQml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzM4QzE1MUE4MjVCMDA0MTIzRkYgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTVGNzk1NjFDRkQzQTY5MDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE5NDRGNDcxQzNEODgxNDAwNUJEMjhDIC8qIEJsb2NrUHRyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0RERTkzMjFDREMwNTJEMDBGRDM0OTEgLyogZHlsZFNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczOEUxNTFBODI1QjAwNDEyM0ZGIC8qIEJsb2NrU3RhY2su
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IGY5
N2FkNzhjMWFhNmY2MWY2NmE5YTY4YjJkZWEwMzViMWUxM2U2M2IuLmU1OTI0OWY5ODkyNzJjZWRm
YWMzZTM2OWE3ZWE2MmM2YTgxMWYyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5j
cHAKQEAgLTMwLDcgKzMwLDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aD4KKworI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFRhc2suaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTc4LDMgKzgwLDQgQEAgc3RhdGljX2Fzc2VydCgoc3RkOjppc19zYW1lPGludCwgQ3Jv
c3NUaHJlYWRDb3BpZXI8UmVmUHRyPENvcGllclJlZkNvdW50ZWRUZXN0Pj4KIHN0YXRpY19hc3Nl
cnQoKHN0ZDo6aXNfc2FtZTxpbnQsIENyb3NzVGhyZWFkQ29waWVyPENvcGllclJlZkNvdW50ZWRU
ZXN0Kj46OlR5cGU+Ojp2YWx1ZSksICJDcm9zc1RocmVhZENvcGllciBzcGVjaWFsaXphdGlvbiBp
bXByb3Blcmx5IGFwcGxpZWQgdG8gcmF3IHBvaW50ZXIgb2YgYSBSZWZDb3VudGVkIChidXQgbm90
IFRocmVhZFNhZmVSZWZDb3VudGVkKSB0eXBlIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ2YmU5NTc1ODRmMjBmMWY3N2Mx
ODA4ODcxZTBlYWRhOWY5NGU5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Ny
b3NzVGhyZWFkUXVldWUuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK2NsYXNzIENyb3NzVGhyZWFkUXVl
dWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUXVldWUpOworcHVibGlj
OgorICAgIENyb3NzVGhyZWFkUXVldWUoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIGFwcGVuZChE
YXRhVHlwZSYmKTsKKworICAgIERhdGFUeXBlIHdhaXRGb3JNZXNzYWdlKCk7CisgICAgT3B0aW9u
YWw8RGF0YVR5cGU+IHRyeUdldE1lc3NhZ2UoKTsKKworICAgIGJvb2wgaXNLaWxsZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIG11dGFibGUgTG9jayBtX2xvY2s7
CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOworICAgIERlcXVlPERhdGFUeXBlPiBtX3F1ZXVl
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Cit2b2lkIENyb3NzVGhyZWFkUXVl
dWU8RGF0YVR5cGU+OjphcHBlbmQoRGF0YVR5cGUmJiBtZXNzYWdlKQoreworICAgIExvY2tIb2xk
ZXIgbG9jayhtX2xvY2spOworICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwor
ICAgIG1fY29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRh
VHlwZT4KK0RhdGFUeXBlIENyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp3YWl0Rm9yTWVzc2Fn
ZSgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CisKKyAgICBhdXRvIGZvdW5kID0g
bV9xdWV1ZS5lbmQoKTsKKyAgICB3aGlsZSAoZm91bmQgPT0gbV9xdWV1ZS5lbmQoKSkgeworICAg
ICAgICBmb3VuZCA9IG1fcXVldWUuYmVnaW4oKTsKKyAgICAgICAgaWYgKGZvdW5kICE9IG1fcXVl
dWUuZW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIGluZmluaXRlVGltZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7Cisg
ICAgICAgIG1fY29uZGl0aW9uLndhaXRVbnRpbFdhbGxDbG9ja1NlY29uZHMobV9sb2NrLCBpbmZp
bml0ZVRpbWUpOworICAgIH0KKworICAgIHJldHVybiBtX3F1ZXVlLnRha2VGaXJzdCgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KK09wdGlvbmFsPERhdGFUeXBlPiBDcm9zc1Ro
cmVhZFF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZSgpCit7CisgICAgTG9ja0hvbGRlciBs
b2NrKG1fbG9jayk7CisKKyAgICBpZiAobV9xdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICByZXR1cm4gbV9xdWV1ZS50YWtlRmlyc3QoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q3Jvc3NUaHJlYWRRdWV1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrLmgKaW5kZXggZTljMmFiOTA0ZTJlNDBhMjcxMzEwZjJiMTc4NzdhMjBhMmE1NTQ1Ni4u
MWExNmUzYTM5MGVhYTRiYzNmMjFjMzBiZTE5ZDNjOThlY2M1MWY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRUYXNrLmgKQEAgLTI3LDEyICsyNywxNCBAQAogCiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBDcm9z
c1RocmVhZFRhc2sgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkVGFzayk7
CiBwdWJsaWM6CisgICAgQ3Jvc3NUaHJlYWRUYXNrKCkgPSBkZWZhdWx0OworCiAgICAgQ3Jvc3NU
aHJlYWRUYXNrKE5vbmNvcHlhYmxlRnVuY3Rpb248dm9pZCAoKT4mJiB0YXNrRnVuY3Rpb24pCiAg
ICAgICAgIDogbV90YXNrRnVuY3Rpb24oV1RGTW92ZSh0YXNrRnVuY3Rpb24pKQogICAgIHsKQEAg
LTQ1LDggKzQ3LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIENyb3NzVGhy
ZWFkVGFzaygpIHsgfQotCiAgICAgTm9uY29weWFibGVGdW5jdGlvbjx2b2lkICgpPiBtX3Rhc2tG
dW5jdGlvbjsKIH07CiAKQEAgLTczLDMzICs3MywzMyBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAg
ICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoKSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tJbXBsPFQ+PigmY2FsbGVlLCBtZXRob2QpOwor
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQ+KCZjYWxsZWUsIG1ldGhvZCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+Ci1zdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1Ro
cmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lk
IChUOjoqbWV0aG9kKShNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxPj4oCisgICAg
cmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxPigKICAgICAgICAgJmNhbGxlZSwKICAg
ICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShw
YXJhbWV0ZXIxKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBl
bmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDI+Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRhc2sgY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9k
KShNUDEsIE1QMiksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAgICAgY29uc3QgUDImIHBh
cmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNr
SW1wbDxULCBNUDEsIE1QMj4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1Q
MSwgTVAyPigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAgbWV0aG9kLAogICAgICAgICBXVEY6
OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKQEAgLTEwOCwxNCArMTA4
LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4K
LXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygK
K0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAog
ICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMpLAogICAgIGNvbnN0IFAxJiBwYXJh
bWV0ZXIxLAogICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0
ZXIzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFza0ltcGw8
VCwgTVAxLCBNUDIsIE1QMz4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1Q
MSwgTVAyLCBNUDM+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRob2QsCiAgICAgICAg
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLApAQCAtMTI0LDEz
ICsxMjQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgotc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NU
aHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICB2b2lkICgqbWV0aG9kKShNUDEs
IE1QMiwgTVAzKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25zdCBQMiYgcGFy
YW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDcm9zc1RocmVhZFRhc2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+PigKKyAg
ICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrU3RhdGljSW1wbDxNUDEsIE1QMiwgTVAzPigKICAgICAg
ICAgbWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJh
bWV0ZXIxKSwKICAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1l
dGVyMiksCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFz
az4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0Pgotc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJl
YWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAo
VDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVy
MSwKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBj
cmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMsCiAgICAgY29u
c3QgUDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NU
aHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQ+PigKKyAgICByZXR1cm4gQ3Jvc3NU
aHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQ+KAogICAgICAgICAmY2FsbGVlLAog
ICAgICAgICBtZXRob2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5
KHBhcmFtZXRlcjEpLApAQCAtMTU2LDcgKzE1Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlw
ZW5hbWUgUDUsIHR5cGVuYW1lIE1QNT4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVh
ZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1KSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKQEAgLTE2NSw3ICsxNjUs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRh
c2soCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQsCiAgICAgY29uc3QgUDUmIHBhcmFtZXRlcjUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBN
UDEsIE1QMiwgTVAzLCBNUDQsIE1QNT4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBs
PFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1PigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAg
bWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1
LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDY+Ci1zdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCitDcm9zc1RocmVhZFRh
c2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoq
bWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2KSwKICAgICBjb25zdCBQMSYgcGFy
YW1ldGVyMSwKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRU
YXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDUmIHBhcmFtZXRlcjUsCiAg
ICAgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2Pj4oCisg
ICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNj4oCiAgICAgICAgICZjYWxsZWUsCiAgICAgICAgIG1ldGhvZCwKICAgICAgICAgV1RGOjpD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCkBAIC0xOTgsNyArMTk4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBl
bmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFt
ZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3Pgotc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAorQ3Jvc3NUaHJl
YWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAo
VDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3KSwKICAgICBjb25z
dCBQMSYgcGFyYW1ldGVyMSwKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDYmIHBhcmFt
ZXRlcjYsCiAgICAgY29uc3QgUDcmIHBhcmFtZXRlcjcpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwg
TVA2LCBNUDc+PigKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwg
TVAzLCBNUDQsIE1QNSwgTVA2LCBNUDc+KAogICAgICAgICAmY2FsbGVlLAogICAgICAgICBtZXRo
b2QsCiAgICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
LApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
UDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMs
IHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5
cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVu
YW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KLXN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+IGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKK0Nyb3NzVGhyZWFkVGFzayBjcmVh
dGVDcm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2Qp
KE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwKICAgICBjb25zdCBQMSYg
cGFyYW1ldGVyMSwKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJl
YWRUYXNrPiBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDcmIHBhcmFtZXRlcjcs
CiAgICAgY29uc3QgUDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBN
UDcsIE1QOD4+KAorICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4PigKICAgICAgICAgJmNhbGxlZSwKICAgICAgICAg
bWV0aG9kLAogICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCA4ZmY2YTY2MDRjYmFiODc4ODM1NzA5
NGRmMDRkZDliOTE0MzhjMDI5Li40ZDM3MGM5OTk2NGJmMGM0ZWY3MDM0MDQwZjA3M2I3MDAxNmQx
NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNhY3Rpb25PcGVyYXRp
b24uaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1
ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTE1Nyw3ICsxNTgsNyBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlvbnM7CiAgICAgTG9jayBtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTG9jazsKIAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+
IG1fbWFpblRocmVhZFF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNr
PiBtX21haW5UaHJlYWRRdWV1ZTsKICAgICBMb2NrIG1fbWFpblRocmVhZFRhc2tMb2NrOwogICAg
IFJlZlB0cjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IG1fbWFpblRocmVhZFByb3RlY3RvcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCmluZGV4IDNkZTFlZjI5MTI0M2IxMDRhOTAxZWRiZDU0NjZhOTMzMjc2NzYzY2Eu
LmNjN2EzZjYwMWMxNjQ3NWI3Nzg2ZmQ0ZTJkNTljMmY5OGQ5NGRmNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBA
IC00MzEsMTMgKzQzMSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1l
cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludAogICAgIGNvbm5lY3Rp
b24tPmRpZEdldEFsbERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7CiB9
CiAKLXZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKENy
b3NzVGhyZWFkVGFzayYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCi12b2lkIElEQlNl
cnZlcjo6cG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+JiYgdGFzaykKK3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NU
aHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBt
X2RhdGFiYXNlUmVwbHlRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CkBAIC00NjcsOCArNDY3
LDggQEAgdm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCgpCiAgICAgICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9uTG9jayk7CiAgICAgfQogCi0gICAg
d2hpbGUgKGF1dG8gdGFzayA9IG1fZGF0YWJhc2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQotICAg
ICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAgIHdoaWxlICghbV9kYXRhYmFzZVF1ZXVlLmlz
S2lsbGVkKCkpCisgICAgICAgIG1fZGF0YWJhc2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZv
cm1UYXNrKCk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRo
cmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmgKaW5kZXggMDc3MGMxYzAzZjZjNzJlNzg4N2JkYTMzODE2NzhlMWIwYmFkODI5
MS4uNzJlM2Y3MTIzNDM3MmVkM2MxM2FkY2Y3NjgwMTE2MGQ5YTEyMDkyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkUXVldWUuaD4KICNpbmNsdWRlIDx3
dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFRhc2s+JiYpOwotICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFRhc2s+JiYpOworICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhDcm9zc1Ro
cmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRU
YXNrJiYpOwogCiAgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CkBAIC0xMjQsOCArMTI1LDggQEAgcHJp
dmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRo
cmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1Ro
cmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAgICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRU
YXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhy
ZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJl
YWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1fZGF0YWJhc2VDb25uZWN0aW9uczsKICAgICBI
YXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bio+IG1fdHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggZjBkNDcy
Nzc4NDY0YWQ5MzNlOGU2ZTExYTM3Y2QzYjkxZDcxNTA1MC4uNTAyMzMxMWY0ZmNiNWRhNDMyYzZl
ZWUyYjNmMzY5MzU1YmU1OTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0xNTA1
LDcgKzE1MDUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNvbXBsZXRl
ZChSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbgogICAgICAgICBpbnZva2VPcGVy
YXRpb25BbmRUcmFuc2FjdGlvblRpbWVyKCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNr
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRh
c2smJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9kYXRhYmFz
ZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkVGFzaz4mJiB0YXNrCiAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZXhlY3V0ZU5leHREYXRh
YmFzZVRhc2spKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFz
a1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYgdGFzaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJiB0
YXNrKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIG1fZGF0YWJhc2VSZXBs
eVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXgg
ZTk3MDI1NjcyMDNkNDcyYjdiOTNmYmZmZTIyMGM4ZGQ3ZjQwNDA0Ni4uZWFlNTRiMGRiYmRiMDU2
YTYwNmI5ZjU2N2E3YmMzNjg3MTJjMzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KQEAgLTE5NSw4ICsxOTYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBw
cmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7
CiAKLSAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
VGFzaz4mJik7Ci0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkVGFzaz4mJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhy
ZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2tSZXBseShDcm9zc1RocmVhZFRh
c2smJik7CiAgICAgdm9pZCBleGVjdXRlTmV4dERhdGFiYXNlVGFzaygpOwogICAgIHZvaWQgZXhl
Y3V0ZU5leHREYXRhYmFzZVRhc2tSZXBseSgpOwogCkBAIC0yNDIsOCArMjQzLDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9kZWxldGVCYWNraW5nU3RvcmVJblByb2dyZXNzIHsgZmFsc2UgfTsK
IAotICAgIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKLSAg
ICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKKyAg
ICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVF1ZXVlOworICAg
IENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsK
ICAgICBzdGQ6OmF0b21pYzx1aW50NjRfdD4gbV9xdWV1ZWRUYXNrQ291bnQgeyAwIH07CiAKICAg
ICBib29sIG1faGFyZENsb3NlZEZvclVzZXJEZWxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZmU3NWQyNTU5ZDM3YWI0M2Qw
MTY0YWRhZDc2NGEwZjQ1NDI4ZjhlZi4uMDY1YTI4OGU3ZTUxNjkyYjI4OGQ2MzczM2E0MThlZTIz
MDY5MWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CkBAIC0xNzIsMTEgKzE3Miw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CiAgICAgdm9pZCBwb3N0Q3Jvc3NUaHJlYWRUYXNrKEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKICAgICB7Ci0gICAgICAgIGF1dG8gY3Jvc3NUaHJlYWRUYXNrID0gY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8qIHJhd1Rhc2sgPSBjcm9z
c1RocmVhZFRhc2sucmVsZWFzZSgpOwotICAgICAgICBwb3N0VGFzayhbPV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRh
c2s+IHRhc2socmF3VGFzayk7Ci0gICAgICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworICAg
ICAgICBwb3N0VGFzayhbY3Jvc3NUaHJlYWRUYXNrID0gY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKGFy
Z3VtZW50cy4uLildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNyb3NzVGhyZWFkVGFzay5wZXJmb3JtVGFzaygpOwogICAgICAgICB9KTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3Bw
CmluZGV4IGZmODE5NGUwY2ZiNzUzMDVhYjMzN2MxYTVkNzc2ZThkMDJjYmQ3ZGIuLjFlYzc3M2Iz
ODEwYjJmNmIyOGViY2JjZjBkYjZhYWEwMDllNWUyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8
d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTEwMCwxMiArMTAxLDEyIEBAIHN0YXRpYyBUaHJlYWRT
cGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1hcDsK
IH0KIAotc3RhdGljIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+JiB0aHJlYWRhYmxlUXVl
dWUoKQorc3RhdGljIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiYgdGhyZWFkYWJs
ZVF1ZXVlKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3Rh
dGljIE1lc3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+KiBxdWV1ZTsKKyAgICBzdGF0aWMgQ3Jv
c3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+KiBxdWV1ZTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewotICAgICAgICBxdWV1ZSA9IG5ldyBNZXNzYWdlUXVldWU8Q3Jvc3NU
aHJlYWRUYXNrPjsKKyAgICAgICAgcXVldWUgPSBuZXcgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1Ro
cmVhZFRhc2s+OwogICAgIH0pOwogCiAgICAgcmV0dXJuICpxdWV1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggNDY4Zjg0
NzdiNDc2M2M3OTY5Y2Y1NzIyMThkZWIzMzRkMzAyY2FiYi4uYzJkNzBkMmVjZjlmZTExZjBmOTZj
NGI5OTg2YjBlNTNmZGVhMjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBTdHJpbmcgRGF0
YWJhc2VQcm9jZXNzOjphYnNvbHV0ZUluZGV4ZWREYXRhYmFzZVBhdGhGcm9tRGF0YWJhc2VSZWxh
dGl2ZVBhdGgoY29ucwogfQogI2VuZGlmCiAKLXZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0
YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2spCit2b2lkIERh
dGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJiB0YXNrKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE2MCwxNCArMTYwLDE0IEBA
IHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiB0YXNrOworICAgIENyb3NzVGhyZWFkVGFzayB0YXNrOwogICAgIHsKICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CiAgICAgICAgIEFTU0VS
VCghbV9kYXRhYmFzZVRhc2tzLmlzRW1wdHkoKSk7CiAgICAgICAgIHRhc2sgPSBtX2RhdGFiYXNl
VGFza3MudGFrZUZpcnN0KCk7CiAgICAgfQogCi0gICAgdGFzay0+cGVyZm9ybVRhc2soKTsKKyAg
ICB0YXNrLnBlcmZvcm1UYXNrKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpjcmVhdGVE
YXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQg
RGF0YWJhc2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2ViCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRh
YmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQaWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9y
ZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4KLSAgICAgICAgcG9zdERhdGFiYXNlVGFzayhzdGQ6
Om1ha2VfdW5pcXVlPENyb3NzVGhyZWFkVGFzaz4oW2NhbGxiYWNrQWdncmVnYXRvciwgd2Vic2l0
ZURhdGFUeXBlcywgdGhpc10geworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKENyb3NzVGhyZWFk
VGFzayhbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7CiAKICAg
ICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBzZWN1cml0eU9yaWdpbnMg
PSBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAppbmRleCBmMGJiOTdjNjg5NzA1OTgwNmRhYzhh
MzFjM2QxYjY5MWQ2ODkxMDM3Li5kMDNiZTk0YTU1MzA1MDVhNGNhOTYxZTFjZjM4NTgxYTI1M2U5
NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIFdvcmtRdWV1ZSYgcXVldWUo
KSB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9CiAKLSAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2so
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4pOworICAgIHZvaWQgcG9zdERhdGFiYXNl
VGFzayhDcm9zc1RocmVhZFRhc2smJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICAvLyBXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0
aW9uSGFuZGxlcnM7CiAKLSAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
Pj4gbV9kYXRhYmFzZVRhc2tzOworICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFz
ZVRhc2tzOwogICAgIExvY2sgbV9kYXRhYmFzZVRhc2tNdXRleDsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>