<?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>235615</bug_id>
          
          <creation_ts>2022-01-25 15:31:50 -0800</creation_ts>
          <short_desc>REGRESSION(r287684) speedtest.net uses many GB of memory</short_desc>
          <delta_ts>2022-02-10 16:40:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232424</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>menard</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1833887</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 15:31:50 -0800</bug_when>
    <thetext>REGRESSION(r287684) speedtest.net uses many GB of memory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833889</commentid>
    <comment_count>1</comment_count>
      <attachid>449974</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 15:33:13 -0800</bug_when>
    <thetext>Created attachment 449974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833890</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 15:33:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87830583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833891</commentid>
    <comment_count>3</comment_count>
      <attachid>449974</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-25 15:34:12 -0800</bug_when>
    <thetext>Comment on attachment 449974
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        For a reason that is still somewhat mysterious to me, the change to XMLHttpRequest::didReceiveData

Doesn&apos;t inspire confidence :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833892</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 15:34:48 -0800</bug_when>
    <thetext>Try it and see for yourself.  Before and after, the difference is quite clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833893</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-25 15:35:38 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Try it and see for yourself.  Before and after, the difference is quite
&gt; clear.

Well, I believe you but it&apos;d be good to figure out WHY still. You may be working around a very important bug that will bite us again in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833894</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-25 15:38:32 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Alex Christensen from comment #4)
&gt; &gt; Try it and see for yourself.  Before and after, the difference is quite
&gt; &gt; clear.
&gt; 
&gt; Well, I believe you but it&apos;d be good to figure out WHY still. You may be
&gt; working around a very important bug that will bite us again in the future.

Also, r287684 seems to be doing a lot of extra data copying (when allocating those SharedBuffers) unless I am misreading. It is not clear to me we want to keep going in that direction (perf/memory wise). We may want to revert r287684 instead of e.g.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833912</commentid>
    <comment_count>7</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 16:07:05 -0800</bug_when>
    <thetext>I don’t think this is the right fix. 

There are no copies/allocation. The memory coming from the network process is a SharedMemory and is wrapped in a SharedBuffer

So the memory would still be allocated to the network process rather than the content process. 

You need to change the ownership. 

Your change by doing a new allocation/copy as a side effect assign the memory to the content process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833914</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-25 16:09:26 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #7)
&gt; I don’t think this is the right fix. 
&gt; 
&gt; There are no copies/allocation. The memory coming from the network process
&gt; is a SharedMemory and is wrapped in a SharedBuffer

My understanding was that it is only SharedMemory if the data comes from the network cache, not when it comes from the network?

&gt; 
&gt; So the memory would still be allocated to the network process rather than
&gt; the content process. 
&gt; 
&gt; You need to change the ownership. 
&gt; 
&gt; Your change by doing a new allocation/copy as a side effect assign the
&gt; memory to the content process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833927</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 16:36:17 -0800</bug_when>
    <thetext>To reduce risk for the branch, I&apos;m preparing a revert of r287684 and r287687.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833944</commentid>
    <comment_count>10</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 17:10:44 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Jean-Yves Avenard [:jya] from comment #7)
&gt; &gt; I don’t think this is the right fix. 
&gt; &gt; 
&gt; &gt; There are no copies/allocation. The memory coming from the network process
&gt; &gt; is a SharedMemory and is wrapped in a SharedBuffer
&gt; 
&gt; My understanding was that it is only SharedMemory if the data comes from the
&gt; network cache, not when it comes from the network?

It&apos;s all SharedMemory if the data originates from the network process.
Wrapped in a SharedBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833951</commentid>
    <comment_count>11</comment_count>
      <attachid>449974</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-25 17:14:24 -0800</bug_when>
    <thetext>Comment on attachment 449974
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1062
&gt; +        m_binaryResponseBuilder.append(buffer.data(), buffer.size());

BTW, this would revert to the behaviour of what was done prior https://commits.webkit.org/r287684.

So while it a memory/performance regression following r287684; it is not a regression compare to what we had before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833971</commentid>
    <comment_count>12</comment_count>
      <attachid>449993</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 19:26:13 -0800</bug_when>
    <thetext>Created attachment 449993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833980</commentid>
    <comment_count>13</comment_count>
      <attachid>449995</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-01-25 21:12:11 -0800</bug_when>
    <thetext>Created attachment 449995
safari-613-branch-patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834009</commentid>
    <comment_count>14</comment_count>
      <attachid>450003</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 01:02:48 -0800</bug_when>
    <thetext>Created attachment 450003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834028</commentid>
    <comment_count>15</comment_count>
      <attachid>450003</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-26 02:39:29 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

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

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:71
&gt; +        auto incrementalData = data.getSomeData(previousDataSize);

This makes SharedBufferDataView::createSharedBuffer() or more generally SharedBuffer created from views potentially harmful.

Unrelated but I wonder whether we need to update m_data (makeContiguous call) in the case of DataBufferingPolicy::DoNotBufferData.
It seems there is a potential to further reduce some memory allocations in that case: XHR, fetch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834030</commentid>
    <comment_count>16</comment_count>
      <attachid>450003</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 02:46:51 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

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

&gt;&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:71
&gt;&gt; +        auto incrementalData = data.getSomeData(previousDataSize);
&gt; 
&gt; This makes SharedBufferDataView::createSharedBuffer() or more generally SharedBuffer created from views potentially harmful.
&gt; 
&gt; Unrelated but I wonder whether we need to update m_data (makeContiguous call) in the case of DataBufferingPolicy::DoNotBufferData.
&gt; It seems there is a potential to further reduce some memory allocations in that case: XHR, fetch...

harmful in what way? it has always behaved that way.

could you open a bug for following for the non-cache side of things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834032</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-26 02:51:59 -0800</bug_when>
    <thetext>&gt; harmful in what way? it has always behaved that way.

A SharedBuffer might be much bigger than its size actually tells us.

&gt; could you open a bug for following for the non-cache side of things?

I filed https://bugs.webkit.org/show_bug.cgi?id=235635</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834034</commentid>
    <comment_count>18</comment_count>
      <attachid>450003</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 02:52:39 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

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

&gt;&gt;&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:71
&gt;&gt;&gt; +        auto incrementalData = data.getSomeData(previousDataSize);
&gt;&gt; 
&gt;&gt; This makes SharedBufferDataView::createSharedBuffer() or more generally SharedBuffer created from views potentially harmful.
&gt;&gt; 
&gt;&gt; Unrelated but I wonder whether we need to update m_data (makeContiguous call) in the case of DataBufferingPolicy::DoNotBufferData.
&gt;&gt; It seems there is a potential to further reduce some memory allocations in that case: XHR, fetch...
&gt; 
&gt; harmful in what way? it has always behaved that way.
&gt; 
&gt; could you open a bug for following for the non-cache side of things?

Actually, I can optimise things right away as m_data is cleared immediately after when data policy is to not cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834035</commentid>
    <comment_count>19</comment_count>
      <attachid>450003</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 02:58:50 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:71
&gt;&gt;&gt;&gt; +        auto incrementalData = data.getSomeData(previousDataSize);
&gt;&gt;&gt; 
&gt;&gt;&gt; This makes SharedBufferDataView::createSharedBuffer() or more generally SharedBuffer created from views potentially harmful.
&gt;&gt;&gt; 
&gt;&gt;&gt; Unrelated but I wonder whether we need to update m_data (makeContiguous call) in the case of DataBufferingPolicy::DoNotBufferData.
&gt;&gt;&gt; It seems there is a potential to further reduce some memory allocations in that case: XHR, fetch...
&gt;&gt; 
&gt;&gt; harmful in what way? it has always behaved that way.
&gt;&gt; 
&gt;&gt; could you open a bug for following for the non-cache side of things?
&gt; 
&gt; Actually, I can optimise things right away as m_data is cleared immediately after when data policy is to not cache

on second thoughts, there&apos;s so many re-entrancy happening in this area of the code ; I&apos;d prefer to keep it that way for now and look into the matter at a later stage, too scared of side effects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834039</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-26 03:37:06 -0800</bug_when>
    <thetext>&gt; on second thoughts, there&apos;s so many re-entrancy happening in this area of
&gt; the code ; I&apos;d prefer to keep it that way for now and look into the matter
&gt; at a later stage, too scared of side effects

Yep, it would be nice to make that code easier to reason about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834044</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-26 04:57:30 -0800</bug_when>
    <thetext>Committed r288614 (246433@main): &lt;https://commits.webkit.org/246433@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450003.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834048</commentid>
    <comment_count>22</comment_count>
      <attachid>449993</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 05:15:31 -0800</bug_when>
    <thetext>Comment on attachment 449993
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This effectively reverts r287684 and r287687.

on ToT, you would need to revert several more changes for this test to be green. In particular https://commits.webkit.org/r287808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834141</commentid>
    <comment_count>23</comment_count>
      <attachid>450003</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-26 10:05:30 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        However, that caused every single intermediary accumulated buffers to be
&gt; +        kept referenced by the XMLHttpRequest SharedBufferBuilder leading to
&gt; +        massive memory use.

Can you explain this detail a little more? What behavior changes when we operate on &apos;data&apos; instead of &apos;m_data&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834143</commentid>
    <comment_count>24</comment_count>
      <attachid>450003</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-26 10:07:59 -0800</bug_when>
    <thetext>Comment on attachment 450003
Patch

Seems like a valuable thing to test, now that we&apos;ve discovered these quirks.

Is it possible to write a layout test for this that would jetsam on our iOS testers, or a cross platform test that uses window.internals to check for crazy high memory use?

We can use an http test with a .cgi script to supply a fast/huge XHR response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834156</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-26 10:20:20 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        However, that caused every single intermediary accumulated buffers to be
&gt; &gt; +        kept referenced by the XMLHttpRequest SharedBufferBuilder leading to
&gt; &gt; +        massive memory use.
&gt; 
&gt; Can you explain this detail a little more? What behavior changes when we
&gt; operate on &apos;data&apos; instead of &apos;m_data&apos;?

Here is my understanding. For each update, we do the following steps:
- Set m_data to a new big continuous chunk of data that stores all received data
- Create a view of the new data as a SharedBuffer. This SharedBuffer references the big continuous chunk
- XHR stores a ref to the view, hence keep the big chunk alive.

Each XHR chunk, although small in data that can be accessed, is actually keeping in memory all temporary created m_data chunks.

&gt; Is it possible to write a layout test for this that would jetsam on our iOS
&gt; testers, or a cross platform test that uses window.internals to check for
&gt; crazy high memory use?

An internals test is probably a good idea though that might require adding a getter in SharedBuffer to know the actual allocated size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834162</commentid>
    <comment_count>26</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-26 10:32:02 -0800</bug_when>
    <thetext>&gt; An internals test is probably a good idea though that might require adding a
&gt; getter in SharedBuffer to know the actual allocated size.

I was thinking of something coarser like window.internals.isUnderMemoryPressure, or adding a new interface like window.internals.memoryUsage which returned something like getrusage.ru_idrss or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834163</commentid>
    <comment_count>27</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-26 10:40:04 -0800</bug_when>
    <thetext>&gt; - Create a view of the new data as a SharedBuffer. This SharedBuffer
&gt; references the big continuous chunk
&gt; - XHR stores a ref to the view, hence keep the big chunk alive.

Got it: The key to the bug is that each call to didReceiveData receives a view of a *new* SharedBuffer, and each new SharedBuffer is as big as the whole response; but XHR expected to be passed a buffer that was only as big as the new data, to accumulate in a builder.

It seems like we could improve this interface by passing both the new data and the accumulated data, since CachedRawResource has both. Then XHR wouldn&apos;t need to maintain its own response builder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834165</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-26 10:45:53 -0800</bug_when>
    <thetext>I am not sure we want to expose the whole data, not all clients need it.
We should actually be able to just pass the new data directly without any special processing in the nobuffer case, m_data would remain null in that case for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834329</commentid>
    <comment_count>29</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 15:41:55 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #27)
&gt; &gt; - Create a view of the new data as a SharedBuffer. This SharedBuffer
&gt; &gt; references the big continuous chunk
&gt; &gt; - XHR stores a ref to the view, hence keep the big chunk alive.
&gt; 
&gt; Got it: The key to the bug is that each call to didReceiveData receives a
&gt; view of a *new* SharedBuffer, and each new SharedBuffer is as big as the
&gt; whole response; but XHR expected to be passed a buffer that was only as big
&gt; as the new data, to accumulate in a builder.

That&apos;s right.
However the key is that the new incoming SharedBuffer is a fragmented one, it&apos;s made of multiple chunks, and XHR only expects that last chunk.

The CachedRawResource however maintains a *contiguous* SharedBuffer that is created at each didReceiveData call and that is kept alive for the duration of the loop letting all the client knows about that new chunks.
That contiguous SharedBuffer needs to be kept temporarily because some clients when being notified of a new chunk queries the CachedRawResource through a re-entrant call to get a pointer to the flatten data.

With this bug, the new chunk of data given to the client was a SharedBuffer made from a SharedBufferDataView that kept a strong ref to the temporary flatten data.
As the XHR client keeps a strong reference to every chunks, each accumulated buffer were never deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834369</commentid>
    <comment_count>30</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2022-01-26 17:22:13 -0800</bug_when>
    <thetext>Reverted r288614 for reason:

Caused layout test crashes

Committed r288659 (246467@trunk): &lt;https://commits.webkit.org/246467@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834412</commentid>
    <comment_count>31</comment_count>
      <attachid>450104</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-26 22:03:08 -0800</bug_when>
    <thetext>Created attachment 450104
Patch

Fix UAF due to the CachedRawResource being cleared through a re-entrant call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834416</commentid>
    <comment_count>32</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-26 23:00:11 -0800</bug_when>
    <thetext>Committed r288667 (246473@main): &lt;https://commits.webkit.org/246473@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450104.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449974</attachid>
            <date>2022-01-25 15:33:13 -0800</date>
            <delta_ts>2022-01-26 22:06:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235615-20220125153313.patch</filename>
            <type>text/plain</type>
            <size>1598</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI4MTNjYjEzZGQ0N2Qy
MDVmODUzNDQxMDQ3NDJjNmU0MzM5Y2IzNS4uN2VkZDhjNTQ2YWYyZDBhZDRjZGY2MjAwMjEwOGM0
NWM1YmViM2NhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAxLTI1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjg3Njg0KSBzcGVlZHRlc3QubmV0IHVzZXMgbWFueSBHQiBvZiBtZW1vcnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTYxNQorICAgICAg
ICA8cmRhcjovLzg3ODMwNTgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZvciBhIHJlYXNvbiB0aGF0IGlzIHN0aWxsIHNvbWV3aGF0IG15c3Rlcmlv
dXMgdG8gbWUsIHRoZSBjaGFuZ2UgdG8gWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhCisg
ICAgICAgIGluIHIyODc2ODQgbWFkZSBzcGVlZHRlc3QubmV0IHVzZSBzbyBtdWNoIG1lbW9yeSB0
aGF0IGl0IGdldHMga2lsbGVkLiAgVW5kb2luZyB0aGF0IG9uZSBsaW5lIGZpeGVzIGl0LgorCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIwMjItMDEtMjUgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgQ29udGFpbmVyIFF1ZXJpZXNdIFBh
cnNpbmcgc3VwcG9ydCBmb3IgY29udGFpbmVyIHNob3J0aGFuZCBwcm9wZXJ0eQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggODk1ZGM5ZDA4NTUwYWQ2MDhlNTk3OWM3MDhk
NWE5YWEwYTU0NGI3MC4uNGEwZGFmNWZlNDI1NjRjMzgxMmNhMjY2OTQ3NmFjYTNmZTZhZDY1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMDU5LDcgKzEwNTksNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoYnVmZmVyKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449993</attachid>
            <date>2022-01-25 19:26:13 -0800</date>
            <delta_ts>2022-02-10 16:39:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235615-20220125192612.patch</filename>
            <type>text/plain</type>
            <size>258202</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzOSBAQAorMjAyMi0wMS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjI4NzY4NCkgc3BlZWR0ZXN0Lm5ldCB1c2VzIG1hbnkgR0Igb2YgbWVtb3J5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGVmZmVjdGl2ZWx5
IHJldmVydHMgcjI4NzY4NCBhbmQgcjI4NzY4Ny4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2JDaHVuayk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUNodW5rKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGZpbGVhcGkvQmxv
Yi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzdHJlYW0pOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
Lmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQmluYXJ5Q2h1bmsp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUlt
cGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291
cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
cXVlc3RXaXRoUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToK
KyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRk
RGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6YWRkQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
U3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3Vy
Y2U6OmFwcGVuZCk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRh
UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVy
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFz
U2hhcmVkQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1
cmxEaWRSZWNlaXZlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTps
ZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5oOgorCiAyMDIyLTAxLTI1ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIERvY3VtZW50OjpMaXN0ZW5lclR5cGUgZW51
bWVyYXRvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5
LDEzICszNzksMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZQog
ICAgIH0KIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1fc291cmNlKSB7Ci0gICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKKyAgICAg
ICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCShy
ZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAg
ICAgRmV0Y2hCb2R5Q29uc3VtZXIgY2xvbmUoKTsKIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0K
ICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk4LDEwICsyOTgsMTEgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdGYWls
ZWQoKQogICAgIGZpbmlzaEJsb2JMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5T3duZXI6
OmJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKKyAgICBB
U1NFUlQoZGF0YSk7CiAgICAgQVNTRVJUKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpOwotICAgIGlm
ICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQogICAgICAgICBzdG9wKCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgJKHJl
dmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZldGNo
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTAyLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAv
LyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAg
ICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxl
ZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExNSw3ICsxMTQsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFs
IHsgb3duZXIuYmxvYkNodW5rKGJ1ZmZlcik7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1
bmsoZGF0YSwgc2l6ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAkocmV2aXNpb24g
Mjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXMKICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpOwogfQogCi12b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIHZhbHVlLCBpbnQgc2l6ZSkKIHsKICAgICBpZiAoIW1fY29uc3VtZXIpIHsKLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGEodmFsdWUsIHNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fY29uc3VtZXItPmFwcGVuZChidWZmZXIpOworICAgIG1fY29uc3VtZXItPmFwcGVuZCh2YWx1
ZSwgc2l6ZSk7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCShyZXZpc2lv
biAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAv
LyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IEFQSS4KICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdWNjZWVkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAyODg1
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTgsMTIgKzM1OCwxMiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFJlY2VpCiAgICAgICAgIHJlc3BvbnNlQ2FsbGJhY2sobV9yZXNwb25zZSk7
CiB9CiAKLXZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAg
IEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgfHwgbV9jb25zdW1lRGF0
YUNhbGxiYWNrKTsKIAogICAgIGlmIChtX2NvbnN1bWVEYXRhQ2FsbGJhY2spIHsKLSAgICAgICAg
U3BhbiBjaHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfTsKKyAgICAgICAgU3Bh
biBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZj
aHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaQogICAgIGF1dG8mIHNvdXJjZSA9ICpt
X3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1
bGxpbmcoKSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChi
dWZmZXIpOworICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRh
LCBzaXplKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzc5LDcgKzM3OSw3IEBAIHZv
aWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWkKICAgICAgICAgc3RvcCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghc291cmNlLmVucXVldWUoYnVmZmVyLnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShBcnJheUJ1
ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKSkgewogICAgICAgICBzdG9wKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpz
ZXRCb2R5RGF0YShSZXNwb25zZQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayhS
ZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQogewotICAgIGJvZHkoKS5jb25zdW1lcigpLmFw
cGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0
aCgpKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5r
LT5ieXRlTGVuZ3RoKCkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNT
dHJlYW0oKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikg
ZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVf
dCkgZmluYWw7CiAKICAgICAgICAgRmV0Y2hSZXNwb25zZSYgbV9yZXNwb25zZTsKICAgICAgICAg
Tm90aWZpY2F0aW9uQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsMTAg
KzE5NCwxMCBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVyCiAKIC8v
IE1BUks6IC0gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKIAotdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwot
ICAgIG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFM
ZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcg
KzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBmaW5hbDsK
IAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IG92ZXJyaWRlcy4KLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIC8vIE1v
ZGVsUGxheWVyQ2xpZW50IG92ZXJyaWRlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgJKHJldmlzaW9uIDI4ODU4NikK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw5ICsyNjYsOSBAQCBFeGNlcHRpb25PcjxSZWY8
UmVhZGFibGVTdHJlYW0+PiBCbG9iOjpzCiAgICAgICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGll
bnQKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YSgpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCaW5h
cnlDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgZmluYWwKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlQmluYXJ5Q2h1bmsoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29udHJvbGxlcigpLmVucXVldWUo
YnVmZmVyLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpKQorICAgICAgICAgICAgaWYgKCFjb250cm9s
bGVyKCkuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpKSkK
ICAgICAgICAgICAgICAgICBkb0NhbmNlbCgpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIGZpbmFsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5o
IgpAQCAtMTY5LDkgKzE2OCwxMCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zCiAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOworICAg
IEFTU0VSVChkYXRhKTsKKyAgICBBU1NFUlQoZGF0YUxlbmd0aCA+IDApOwogCiAgICAgLy8gQmFp
bCBvdXQgaWYgd2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJv
ckNvZGUpCkBAIC0xNzksMTEgKzE3OSwxMSBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvCiAKICAgICBpZiAobV9yZWFkVHlwZSA9PSBSZWFkVHlwZTo6UmVhZEFzQmlu
YXJ5Q2h1bmtzKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQmluYXJ5Q2h1bmsoYnVmZmVyKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQmluYXJ5Q2h1bmsoZGF0YSwgZGF0YUxlbmd0aCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpbnQgbGVuZ3RoID0gYnVmZmVyLnNpemUoKTsKKyAgICBpbnQgbGVuZ3Ro
ID0gZGF0YUxlbmd0aDsKICAgICB1bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTcGFjZSA9IG1fdG90
YWxCeXRlcyAtIG1fYnl0ZXNMb2FkZWQ7CiAgICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4ocmVtYWluaW5nQnVmZmVyU3BhY2UpKSB7CiAgICAgICAgIC8vIElmIHRoZSBidWZm
ZXIgaGFzIGhpdCBtYXhpbXVtIHNpemUsIGl0IGNhbid0IGJlIGdyb3duIGFueSBtb3JlLgpAQCAt
MTkyLDcgKzE5Miw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxl
bmd0aCkgewotICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsg
YnVmZmVyLnNpemUoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IG1fdG90YWxC
eXRlcyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgIGlm
IChuZXdMZW5ndGggPCBtX3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90
UmVhZGFibGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE3LDcgKzIxNyw3
IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY28KICAgICBpZiAobGVu
Z3RoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFy
Kj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgYnVmZmVyLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSAr
IG1fYnl0ZXNMb2FkZWQsIGRhdGEsIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xvYWRlZCArPSBsZW5n
dGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlckxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QmluYXJ5Q2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCaW5hcnlDaHVuayhjb25zdCB1aW50OF90KiwgaW50KSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChF
eGNlcHRpb25Db2RlIGVycm9yQ29kZSkgPSAwOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCShyZXZpc2lv
biAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE2LDEwICs2MTYsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdgogICAgICAgICBuZXR3b3JrQWdlbnQtPmRp
ZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdv
cmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZp
ZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAg
bmV0d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Ms
IFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgJKHJldmlzaW9uIDI4
ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDEzICsxOTMsMTMgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShQYWdlJiwgRG9jdW1lbnRM
b2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJj
ZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdChXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogCkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VM
b2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC0xMDgyLDE3ICsxMDgyLDE3IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGkKICAgICAgICAgZGlkUmVjZWl2
ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoKmFnZW50cywgZG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLCBpZGVudGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAg
ICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCi0gICAgICAg
IGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZp
ZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkp
OworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3Bl
KSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxlbmd0aCk7CiB9CiAKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSog
ZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywg
UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCShyZXZpc2lvbiAyODg1ODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsMTAgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdAogICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCi12
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRh
dGEpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0Nv
bnRlbnQoKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1ZmZlclJlc291
cmNlRGF0YShjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291
cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBSZXNvdXJjZURh
dGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwog
ICAgIGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdAogICAgIGlmICghc2hvdWxkQnVmZmVyUmVzb3Vy
Y2VEYXRhKCpyZXNvdXJjZURhdGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0g
ICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXplKCkgPiBtX21heGlt
dW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFM
ZW5ndGgoKSArIGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
KQogICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250ZW50KCk7
CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAgICByZXR1
cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkg
JiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYgKGVuc3VyZUZy
ZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkp
IHsKICAgICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0gICAgICAg
IHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRhKTsKLSAgICAgICAgbV9jb250ZW50U2l6ZSAr
PSBkYXRhLnNpemUoKTsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEsIGRh
dGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGFMZW5ndGg7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29s
IGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgICAgICB2b2lk
IGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAg
ICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CiAKICAgICAgICAgU3RyaW5nIG1f
cmVxdWVzdElkOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291
cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkID0gZmFsc2UpOwotICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsK
ICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAJKHJl
dmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDEyICsxMjQsMTIgQEAg
cHVibGljOgogICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
InRleHQvcGxhaW4iX3MsIHRleHRFbmNvZGluZywgdXNlRGV0ZWN0b3IpOwogICAgIH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRl
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQorICAg
ICAgICBpZiAoIWRhdGFMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpKTsKKyAgICAgICAgbV9yZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZQpAQCAtNTQ2LDggKzU0Niw5IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmUKICAgICAgICAgICAgIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQ29u
dGVudCgpKQogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250
ZW50KHJlcXVlc3RJZCwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmNvbnRlbnQoKSwgcHJldmlvdXNS
ZXNvdXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChwcmV2
aW91c1Jlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkpIHsKLSAgICAgICAgICAgICAgICBw
cmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZm
ZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNE
YXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIo
KTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXli
ZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTU3Myw3ICs1NzQsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJl
CiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIG51bGxwdHIsIGNhY2hlZFJlc291
cmNlLT5lbmNvZGVkU2l6ZSgpLCAwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9oaWRk
ZW5SZXF1ZXN0SWRlbnRpZmllcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTU4MSwxNiArNTgyLDE2IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRS
ZWNlaXZlRGEKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1
ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChkYXRhKSB7Ci0gICAgICAg
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCAqZGF0YSk7
CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291
cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElk
LCBkYXRhLCBkYXRhTGVuZ3RoKTsKIAogICAgICAgICAvLyBGb3IgYSBzeW5jaHJvbm91cyBYSFIs
IGlmIHdlIGRpZG4ndCBhZGQgZGF0YSB0aGVuIHdlIGNhbiBhcHBseSBpdCBoZXJlIGFzIGJhc2U2
NCBlbmNvZGVkIGNvbnRlbnQuCiAgICAgICAgIC8vIE9mdGVuIHRoZSBkYXRhIGlzIHRleHQgYW5k
IHdlIHdvdWxkIGhhdmUgYSBkZWNvZGVyLCBidXQgZm9yIG5vbi10ZXh0IHdlIHdvbid0IGhhdmUg
YSBkZWNvZGVyLgogICAgICAgICAvLyBTeW5jIFhIUnMgbWF5IG5vdCBoYXZlIGEgY2FjaGVkIHJl
c291cmNlLCB3aGlsZSBub24tc3luYyBYSFJzIHVzdWFsbHkgdHJhbnNmZXIgZGF0YSBvdmVyIG9u
IGNvbXBsZXRpb24uCiAgICAgICAgIGlmIChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ICYmIHJl
c291cmNlRGF0YSAmJiAhcmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSAmJiAhcmVzb3Vy
Y2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5z
ZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRh
LCBkYXRhTGVuZ3RoKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCgpLCBleHBlY3RlZERhdGFMZW5ndGgs
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2Vp
dmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxv
YWRlciopCkBAIC0xMjY3LDcgKzEyNjgsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JOCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBp
dCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOwogICAg
IGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2Rl
KGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyOTIsOSArMTI5Myw5IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck4KICAgICB9CiAgICAgcmVzcG9u
c2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJl
c3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgeworICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRh
LnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUo
KSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBidWZmZXItPnNp
emUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29y
a0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3RPZlR5cGUoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyKiwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciop
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyODg1
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVB
ZnRlclJlc3BvbnMKICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJlZjxDb250ZW50
RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmlu
ZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+Llxu
IiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7Ci0gICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0g
UmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBjb250ZW50
RmlsdGVyLmFkZERhdGEoZGF0YSk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29u
dGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5cbiIsIGxlbmd0
aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0aF0oYXV0byYg
Y29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEs
IGxlbmd0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpB
bGxvd2VkKQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJl
c291cmNlRGF0YSgKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAg
QVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJj
ZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAg
IG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQog
CiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0
ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDIsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDggKzQ4Miw4IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMg
aXMgYW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVh
dGVkIHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdy
aXRlcjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAg
ICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpOwotCisgICAgICAgICAgICBjb21taXREYXRhKDAsIDApOworICAgICAg
ICAKICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0x
MTQ2LDggKzExNDYsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVu
CiAgICAgaWYgKCFpc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYg
aXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNp
emUoKSkgewotICAgICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZl
cihbJl0oYXV0byYmIGJ1ZmZlcikgewotICAgICAgICAgICAgICAgIGRhdGFSZWNlaXZlZChidWZm
ZXIpOworICAgICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICAgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0xv
YWRpbmdNYWluUmVzb3VyY2UoKSkKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW4KICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBEb2N1bWVudExv
YWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAg
IC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFyc2luZyB0aGUgbmV3IHBhZ2Ug
bWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0aGUgZGF0YXNvdXJjZQogICAg
IC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0ZW1wb3JhcmlseS4KQEAgLTEx
NzUsNyArMTE3NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgU2gK
ICAgICBpZiAoQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKHJlc3BvbnNlKCkubWlt
ZVR5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGZyYW1lTG9hZGVyLT5jbGll
bnQoKS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEpOworICAgIGZyYW1lTG9hZGVyLT5jbGllbnQo
KS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAKICAgICBpZiAoaXNNdWx0aXBh
cnRSZXBsYWNpbmdMb2FkKCkpCiAgICAgICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5kaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpOwpAQCAtMTIwNCw3ICsxMjA0LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNob3VsZFVzZUFjdGl2ZVNlcnZpYwogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNvbW1pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBEb2N1bWVu
dExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0g
dHJ1ZTsKQEAgLTEzMTEsMjQgKzEzMTEsMjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0
RGF0YShjb25zdCBTaAogI2VuZGlmCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+
cGFyc2luZygpKTsKLSAgICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOworICAgIG1fd3JpdGVyLmFk
ZERhdGEoYnl0ZXMsIGxlbmd0aCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwotICAgIGRhdGFSZWNl
aXZlZChidWZmZXIpOworICAgIGRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2Vp
dmVkKGJ1ZmZlcikpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogCi0gICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkpOwotICAgIEFTU0VSVChidWZm
ZXIuc2l6ZSgpKTsKKyAgICBBU1NFUlQoZGF0YSk7CisgICAgQVNTRVJUKGxlbmd0aCk7CiAgICAg
QVNTRVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGlu
IENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxv
YWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEzMzgsMTIgKzEzMzgsMTIgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IAogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVy
Rm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIsICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIC0xKTsKKyAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMs
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwg
LTEpOwogCi0gICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2Vp
dmVkKGJ1ZmZlciwgLTEsIGZhbHNlKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWlu
UmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOwogCiAgICAgaWYg
KCFpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKLSAgICAgICAgY29tbWl0TG9hZChidWZmZXIp
OworICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCkBAIC0xNjEyLDcgKzE2MTIsNyBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUo
bWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCkpOwotICAgIGNvbW1pdERhdGEoKm1fcGFyc2VkQXJjaGl2ZURhdGEpOworICAgIGNvbW1pdERh
dGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIyNTYsNyArMjI1Niw4IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ00KIAogICAgIGZyYW1lTG9hZGVy
KCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAgY29t
bWl0TG9hZChtYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dEljb25Mb2FkaW5nKCkKQEAgLTI0MDgsOSArMjQwOSw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmVucXVldWVTZWN1cml0eVBvbGkKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IHNpemUpCiB7
Ci0gICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CisgICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUp
OwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NiBAQCBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwotY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0
dXRlUmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm47CkBAIC0zNzgsNyArMzc3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsg
fTsgfQogCiAgICAgLy8gVGhlIFdlYktpdCBsYXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4g
aXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8gYWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3Vt
ZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxp
Y2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3OSw3ICs0
NzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBz
ZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21t
aXRMb2FkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1
aW50OF90KiwgaW50KTsKICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAg
ICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpAQCAtNDk1LDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTA1LDEz
ICs1MDQsMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAg
ICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJy
b3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNywyMCArNDM3
LDIwIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXYKICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jl
c291cmNlLT5pZGVudGlmaWVyKCksIGJ1ZmZlcik7CisgICAgZGlkUmVjZWl2ZURhdGEobV9yZXNv
dXJjZS0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAg
ICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CisgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6ZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQpAQCAtNDkz
LDE0ICs0OTMsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaAog
CiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09IFJlc3BvbnNlRmlsdGVy
aW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgYnVm
ZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25z
ZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29w
dGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/
IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVz
b3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlcik7CisgICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
eworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY2MSw4ICs2NjcsMTEgQEAgdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZQogICAgIH0KICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRp
ZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsICpkYXRhKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgp
KTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9u
c2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIGF1dG8gcmVzb3Vy
Y2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3VzTG9hZChyZXF1ZXN0VVJM
LCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1pbmcgPyAqdGltaW5nIDogTmV0
d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2lu
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxNCArODYsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dAogICAgICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJy
aWRlOwotICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRU
aW1pbmdGb3JXb3JrZXJMb2FkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VUaW1pbmcm
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoY29u
c3QgUmVzb3VyY2VUaW1pbmcmKTsKICAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCk7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgICAgICB2
b2lkIGRpZEZhaWwoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJ
KHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIERvY3VtZW50V3Jp
dGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVzb2x2
ZVN0eWxlKERvY3VtZW50OjpSZXNvbHZlU3R5bGVUeXBlOjpSZWJ1aWxkKTsKIH0KIAotdm9pZCBE
b2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIERv
Y3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgdG8gQVNTRVJUIG9uY2UgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDI3IGhhcyBiZWVuIHJlc29sdmVkLgog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6Ok5vdFN0YXJ0ZWQpOwpAQCAtMjcz
LDcgKzI3Myw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2Vy
LT5hcHBlbmRCeXRlcygqdGhpcywgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3Bh
cnNlci0+YXBwZW5kQnl0ZXMoKnRoaXMsIGJ5dGVzLCBsZW5ndGgpOwogfQogCiB2b2lkIERvY3Vt
ZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCShyZXZpc2lvbiAyODg1
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7
CkBAIC00OSw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29s
IGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0
cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyID0geyB9KTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoKTsKICAgICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAv
LyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWll
bGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzAsNyAr
ODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTQogewogfQog
Ci12b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFt
ZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7
CiAKICAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVy
Ojp3aWxsTG9hZE1lZGlhRWxlbWVudFVSCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXI7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICByZXF1ZXN0RnJvbURlbGVn
YXRlKHJlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwg
bnVsbHB0ciwgLTEsIC0xLCBlcnJvcik7CisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAt
MSwgZXJyb3IpOwogCiAgICAgdXJsID0gcmVxdWVzdC51cmwoKTsKIApAQCAtMjA4OCw3ICsyMDg4
LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKAogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsKIAogICAgICAgICAv
LyBTZW5kIHJlbWFpbmluZyBub3RpZmljYXRpb25zIGZvciB0aGUgbWFpbiByZXNvdXJjZS4KLSAg
ICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCBtYWluUmVzb3VyY2VJZGVudGlmaWVyLCBtYWluUmVzb3VyY2VSZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCksIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVu
dExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNv
dWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5S
ZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKKyAgICAgICAgICAgIG51bGxwdHIs
IHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOwogCiAgICAgICAgIFZlY3RvcjxS
ZWY8RnJhbWU+PiB0YXJnZXRGcmFtZXM7CiAgICAgICAgIHRhcmdldEZyYW1lcy5hcHBlbmQobV9m
cmFtZSk7CkBAIC0yMTM2LDcgKzIxMzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92
aXNpb25hbExvYWQoCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ug
d2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhp
bmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBu
ZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAg
ICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAg
ICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVu
dExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHN0
YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJv
cik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCAw
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwg
ZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJh
bWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Nyw4ICszMTY4LDcgQEAgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsbwogICAgICAgICAgICAgICAgIChpc1Njcmlw
dExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6Tm8pKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEuZ2V0
KCksIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKICAgICByZXR1cm4gaWRlbnRp
ZmllcjsKIH0KIApAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVk
UmVzb3VyY2VGcm9tTWVtbwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291
cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6
OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVn
YXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVz
dCwgcmVzcG9uc2UsIG51bGxwdHIsIHJlc291cmNlLmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsK
KyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRM
b2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLCAwLCByZXNvdXJj
ZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5
VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4ODU4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03LDcgKzcsNyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKQEAgLTUwLDcgKzUwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0jaWZkZWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXyAKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgogdHlwZWRlZiBpZCBSZW1vdGVBWE9iamVjdFJlZjsKICNl
bHNlCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0OwogCkBAIC0yMTQsOSArMjE0LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBT
aGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKLQorICAgIAogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpID0gMDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotCisgICAgCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQ
bGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9
IDA7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29u
dGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBB
bGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzOyB9Ci0KKyAgICAKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclBy
aXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKSB7IH0KQEAgLTM5MCw3ICszOTAsNyBA
QCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFVzZVBERlBsdWdpbihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3KSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCi0KKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlz
aW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDEzICsyMzEsMTMgQEAgdm9pZCBNZWRpYVJlc291
cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRo
aXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBNZWRpYVJlc291
cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwog
CiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIp
OworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBkYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjg4
NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2Fj
aGVkUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDE0ICsxNDEsMzAgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZQogICAgIH0pOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit7CisgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihk
YXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OworfQorCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQoreworICAgIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKK30KKwordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyKTsKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgaWYgKGJ1ZmZlcikg
eworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
eworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0
aCk7CisgICAgfQogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxMyArMzYsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRy
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Myw3ICs2Miw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAKQEAgLTc0LDYgKzc0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwor
CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKICAgICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBA
IC03OSwxMiArNzgsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJl
cwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2Ut
PnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxv
YWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKIAotICAgIGRpc3BhdGNoRGlkUmVjZWl2
ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgJmJ1
ZmZlciwgYnVmZmVyLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpc3BhdGNoRGlk
UmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIo
KSwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMTU0LDEzICsx
NTMsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZQogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9mcmFt
ZSwgaWRlbnRpZmllciwgbG9hZGVyLCByLCByZXNvdXJjZUxvYWRlcik7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRh
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIC8vIE5vdGlmeWluZyB0aGUgRnJhbWVMb2FkZXJDbGllbnQgbWF5IGNh
dXNlIHRoZSBmcmFtZSB0byBiZSBkZXN0cm95ZWQuCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1f
ZnJhbWUpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZl
Q29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGV4cGVjdGVkRGF0YUxlbmd0aCk7Cisg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVu
Z3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIg
PyAqYnVmZmVyIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlk
ZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyKQpAQCAtMTgxLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpc3BhdGNoRGlkRmEKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKCZtX2ZyYW1lLCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElm
IHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQu
IFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBj
YXNlLgpAQCAtMTk0LDggKzE5Myw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRS
ZW1haW5pbmcKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlm
IChleHBlY3RlZERhdGFMZW5ndGggPiAwKQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRh
KGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLCBleHBlY3RlZERhdGFMZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBpZiAoZGF0YUxlbmd0aCA+IDApCisgICAgICAgIGRpc3BhdGNoRGlk
UmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgTmV0d29y
a0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVzb3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTYsMTggKzU1LDE4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0
aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxU
b0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lk
IGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVE
YXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIq
KTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQg
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBTaGFyZWRCdWZmZXIqLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0
SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4
ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0
YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRlY29kZVJlc3VsdC0+ZGF0YS5zaXpl
KCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVzdWx0LnZhbHVlKCkpOwotICAgICAg
ICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0oKSB7CisgICAgICAgIHRo
aXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYmIGRhdGFTaXplICYmIG1f
cmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAgICAgICAgICAgICAgIHRoaXMtPmRp
ZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7
CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEpLCBk
YXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgICAgICAgICAgaWYgKCF0
aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAgICAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0CiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQ
b2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMzYsNyArMzM2LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZEJ1ZmZl
cihjb25zdCBGcmEKICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIG1fcmVzb3Vy
Y2VEYXRhLmFwcGVuZChidWZmZXIpOworICAgIGlmIChidWZmZXIpCisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVzb3VyY2VEYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzNiw3ICs1MzksNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgICAgIGZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2Up
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhl
IGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBz
dWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRo
YXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ0LDIyICs1NDcsMzAgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29ucwogICAgIC8vIEFTU0VSVChjb24gPT0gY29u
bmVjdGlvbik7CiAgICAgLy8gQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAg
IGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRU
eXBlKTsKKyAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogeworICAgIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQoreworICAgIC8vIFRoaXMgbWV0
aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KKyAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOworCiAgICAg
Ly8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlv
bmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5
IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkQnVm
ZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTog
SWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3
b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgog
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1b3VzKCksIHN0YXRp
Y19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCkBAIC03MTgsMTQgKzcyOSwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2VBCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEo
ZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spOwogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
QEAgLTE2Nyw2ICsxNjcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KIApAQCAtMTkwLDcg
KzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5
bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5ldHdv
cmtMb2FkKCk7CiAKQEAgLTIwMCw4ICsyMDIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2Vu
ZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxOCwxNSArNTE4LDMyIEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb24KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAot
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZp
ZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogI2VuZGlmCiAKKyAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVs
bHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Cit9CisKK3ZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCit7CisjaWYgVVNFKFFVSUNLX0xPT0spCisgICAgaWYgKGF1dG8g
cHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgeworICAgICAgICBpZiAocHJl
dmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIuZ2V0KCkpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOworfQorCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQorewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIAogICAg
IGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYmICFt
X3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpKQpAQCAtNTM4LDEz
ICs1NTUsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcgogICAg
IC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhp
cyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8U3VicmVz
b3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRU
eXBlKTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CiAgICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAg
IG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTEsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3Rp
ZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNwb25zZTsgfQogICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4o
UmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQorICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBs
ZW5ndGgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFJlc291cmNlVGltaW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Niw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8q
Ynl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50IC8qZGF0YUxlbmd0aCovKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
VGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAkocmV2aXNp
b24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3Bv
bnNlKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMwLDEzICsyMzAsMTQgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQgogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2Vy
Q2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IFJlZiB7ICptX3dvcmtl
ckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7Ci0gICAg
ICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7
CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtl
clJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVk
IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQg
ZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3
ICsxNDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3Vy
Y2VEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nLCBib29sKQordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJl
dmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBT
dWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJl
Y3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIG1h
eWJlTG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZl
ZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wg
YWxsQXRPbmNlKTsKKyAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wg
YWxsQXRPbmNlKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogICAg
IHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEw
ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWMKIAogdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikKIHsKLSAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgUmVmUHRyIHsgJmRhdGEoKSB9KTsKLSAgICBlbHNl
Ci0gICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlw
ZSh1bnNpZ25lZCB0eXBlKSAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOSAr
OTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzCiAgICAgbV9h
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0
ZShtX3Jlc291cmNlLT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
YnVmZmVyKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFD
b3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKQEAgLTU1NSwxOCArNTU1LDE4IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdl
Ojp1cGRhdGVJbWEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihidWZmZXIp
OworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwot
ICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVEYXRhKGRhdGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEs
IGxlbmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJl
dmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsK
ICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJu
YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNl
U2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyODg1
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMiArNDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNh
Y2hlZFJhd1Jlc291cmNlKENhYwogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJY29uT3JSYXdS
ZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIHNpemVfdCBwcmV2aW91
c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwotICAgIGlmIChkYXRhLnNpemUoKSA8PSBwcmV2
aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91
c0RhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIGRh
dGEuZ2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAgICByZXR1cm4gZGF0YS0+Z2V0
U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb24KICAg
ICAgICAgcHJldmlvdXNEYXRhU2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAg
ICAgIFNldEZvclNjb3BlPGJvb2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3Rp
ZnksIHRydWUpOwotICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVu
dGFsRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLnNpemUo
KSk7CiAgICAgfQogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKIApAQCAtODks
MTEgKzg5LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb24KICAg
ICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0g
ICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOwotICAgIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CisgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoY28KICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChkYXRhICE9
IG1fZGF0YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGlu
Y3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CiAg
ICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVj
ZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOwpAQCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhjbwogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQor
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMp
OwogICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAg
ICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CisgICAgICAgIGMtPmRhdGFSZWNl
aXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGly
ZWN0cyhDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VS
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xp
ZW50KENhYwogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgICAg
IG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikg
eworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCShyZXZpc2lv
biAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogY2xhc3Mg
Q2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewpAQCAtNTMs
NyArNTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY3LDggKzY2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAg
ICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJE
YXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI4ODU4NikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291
cmNlVGltaW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CkBAIC00Nyw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3Ro
ICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVRpbWluZyYpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0MSw3ICszNDEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1
aW50OF90KiwgdW5zaWduZWQpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDI4ODU4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAko
cmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDggQEAgcHVibGljOgogICAg
IH5MZWdhY3lQcmV2aWV3TG9hZGVyKCk7CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAg
ICB2b2lkIGRpZEZhaWwoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWEK
ICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5
UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YQogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJl
dmlld0xvYWRlciBhcHBlbmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUo
KSk7CiAgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXIt
PnVwZGF0ZU1haW5SZXNvdXJjZSgpOwotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTE2Miw3ICsxNjIsOCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByZXZpZXdDb252ZXJ0CiAgICAgaWYgKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihkYXRhLCBk
YXRhLnNpemUoKSwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBkYXRhQ29weSA9IGRhdGEu
Y29weSgpOworICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoZGF0
YUNvcHkpLCBkYXRhQ29weS0+c2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJikKQEAgLTI0Miw2ICsyNDMsMTEgQEAgTGVnYWN5UHJldmlld0xvYWRl
cjo6TGVnYWN5UHJldmlld0xvYWRlcgogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xv
YWRlciBjcmVhdGVkIHdpdGggcHJldmlldyBmaWxlIG5hbWUgXCIlc1wiLiIsIG1fY29udmVydGVy
LT5wcmV2aWV3RmlsZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAorYm9vbCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7Cit9CisKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQogewogICAgIHJldHVy
biAhbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTIxMSwx
MyArMjEwLDEzIEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpc3BhdGNoRXJyb3JFdmVudCgpCiAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotdm9pZCBF
dmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IE9QRU4pOwogICAgIEFTU0VSVChtX3Jl
cXVlc3RJbkZsaWdodCk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTighbV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJkQ2FjaGUpOwogCi0gICAgYXBwZW5kKG1f
cmVjZWl2ZUJ1ZmZlciwgbV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSkpOworICAgIGFwcGVuZChtX3JlY2VpdmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGRh
dGEsIGxlbmd0aCkpOwogICAgIHBhcnNlRXZlbnRTdHJlYW0oKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1Db250ZW50Rmls
dGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAg
VmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OgogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1f
aW1tdXRhYmxlRGF0YSkgJiYgbV9zZWdtZW50c1swXS5zZWdtZW50LT5oYXNPbmVSZWYoKSkKLSAg
ICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhf
dD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPihtX3NlZ21lbnRzWzBdLnNlZ21lbnQuZ2V0KCkp
Lm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICAgICAgY29tYmluZWRE
YXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNb
MF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIGVs
c2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRz
LCBtX3NpemUpOwogCkBAIC0yNTAsMTMgKzI1MCw2IEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ20KICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+
ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotdm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKLXsKLSAgICBhdXRvIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2Vn
bWVudC5jb3B5UmVmKCkpKTsKLX0KLQogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFy
dHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBp
ZiAocHJlZml4LmVtcHR5KCkpCkBAIC00MjIsNyArNDE1LDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKQogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9z
aXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92
ZShzZWdtZW50KSB9KTsKQEAgLTYxMCw3ICs2MDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmVuc3VyZUJ1ZmZlcigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJE
YXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXpl
KQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpz
aXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02MjYs
NyArNjE5LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaQogCiBS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBt
X3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50
OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAog
ICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwx
MyArMTc5LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRh
dGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKLSAgICAgICAg
Y29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50OworICAgICAgICBSZWY8RGF0YVNl
Z21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZl
Y3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7
IH0KQEAgLTI2MiwxMCArMjYxLDcgQEAgcHVibGljOgogICAgICAgICBpZiBjb25zdGV4cHIgKCFz
aXplb2YuLi4oQXJncykpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0g
MQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4+ICYmLi4uKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKLSAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1l
X3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxBcmdzPj4sIERh
dGFTZWdtZW50PiAmJi4uLikpCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywg
UmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CkBAIC0yOTIsMTAgKzI4OCw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsK
LSAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21lbnQmIHNlZ21lbnQpCi0gICAgICAgIDog
U2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4geyBzZWdtZW50IH0pIHsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVm
PGNvbnN0IERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAgLTM2Nyw3ICszNjEsNyBAQCBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCCiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OyB9CkBAIC0zNzgsNyArMzcyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgot
ICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDI4ODU4NikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsOSArMTQ1LDkgQEAgdm9pZCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6cmVzcAogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLXZvaWQg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGF1dG8gbnNEYXRhID0gZGF0YS5j
cmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgeyBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aF0gfTsKIAogICAgIEJpbmFyeVNl
bWFwaG9yZSBzZW1hcGhvcmU7CiAgICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOm5z
RGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5FRmlsdGVyU291
cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCShyZXZp
c2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtOTQsMTAgKzk0LDEwIEBA
IHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlc3AKICAgICB1cGRhdGVGaWx0
ZXJTdGF0ZSgpOwogfQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKLSAgICBtX3JlcGxhY2VtZW50
RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCku
Z2V0KCldOworICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFk
ZERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5n
dGggZnJlZVdoZW5Eb25lOk5PXV07CiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKICAgICBBU1NF
UlQobmVlZHNNb3JlRGF0YSgpIHx8IFttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRG
aW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlcjo6cmVzcG9uc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2
b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaQogICAg
IG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCiB7CiAgICAgQVNT
RVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291
cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAg
IHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVk
KCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBt
X2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVy
LmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6cmVzcAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2Vi
U3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CkBAIC0xMTA3LDcgKzExMDcs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhCiAgICAgLy8gdGhh
dCBmaXJzdCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRpbWUgb2Ygc2VuZGlu
ZyBvdXQgdGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4gU2luY2Ugd2UgY2Fu
J3QgZGlzdGluZ3Vpc2ggdGhlCiAgICAgLy8gc2VuZGluZyB0aW1lIGZyb20gdGhlIHJlY2Vpdmlu
ZyB0aW1lLCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgogICAgIGlmICghc3RkOjppc25hbiht
ZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkpIHsKLSAgICAgICAgbWVtYmVycy0+dG90YWxEb3du
bG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CisgICAgICAgIG1lbWJlcnMtPnRvdGFsRG93bmxv
YWRlZEJ5dGVzICs9IGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICBkb3VibGUgdGltZVNpbmNlU3Rh
cnQgPSAoV2FsbFRpbWU6Om5vdygpIC0gbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUpLnNlY29u
ZHMoKTsKICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJSJXU6IGRvd25sb2FkZWQgJSIg
R19HVUlOVDY0X0ZPUk1BVCAiIGJ5dGVzIGluICVmIHNlY29uZHMgPX4gJTEuMGYgYnl0ZXMvc2Vj
b25kIiwgbV9yZXF1ZXN0TnVtYmVyLCBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcywgdGlt
ZVNpbmNlU3RhcnQKICAgICAgICAgICAgICwgdGltZVNpbmNlU3RhcnQgPyBtZW1iZXJzLT50b3Rh
bERvd25sb2FkZWRCeXRlcyAvIHRpbWVTaW5jZVN0YXJ0IDogMCk7CkBAIC0xMTE1LDE5ICsxMTE1
LDIwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGEKICAgICAgICAg
bWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0g
ICAgaW50IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIl
dTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOwotCi0g
ICAgbWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKLSAgICBBU1NFUlQoIW1lbWJlcnMt
PmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKLQot
ICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9t
ZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICBnc3Rfc3Ry
dWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwg
R19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5U
NjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7Ci0KLSAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6
ZShsZW5ndGgpOwotICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZh
c3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICBnc3RfYWRh
cHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0KKyAgICBidWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgIGludCBsZW5ndGgg
PSBzZWdtZW50LnNpemUoKTsKKyAgICAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBIYXZl
ICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CisKKyAgICAgICAg
bWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICAgICAgQVNTRVJUKCFtZW1iZXJz
LT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7CisK
KyAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKEdTVF9FTEVNRU5UX0NBU1Qoc3JjKSwg
Z3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQoR1NUX09CSkVDVF9DQVNUKHNyYyksCisgICAgICAgICAg
ICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBv
c2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdf
VFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICAgICAgY2hlY2tV
cGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RC
dWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBs
ZW5ndGgpOworICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCks
IGJ1ZmZlcik7CisgICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7
CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDExICszNiw5IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWUKIAog
UmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsK
IAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgYnVmZmVyLmZvckVhY2hT
ZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB9KTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwx
MyBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7Ci1jbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVu
dW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDkgKzY1
LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVu
Y29kZWREYXRhTGVuZ3RoKi8pIHsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhh
bmRsZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI4ODU4NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3Miw5IEBAIHZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmUKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12
b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCov
KQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQg
U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLQogY2xhc3Mg
U3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlKTsgfQpAQCAtNjgsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3Vy
Y2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hh
cmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCShyZXZpc2lvbiAyODg1ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5l
cmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zCiAKICAgICAgICAgICAgIHNpemVfdCBieXRlc0Zy
b21UaGlzVmlld1RvRGVsaXZlciA9IHN0ZDo6bWluKGJ1ZmZlclZpZXcuc2l6ZSgpLCByYW5nZS5l
bmQgLSBieXRlSW5kZXggKyAxKTsKICAgICAgICAgICAgIGJ5dGVJbmRleCArPSBieXRlc0Zyb21U
aGlzVmlld1RvRGVsaXZlcjsKLSAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVj
ZWl2ZWREYXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNW
aWV3VG9EZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCldOworICAg
ICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZUluZGV4ID49IHJhbmdl
LmVuZCkgewogICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpudWxscHRyIG1ldHJp
Y3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CkBAIC0yMzgsNyArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbAor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNDYsNyArMjQ2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5n
ZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgZGF0YS0+YnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJl
c3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24uaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVO
U1VSTFNlCiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2Vu
dCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNl
bnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5k
bGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5Q
dHI8TlNEYXRhPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxh
YmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRp
cmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDoo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxl
dGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJv
cjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRG
YWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miwx
MyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjoKICAg
ICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpy
ZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNr
TG9jayB9OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNr
IHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZERhdGE6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpXTsK
KyAgICBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSByZWNlaXZlZERhdGE6V1RGTW92ZShidWZm
ZXIpXTsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtOTMxLDE0ICs5MzEsMTUgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKgogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0
YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9
PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0
cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0g
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gW2RhdGEgbGVu
Z3RoXTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZl
ZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4g
ZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5n
ZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6
KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOworICAgICAgICAg
ICAgW2RhdGFEZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdl
dCgpLnNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5n
ZXQoKSBkaWRSZWNlaXZlRGF0YTpuc0RhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0Myw3ICsyNDMsNyBAQCBib29sIEN1cmxDYWNoZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3Zv
aWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmUKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkg
IT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWl0LT52YWx1ZS0+
c2F2ZUNhY2hlZERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKKyAgICAgICAgaWYgKCFp
dC0+dmFsdWUtPnNhdmVDYWNoZWREYXRhKGRhdGEsIHNpemUpKQogICAgICAgICAgICAgaW52YWxp
ZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fY3Vy
cmVudFN0b3JhZ2VTaXplICs9IGRhdGEuc2l6ZSgpOworICAgICAgICAgICAgbV9jdXJyZW50U3Rv
cmFnZVNpemUgKz0gc2l6ZTsKICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1v
dmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25z
ZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwg
Y29uc3QgdWludDhfdCosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNw
b25zCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVx
dWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1
cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTExMSw3
ICsxMTEsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5k
aWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci5zaXplKCkpOworICAgICAgICBtX2xpc3RlbmVy
LT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xv
YWRNZXRyaWNzJiYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
dXJsRG93bmxvYWRMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC03Myw3ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcg
bG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3Vy
bERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
CiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMg
Y2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUg
KHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCShyZXZp
c2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNz
IEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFy
dEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAg
fkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCShyZXZpc2lvbiAyODg1ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQoKSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk2LDcg
KzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHIKIAogLy8g
Y2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZp
YSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlz
Q29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDEx
LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdAogICAgICAgICBy
ZXR1cm4gQ1VSTF9XUklURUZVTkNfUEFVU0U7CiAgICAgfQogCi0gICAgYXV0byByZWNlaXZlQnl0
ZXMgPSBidWZmZXIuc2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLT5zaXpl
KCk7CiAgICAgbV90b3RhbFJlY2VpdmVkU2l6ZSArPSByZWNlaXZlQnl0ZXM7CiAKICAgICB3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChidWZmZXIpOwpAQCAtNDIwLDggKzQyMCw4IEBA
IHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QKICAgICAgICAgaWYgKG1f
bXVsdGlwYXJ0SGFuZGxlKQogICAgICAgICAgICAgbV9tdWx0aXBhcnRIYW5kbGUtPmRpZFJlY2Vp
dmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2FsbENsaWVudChb
YnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVz
dENsaWVudCYgY2xpZW50KSB7Ci0gICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZl
RGF0YShyZXF1ZXN0LCBidWZmZXIpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQm
IGNsaWVudCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZl
QnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQ0NCwxNiArNDQ0LDE2IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJl
Y2VpdmVIZWFkZXJGcm9tTXUKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXIuc2l6ZSgpOworICAgIGF1
dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVz
KSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVx
dWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgewotICAgICAgICAgICAg
Y2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOworICAgICAgICBjYWxs
Q2xpZW50KFtidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBD
dXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNsaWVudC5j
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVy
cmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAg
ICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRl
ckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENV
Ukxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAkocmV2
aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
Q3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVibGlj
OgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFNl
bmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0
cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAkocmV2aXNpb24gMjg4NTg2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9p
ZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZAogICAgIH0pOwogfQogCi12b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVl
c3QmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxl
LCBidWZmZXIpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgYnVm
ZmVyLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlk
UmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92
ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3Jr
TG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
Y2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFs
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZSBmaW5hbCA6IHB1YmxpYyBDdXJsUmVxdWVzdENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTU0LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEo
Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZl
UmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBj
dXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1
cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERp
ZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRl
SW5mbyYmKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgorICogCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJDdXJsU3Ry
ZWFtLmgiCiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShD
VVJMKQpAQCAtMTMwLDEwICsxMjksMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUo
KQogICAgIGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOworICAgIGF1dG8gcmVj
ZWl2ZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihrUmVjZWl2ZUJ1ZmZlclNpemUp
OwogICAgIHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0g
bV9jdXJsSGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZGF0YSgpLCBrUmVjZWl2ZUJ1ZmZl
clNpemUsIGJ5dGVzUmVjZWl2ZWQpOworICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxl
LT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNS
ZWNlaXZlZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAo
ZXJyb3JDb2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJv
ckNvZGUpOwpAQCAtMTQ0LDkgKzE0Myw4IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZl
KCkKICAgICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAot
ICAgIHJlY2VpdmVCdWZmZXIucmVzaXplKGJ5dGVzUmVjZWl2ZWQpOwotICAgIG1fc2NoZWR1bGVy
LmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1J
RCwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZWNlaXZlQnVmZmVyKSld
KENsaWVudCYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1J
RCwgYnVmZmVyKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3Ry
ZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFdURk1vdmUocmVjZWl2ZUJ1
ZmZlciksIGxlbmd0aCA9IGJ5dGVzUmVjZWl2ZWRdKENsaWVudCYgY2xpZW50KSBtdXRhYmxlIHsK
KyAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBidWZmZXIuZ2V0KCksIGxl
bmd0aCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAkod29ya2luZyBjb3B5
KQpAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKKyAqIAogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0zMyw3ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBA
IC00Nyw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJl
YW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEw
ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2Vu
ZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdE
YXRhKCk7CiAKLSAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3Vy
bFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6
ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJs
U3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRl
ZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCShyZXZpc2lvbiAyODg1ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbEN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAKICNpbmNsdWRl
ICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFt
RXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDUsMTIgKzEwNCwxMiBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhCiAgICAgc2VuZFBlbmRpbmdEYXRhKCk7
CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0
cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBPcGVuKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3Ry
ZWFtRGF0YSgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUgZXJyb3JDb2RlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkg
eyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCShyZXZpc2lvbiAyODg1ODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICszMDAs
NyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAg
ICAgICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNm
ZXIgc2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCiAgICAgICAgIC8vIENvbnRlbnQt
TGVuZ3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSwgLTEpOwogICAgIH07CiAKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25Pbk1haW5UaHJl
YWQ6V1RGTW92ZSh3b3JrKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw4ICs1MzIsOCBAQCBFbmNvZGVk
RGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoCiAgICAgICAgIEFTU0VSVChsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJl
ZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsg
Ly8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdt
ZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAgICAgICAgIGxvYWRl
ci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CisgICAg
ICAgIGRhdGEoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyODg1ODYp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRl
clJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50
OF90KiwgaW50KQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFm
dGVyQWRkRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgp
IG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQg
V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlUmUKICAgICAgICAgbV9lcnJvck9jY3Vy
cmVkID0gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
ewogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0
YS5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwog
fQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
V29ya2VyRm9udExvYWRSZXF1ZXN0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFdvcmtl
clNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlw
dExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lk
IFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwx
MCArMjEyLDEwIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSgKICAg
ICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9q
YXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKKyAgICBpZiAoIWxlbikKICAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JpcHQuYXBwZW5k
KG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKKyAgICAK
KyAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiB9CiAK
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCShyZXZpc2lvbiAy
ODg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KIAogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1E
YXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzQsNyArMTAzNCw3IEBA
IFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDoKICAgICByZXR1cm4gVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbikKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuOwpAQCAt
MTA1MiwxOCArMTA1MiwxOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAgICAgICAgbV9kZWNvZGVy
ID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCisgICAgaWYg
KCFsZW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh1c2VEZWNvZGVyKQotICAgICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBi
aW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGJ1ZmZl
cik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwog
ICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewotICAgICAgICBtX3JlY2VpdmVkTGVuZ3RoICs9
IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVjZWl2ZWRMZW5ndGggKz0gbGVuOwogCiAgICAg
ICAgIGlmIChyZWFkeVN0YXRlKCkgIT0gTE9BRElORykKICAgICAgICAgICAgIGNoYW5nZVN0YXRl
KExPQURJTkcpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
ZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJc0RvbmUoYm9vbCkgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg4NjAxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMjItMDEtMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIyODc2ODQp
IHNwZWVkdGVzdC5uZXQgdXNlcyBtYW55IEdCIG9mIG1lbW9yeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1
ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVj
dWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgICogU2hhcmVkL21h
Yy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6CisgICAgICAgICogU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oOgor
CiAyMDIyLTAxLTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAg
ICAgIEluc3RhbGwgYnVpbGQgZmFpbHVyZSB3aGVuIHVzaW5nIFNZU1RFTV9DT05URU5UX1BBVEgK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC05NywxMCArOTYsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhU2VudCh1aW50NgogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMs
IGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBSZW1v
dGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVj
ZWl2ZWQoKnRoaXMsIGRhdGEpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTgsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJldmlz
aW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKQordm9p
ZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIENPUlNfQ0hFQ0tFUl9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAkocmV2
aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTcy
LDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
Q2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkg
ZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkg
PSAwOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsMTAgKzI1NCwxMSBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uCiAgICAgbV9jbGllbnQuZ2V0KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVk
IGRhdGEgbGVuZ3RoLgotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVy
LCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICBt
X2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CiB9
CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0NSwyOSArODQ1LDI5
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWkKICAgICB9KTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEg
KHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBB
U1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCiAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ug
b2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+
Y2FwYWNpdHkoKSAvIDg7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUo
KSArIGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRl
IHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgotICAgIHVuc2lnbmVk
IGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci5zaXplKCk7CisgICAgdW5zaWduZWQgZW5j
b2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9idWZmZXJl
ZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFy
dEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI1NSw3ICsx
MjU1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbQogICAgIG1f
YnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9
CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBm
aW5hbDsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZl
cmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAg
ICB2b2lkIHNlbmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAg
ICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVT
YW5kYm94RXh0ZW5zaW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9p
ZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cgogICAgIGRpZEZpbmlzaCh7IH0s
IHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRh
Iik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAko
cmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcg
QEAgcHJpdmF0ZTogICAgCiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ay5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzQsNyArMTczLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVu
TG9vcCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFz
ay5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw2IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTY3LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJ
UEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBt
ZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrIE5vdFJlZkNvdW50ZWQgewogICAg
IERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKLSAgICBEaWRSZWNlaXZlRGF0
YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
KyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnByb2Nlc3NSZXNwCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUo
cmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTQwMSw3ICs0MDEsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvCiAgICAgICAgICAgICBk
aWRGaW5pc2gobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNo
dW5rKSksIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVy
Q29weShjaHVuayksIGxlbmd0aCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENv
bm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NCw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRTb3VyY2UgOiBib29sIHsg
Tm8sIFllcyB9OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIE5vdFJlCiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAg
IERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0g
ICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzIG1ldHJpY3MpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmQKICAgICAgICAgY2Fs
bGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlD
YWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soUmVmUHRyIHsgJmJ1ZmZlciB9LCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCShyZXZpc2lvbiAy
ODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7
Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU1LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
cjsgfQpAQCAtNzIsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9y
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlm
ICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4NiwxMCArMTg2LDggQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUgogICAgICAgICAgICAgbV9kZWNv
ZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJV
VEYtOCIpOwogICAgIH0KIAotICAgIGJ1ZmZlci5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewotICAgICAgICBpZiAoc2VnbWVudC5zaXplKCkpCi0gICAgICAgICAgICBtX3Njcmlw
dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgp
KSk7Ci0gICAgfSk7CisgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MCwxNSArMTIwLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBk
YXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICog
MTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSAr
IGJ1ZmZlci5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lv
biAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgT0JKQ19DTEFT
UyBOU011dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdp
c3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02Myw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVy
blRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93
bmxvYWQoRG93bmxvYWQmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjg4
NTg2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaQogICAgICAgICBtX2NsaWVudC0+ZGlkQ29t
cGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgV1RGRW1p
dFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIs
IGRhdGEuc2l6ZSgpKTsKKyAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRh
c2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEpOworICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywg
V2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
YW1lU2l0ZUluZm8uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cGFsL3Rl
eHQvVGV4dEVuY29kaW5nLmg+CkBAIC0xNzMsMTMgKzE3MiwxMyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxS
ZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFz
a0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3Rh
dGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1l
dHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjksNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxX
ZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2
b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERp
ZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYmKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOSArMTg1LDkgQEAgdm9pZCBNZWRpYUZvcm1h
dFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MoUwogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsK
IAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9OwotICAgIEFTU0VSVCgh
bV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOwotICAgIEFTU0VS
VChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7Ci0gICAg
QVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkp
OworICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7CisgICAgQVNTRVJUKG1fZHVyYXRp
b24uaXNJbnZhbGlkKCkpOworICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOwog
CiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBpZiAoZXJy
b3JDb2RlKQpAQCAtMjIxLDcgKzIyMSw2IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBh
cnNlVHJhY2tzKFMKICAgICB9CiAKICAgICBtX3BhcnNlVHJhY2tzQ29uZGl0aW9uLm5vdGlmeUFs
bCgpOwotICAgIG1faW5pdCA9IHRydWU7CiB9CiAKIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRp
ZFByb3ZpZGVNZWRpYURhdGEoUmVmPE1lZGlhU2FtcGxlPiYmIG1lZGlhU2FtcGxlLCB1aW50NjRf
dCB0cmFja0lELCBjb25zdCBTdHJpbmcmKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFj
a1JlYWRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVm
UHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlm
aWVyOwotICAgIGJvb2wgbV9pbml0IHsgZmFsc2UgfTsKIH07CiAKIGNvbnN0ZXhwciBNZWRpYUZv
cm1hdFJlYWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3Mo
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAJ
KHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9ucwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTE4NiwxMSArMTg2LDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
Y28KICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAg
ICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAg
ICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNv
dXJjZUxvYWRlcklELCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSksIG1fd2ViUGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJj
ZUxvYWRlcklELCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyLmdldCgpKSksIG1fd2ViUGFn
ZUlEKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAkocmV2aXNpb24gMjg4NTg2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENv
bXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAkocmV2aXNpb24gMjg4NTg2KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxNyArNzIsMjAgQEAgdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KAogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2Vu
dCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eTo6ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsKKyAgICBhdXRvIHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUobGVuZ3RoKTsKICAgICBpZiAoIXNoYXJlZE1lbW9y
eSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOworICAgIG1lbWNweShzaGFyZWRNZW1v
cnlQdHIsIGRhdGEsIGxlbmd0aCk7CisKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVt
b3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtl
T3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVk
KG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIu
c2l6ZSgpIH0pLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpIH0p
LCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAko
cmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZp
bmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0yMDEsMTUgKzIwMCwxNiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNp
emUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vz
c2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0
YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtF
TFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKSkpIHsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
eworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoYwogICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEiKTsKICAg
ICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKLSAgICBtX2NvcmVMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGRhdGEuc2FmZUJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICAgICBMT0coTmV0
d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNl
IGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6
Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFi
bGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKQEAgLTMyMyw3ICsz
MjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAKICAgICAv
LyBPbmx5IHNlbmQgZGF0YSB0byB0aGUgZGlkUmVjZWl2ZURhdGEgY2FsbGJhY2sgaWYgaXQgZXhp
c3RzLgogICAgIGlmICh1bnNpZ25lZCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IGJ1ZmZlclNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIG1fY29yZUxv
YWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgYnVmZmVyU2l6
ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAgIGlmICghbV9jb3JlTG9hZGVyKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBGb3JtRGF0
YVJlZmVyZW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAgICAgV2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAg
ICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAg
IERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NCwxMyArNTQsMTIgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7Ci1jbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
SW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJh
cjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBs
dWctaW4gdGhhdCBhIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsK
IAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxv
YWRpbmcuCiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
c3RyZWFtSUQpID0gMDsKQEAgLTE3NCw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRU
aW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVn
LWluIHRoYXQgdGhlIG1hbnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAy
ODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0
c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUs
OSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvCiAgICAgbV9wbHVn
aW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJl
c3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1p
bWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9p
ZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFBsdWdpblZpZXc6OlN0
cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBtX3BsdWdpblZpZXctPm1fcGx1Z2lu
LT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlELCBidWZmZXIpOworICAgIG1fcGx1Z2lu
Vmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVEYXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBs
ZW5ndGgpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkRmFpbChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAKQEAgLTM3NCw3
ICszNzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlUmVzCiAgICAg
bV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3Ry
ZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVy
cywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9p
ZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBp
ZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1fcGx1Z2luKQpAQCAtMzgyLDEx
ICszODIsMTEgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdAogCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YS5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICBt
X3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CiB9CiAK
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5
ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAg
ICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShidWZmZXIpOwotICAgICAgICB9KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21h
bnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQg
OiBidWZmZXIuZ2V0KCkpCisgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxl
bWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BsdWdpbiB8fCBt
X3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpOyB9CiAKICAgICB2b2lkIG1hbnVhbExvYWREaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGaW5pc2hMb2FkaW5nKCk7CiAg
ICAgdm9pZCBtYW51YWxMb2FkRGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3MgRWxlbWVudDsK
IHN0cnVjdCBQbHVnaW5JbmZvOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V1RGIHsKQEAgLTE3NywxMSArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgZmlu
YWw7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNl
U3RhdHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZp
bmFsOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3Ry
ZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwg
Ym9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFt
ZSkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIGJvb2wgaGFuZGxlTW91
c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBAIC0zNjMsNyArMzYyLDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6Ok5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw3ICs5NCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbEFuaW1hdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nl
dHRpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CkBAIC0xMTkyLDcgKzExOTEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2lu
U3RyZWFtTG9hZGVyQ2xpCiAgICAgfQogfQogCi12b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3Ry
ZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciogbG9hZGVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFBERlBsdWdpbjo6UERG
UGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgY291bnQpCiB7CiAg
ICAgaWYgKCFtX3BkZlBsdWdpbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTIwMSw3ICsxMjAwLDcg
QEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaQogICAgIGlmICghcmVx
dWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQpOwogfQog
CiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpA
QCAtMTcxOSwxNSArMTcxOCwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlCiAgICAgICAgIG1faXNQb3N0U2NyaXB0ID0gdHJ1ZTsKIH0KIAotdm9pZCBQREZQbHVn
aW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQp
OwogCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIG1fZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZSgwLCAwKSk7CiAKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhtX2RhdGEuZ2V0KCks
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBi
dWZmZXIuc2l6ZSgpOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnl0ZXMs
IGxlbmd0aCk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKIH0KIAogdm9pZCBQREZQ
bHVnaW46OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0xNzY0
LDE0ICsxNzYzLDE0IEBAIHZvaWQgUERGUGx1Z2luOjplbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKHUK
ICAgICAgICAgQ0ZEYXRhSW5jcmVhc2VMZW5ndGgobV9kYXRhLmdldCgpLCB0YXJnZXRMZW5ndGgg
LSBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQREZQbHVnaW46Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVh
bWVkQnl0ZXMgKyBidWZmZXIuc2l6ZSgpKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5
dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CisgICAg
ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aChtX3N0cmVhbWVkQnl0ZXMgKyBsZW5ndGgpOworICAgIG1l
bWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5
dGVzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogCiAj
aWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAgICAvLyBLZWVwIG91ciByYW5nZXMtbG9v
a3VwLXRhYmxlIGNvbXBhY3QgYnkgY29udGludW91c2x5IHVwZGF0aW5nIGl0cyBmaXJzdCByYW5n
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAJKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGkKICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNw
b25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3Zv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaQogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAgICAgIG1f
cmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6OmdldDxT
aGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKGJ1ZmZlcik7CisgICAg
ICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lz
RG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHko
YnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KFdURk1vdmUoYnVmZmVyKSksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihi
dWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZUJsb2JDaHVuayhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNEb3du
bG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZm
ZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGRhdGEsIHNpemUgfSwgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyB7IGRhdGEgLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUp
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpjbwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2gobV9uZXR3b3JrTG9hZE1ldHJpY3MpOwogICAg
IH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsKLSAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmNvcHkoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gp
CiAgICAgICAgICAgICBkaWRGaW5pc2gobV9uZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIH0sIFt0
aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpAQCAtNjEsOCAr
NjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFs
OwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmso
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgCisgICAgdm9pZCBkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgdm9pZCBkaWRGaW5p
c2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3Jl
OjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZp
bmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CisgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsg
Y2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGll
bnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZChjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmluaXNoQmxvYkxv
YWRpbmcoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlz
aW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTEsMTAgKzExNTEs
MTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bAogICAgIHdlYlBh
Z2UtPmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KG1fZnJhbWUpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1p
dHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAgICAgbG9hZGVyLT5jb21t
aXREYXRhKGRhdGEpOworICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsK
IAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50
LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAv
LyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0
dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAgfQotICAgIG1f
cGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEpOworICAgIG1fcGx1Z2lu
Vmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9h
ZGVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4ODU4NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCkgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlcgogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEy
LDEyICs3MDEyLDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXMK
ICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNw
b25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdl
YlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYgZGF0YSkKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVE
YXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVy
VG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBB
U1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lk
ZW50aWZpZXIsIGRhdGEuc2FmZUJ1ZmZlcigpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2
ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJ
ZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg4
NTg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDYgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25u
ZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Miw3ICsx
ODkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxT
Y2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIHVybFNj
aGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBw
bGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMyArOTYs
MTMgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZQogICAgIHRhc2st
PmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgc2l6ZV90IHNpemUsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlm
aWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRhc2stPmRpZFJl
Y2VpdmVEYXRhKGRhdGEpOworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOwog
fQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAkocmV2aXNpb24gMjg4
NTg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC02MCw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0Rp
ZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAg
ICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNr
RGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0
YSk7CiAgICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlk
U3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcAkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDIx
ICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZQogICAg
IH0pOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQogewog
ICAgIGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRp
bmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJVUkxTQ0hFTUVUQVNLUFJPWFlf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZlZCBkYXRhIGR1cmluZyByZXNwb25z
ZSBwcm9jZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwotICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0gUmVmIHsgZGF0YSB9XSB7Ci0gICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEs
IHNpemUgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCks
IGRhdGFWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0gICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlRGF0YShkYXRhLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMp
OworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBh
eWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNr
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2
LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsK
ICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAog
ICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNp
b24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI4NzY4NCkgc3BlZWR0
ZXN0Lm5ldCB1c2VzIG1hbnkgR0Igb2YgbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwog
MjAyMi0wMS0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBE
aXNhYmxlIENGVVJMQ2FjaGUgaW4gV2ViS2l0MgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAKQEAgLTc0LDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsK
ICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBs
ZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7
IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMjUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIy
ODc2ODQpIHNwZWVkdGVzdC5uZXQgdXNlcyBtYW55IEdCIG9mIG1lbW9yeQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjE1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2FkZXJD
bGllbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9jb21taXREYXRhOl0pOgorCiAyMDIyLTAxLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgZXhwZXJpbWVudGFsIGZlYXR1
cmUgbmFtZXMgdG8gYmUgaGlkZGVuIGluIFdlYktpdEFkZGl0aW9ucwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCwxMiArNDgsMTAgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDYWNoZWRGcmFtZTsKLWNs
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CkBAIC0xNTMsNyArMTUxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQogICAgIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0
dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RM
aW5rcygpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDI4ODU4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OTIsOSArOTkyLDEwIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWwKICNlbmRpZgogfQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBbZGF0YVNv
dXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07Cisg
ICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9D
b3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgW2Rh
dGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciogbG9hZGVyKQpAQCAtMjAxMSw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbgogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBh
dGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwog
ICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAy
ODg1ODYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC05NzcsNyArOTc3LDcgQEAgLSAodm9pZClfY29tbWl0RGF0YTooTlNE
YXRhICopZGF0YQogICAgIGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBkb2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9wcml2YXRl
LT5zaG91bGRDcmVhdGVSZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3QgdWludDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0
YSBsZW5ndGhdKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gMjg4NTg2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDEtMjUgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIyODc2
ODQpIHNwZWVkdGVzdC5uZXQgdXNlcyBtYW55IEdCIG9mIG1lbW9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKwogMjAyMi0wMS0yMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBGaXggQXBwbGVXaW4gYnVpbGQgd2l0aCBuZXdlciBNU1ZDCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyODg1ODYpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0MSw5ICs2NDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRDaGFuZ2VUaXRsCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21t
aXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpCiB7Ci0gICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOworICAgIGxvYWRlci0+
Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEg
c3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5j
ZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNo
YXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI4ODU4NikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0
RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjb21taXR0ZWRM
b2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZExv
YWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2ls
bENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7Cg==
</data>
<flag name="commit-queue"
          id="476248"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449995</attachid>
            <date>2022-01-25 21:12:11 -0800</date>
            <delta_ts>2022-02-10 16:40:00 -0800</delta_ts>
            <desc>safari-613-branch-patch</desc>
            <filename>safari-613-branch-patch</filename>
            <type>text/plain</type>
            <size>261585</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiODcyNzgwODRlYTYuLjc2NjYyZTljNTE0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzOSBAQAorMjAyMi0wMS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjI4NzY4NCkgc3BlZWR0ZXN0Lm5l
dCB1c2VzIG1hbnkgR0Igb2YgbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGVmZmVjdGl2ZWx5IHJldmVydHMgcjI4NzY4NCBhbmQgcjI4
NzY4Ny4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZCk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6
OmJsb2JDaHVuayk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iOjpzdHJlYW0pOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlQmluYXJ5Q2h1bmspOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YSk6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9uc2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpjb21taXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2ls
bExvYWRNZWRpYUVsZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgICog
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
Ojp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U291cmNlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVj
ZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW06OnRyeVRvUmVj
ZWl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlRGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAg
ICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDIyLTAxLTI0
ICBBbGFuIENvb24gIDxhbGFuY29vbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hlcnJ5LXBpY2sg
cjI4ODQ0MS4gcmRhcjovL3Byb2JsZW0vODc3MDcwOTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZmU2ZjYyYmI3NmUxLi4y
YjVkMTA0NjJiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zNzgsMTMgKzM3OCwxMyBAQCB2b2lkIEZldGNoQm9keUNv
bnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3Ry
aW5nJiBjbwogICAgIH0KIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1fc291cmNlKSB7
Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
KTsKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9idWZmZXIuYXBwZW5kKGJ1
ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCiB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
aW5kZXggY2JlZDBmMDMzZDkxLi43OTgwNWQ0YWE1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogCiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIgY2xvbmUoKTsKIAotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMzIxNWJjMTdjMzgxLi41MzU0MGNm
ZGM0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCkBAIC0yOTgsMTAgKzI5OCwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9h
ZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJv
ZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBGZXRj
aEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
eworICAgIEFTU0VSVChkYXRhKTsKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7
Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKSkKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVl
dWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCiAgICAgICAgIHN0b3AoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmlu
ZGV4IDcxMGVkY2ZkNjY1Mi4uMDIwYjVlZmU3YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
RmV0Y2hMb2FkZXIuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDIsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIC8vIEJsb2IgbG9hZGluZyByb3V0aW5lcwotICAgIHZvaWQgYmxvYkNodW5rKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwogICAgIHZvaWQgYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsKICAgICB2b2lkIGJsb2JMb2FkaW5n
RmFpbGVkKCk7CiAgICAgdm9pZCBmaW5pc2hCbG9iTG9hZGluZygpOwpAQCAtMTE1LDcgKzExNCw3
IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
LSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
ZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoYnVmZmVyKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJs
b2JDaHVuayhkYXRhLCBzaXplKTsgfQogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbCB7IG93bmVy
LmJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBiMjZjMmFkMTUwNGYuLjAzZjg5YjYxY2E1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwx
MyArMTQ4LDEzIEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEZldGNoTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiB2YWx1ZSwgaW50IHNpemUpCiB7CiAgICAgaWYgKCFt
X2NvbnN1bWVyKSB7Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7Cisg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHZhbHVlLCBzaXplKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX2NvbnN1
bWVyLT5hcHBlbmQodmFsdWUsIHNpemUpOwogfQogCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA3MmIyNzJlYmU2NTQuLjQ2MTJkMGUwZTNhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQg
QVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyQ2xpZW50LmgKaW5kZXggMTA5ZTA4ZWNmN2E0Li5mZWQzZTVlYWU3MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDBkNGZmMWE3ODUzMy4uMTA4N2M1YTA1Zjk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTM1OCwx
MiArMzU4LDEyIEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291CiAgICAgICAgIHJlc3BvbnNlQ2Fs
bGJhY2sobV9yZXNwb25zZSk7CiB9CiAKLXZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UgfHwgbV9jb25zdW1lRGF0YUNhbGxiYWNrKTsKIAogICAgIGlmIChtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2spIHsKLSAgICAgICAgU3BhbiBjaHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkgfTsKKyAgICAgICAgU3BhbiBjaHVuayB7IGRhdGEsIHNpemUgfTsKICAgICAgICAgbV9jb25z
dW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzEs
NyArMzcxLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvJiBzb3VyY2UgPSAqbV9yZXNw
b25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlOwogCiAgICAgaWYgKCFzb3VyY2UuaXNQdWxsaW5n
KCkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVy
KTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoZGF0YSwgc2l6
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkpIHsKKyAg
ICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkp
KSB7CiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ2Myw3ICs0
NjMsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRh
dGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNv
bnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQogewotICAgIGJvZHkoKS5j
b25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVu
ay0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOwogfQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmNv
bnN1bWVCb2R5QXNTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuaAppbmRleCAyNzQ2ODA3Y2E4YmIuLjNjYzlkMWJlZjY0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTE0Myw3ICsxNDMsNyBA
QCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZFN1Y2NlZWQoKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogCiAgICAg
ICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxi
YWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCBhNjQxZjgxMDdi
NGYuLjI3YTZkNzAzMzRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcsMTAg
QEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBIVE1MTW9k
ZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChidWZmZXIp
OworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMGQzYmRiNzQ5ZDdhLi5j
ZTAwOWQ0ZTVlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaApAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIC8vIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IG92ZXJyaWRlcy4KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIC8vIE1vZGVsUGxheWVyQ2xp
ZW50IG92ZXJyaWRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRleCBmZWU5ODg0MjIxYmIuLmQ1MTczZmJmOGI0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZl
clNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVh
ZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAppbmRleCAwN2FiY2FhODFkZGYuLjc0ZWY1ZjRiOGI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw3ICs0MSw2
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIu
aCIKQEAgLTE2OSwxNSArMTY4LDE2IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgRmlsZVJl
YWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOworICAgIEFTU0VSVChkYXRhKTsK
KyAgICBBU1NFUlQoZGF0YUxlbmd0aCA+IDApOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYWxy
ZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBidWZmZXIuc2l6ZSgpOworICAgIGludCBsZW5n
dGggPSBkYXRhTGVuZ3RoOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNlID0gbV90
b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1
ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCkBA
IC0xODYsNyArMTg2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAgICAgICAgdW5zaWduZWQg
bmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG5ld0xlbmd0aCA9IG1fdG90YWxCeXRlcyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
YXRhTGVuZ3RoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBtX3RvdGFsQnl0ZXMpIHsK
ICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKGxlbmd0aCA8
PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1f
cmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7
CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSkgKyBtX2J5
dGVzTG9hZGVkLCBkYXRhLCBsZW5ndGgpOwogICAgIG1fYnl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwog
CiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNjMxNmM0MDA0ZGVmLi5kYmFlOWUzMzUwOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCkBAIC03MSw3ICs3MSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAzYzk3OGUzZjQ0MjEuLjVjNWJiMmFl
YTgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0
cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJS
ZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCi0gICAgICAgIG5ldHdv
cmtBZ2VudC0+ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgJmJ1ZmZlciwgYnVmZmVyLnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVE
YXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNl
TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCmluZGV4IDgyYWNjZWQyMGNmZC4uZDI5NTc4MTBkODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBA
IC0xOTMsMTMgKzE5MywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKFBhZ2UmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNl
Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRo
cmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1l
KiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgc3RhdGljIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTQx
NCw3ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZy
b21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50TG9hZGVyKiwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2
b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmKTsKQEAgLTEwODIsMTcgKzEwODIsMTcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW4K
ICAgICAgICAgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoKmFnZW50cywg
ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCBpZGVudGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1l
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
cyhmcmFtZSkpCi0gICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVy
LCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBs
KCphZ2VudHMsIGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
RGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAg
ICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURh
dGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBidWZm
ZXIsIGJ1ZmZlci5zaXplKCkpOworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgZGF0YSwgZGF0YUxlbmd0aCwgZGF0YUxl
bmd0aCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
MzI4ZWJlN2U2NDExLi4zOWIwMTFjZjA2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtOTAsMTAgKzkwLDEwIEBAIHNpemVf
dCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kYXRhQnVmZmVyLnNpemUoKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhh
c0NvbnRlbnQoKSk7Ci0gICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKKyAgICBtX2RhdGFC
dWZmZXIuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KCkKQEAgLTIyMSw3
ICsyMjEsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCdWZmZXJSZXNvdXJjZURhdGEoY29uc3QgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSYgcgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291
cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9y
UmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCkBAIC0yMzAsMTUg
KzIzMCwxNSBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZQogICAgIGlmICghc2hvdWxkQnVmZmVy
UmVzb3VyY2VEYXRhKCpyZXNvdXJjZURhdGEpKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEYXRh
OwogCi0gICAgaWYgKHJlc291cmNlRGF0YS0+ZGF0YUxlbmd0aCgpICsgZGF0YS5zaXplKCkgPiBt
X21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURhdGEt
PmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKQogICAgICAgICBtX2NvbnRlbnRTaXplIC09IHJlc291cmNlRGF0YS0+ZXZpY3RDb250
ZW50KCk7CiAgICAgaWYgKHJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKQogICAgICAg
ICByZXR1cm4gcmVzb3VyY2VEYXRhOwogCi0gICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNp
emUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYgKGVu
c3VyZUZyZWVTcGFjZShkYXRhTGVuZ3RoKSAmJiAhcmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmlj
dGVkKCkpIHsKICAgICAgICAgbV9yZXF1ZXN0SWRzRGVxdWUuYXBwZW5kKHJlcXVlc3RJZCk7Ci0g
ICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5kRGF0YShkYXRhKTsKLSAgICAgICAgbV9jb250ZW50
U2l6ZSArPSBkYXRhLnNpemUoKTsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGFMZW5ndGg7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggYzhjZWQxMmE2NDA3Li5kYWFlNWZl
NGEzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0
OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgICAg
IHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7
CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJp
bmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVz
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNl
Q29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBi
b29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXli
ZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IDBjMjk3MGU4MzhhNy4uM2ExM2I4NTJkODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMjQs
MTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgdGV4dEVuY29kaW5nLCB1c2VEZXRlY3Rvcik7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCisgICAgICAgIGlmICghZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBtX3Jlc3BvbnNlVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX3Jlc3BvbnNlVGV4dC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgZGF0YUxlbmd0aCkpOwogICAgIH0KIAogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlCkBAIC01
NDYsOCArNTQ2LDkgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgICAgIGlmIChw
cmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPmNvbnRlbnQoKSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQnVmZmVyZWRE
YXRhKCkpIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCkt
PmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1
ZXN0SWQsIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c0J1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHNl
Z21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTU3Myw3ICs1NzQsNyBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaQogICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBudWxscHRyLCBj
YWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
aWYgKG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm47CkBAIC01ODEsMTYgKzU4MiwxNiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAoZGF0YSkgewotICAgICAgICBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291
cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgKmRhdGEpOworICAgICAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEg
PSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwg
ZGF0YUxlbmd0aCk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMgWEhSLCBpZiB3ZSBk
aWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBiYXNlNjQgZW5jb2Rl
ZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3Vs
ZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rl
ci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwg
d2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0
aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAmJiByZXNvdXJjZURh
dGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJlc291cmNlRGF0YS0+
Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3Vy
Y2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpLCB0cnVlKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVz
b3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgZGF0YUxl
bmd0aCksIHRydWUpOwogICAgIH0KIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVj
ZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1
ZXN0SWQsIHRpbWVzdGFtcCgpLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqKQpA
QCAtMTI2Nyw3ICsxMjY4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vz
c2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAg
ICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQpAQCAtMTI5Miw5ICsxMjkzLDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAg
ICB9CiAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVh
ZGVycykpOwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxvYWRlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxs
KCldKCkgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVy
LCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChidWZmZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVm
ZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAg
ICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBsb2FkZXItPmRpZEZpbmlz
aExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApp
bmRleCA3MmY0MjNmZjYxMjcuLjZiY2Q4N2RkY2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMDEs
NyArMTAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSop
OwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OkxvYWRUeXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlc291cmNlTG9hZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIq
LCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CmluZGV4IDI4OWYzMmE2MzcwZC4uYjhiODFmMGQxOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xNDUsMTQgKzE0NSwxNCBAQCBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQogCi1ib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0
ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAi
Q29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBk
YXRhLnNpemUoKSwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKLSAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEgPSBSZWYg
eyBkYXRhIH1dKGF1dG8mIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIGNvbnRlbnRGaWx0
ZXIuYWRkRGF0YShkYXRhKTsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50
RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBt
X21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBm
b3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3RoXShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVu
Z3RoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93
ZWQpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3Vy
Y2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVz
b3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVu
dC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNl
QnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2MGI0ZGExYTliMzMuLjhi
NmRlZmZmYWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBj
b250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRh
UmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgK
aW5kZXggZmE3YWQzMDM5YTIwLi4yMTVjMDRlYzk4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAog
Y2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00Miw3ICs0MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigp
IGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggMzJjODhiNWQzNmRiLi45YjQ1YTg3MDM1OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgyLDggKzQ4Miw4IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMg
YW4gZW1wdHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVk
IHlldC4gQ29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRl
cjo6YmVnaW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAg
IGlmICghbV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpOwotCisgICAgICAgICAgICBjb21taXREYXRhKDAsIDApOworICAgICAgICAK
ICAgICAgICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTQw
LDggKzExNDAsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAg
ICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBp
ZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZv
ckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKLSAgICAgICAg
ICAgICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKKyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVh
Y2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgZGF0YVJlY2Vp
dmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTU0LDcg
KzExNTQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGlj
eShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIERvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8g
Qm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkg
ZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8g
Ynkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE2OSw3
ICsxMTY5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiAgICAgaWYgKEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShy
ZXNwb25zZSgpLm1pbWVUeXBlKCkpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBmcmFt
ZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKKyAgICBmcmFtZUxv
YWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhLCBsZW5ndGgpOwogCiAgICAg
aWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQogICAgICAgICBmcmFtZUxvYWRlci0+Y2xp
ZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKQEAgLTExOTgsNyArMTE5OCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VBY3RpdmVTZXJ2aWNlV29ya2VyRnJvbVBhcmVu
dChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9CiAjZW5kaWYKIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6Y29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIERvY3VtZW50TG9h
ZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogewog
ICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpIHsKICAgICAgICAgbV9nb3RGaXJzdEJ5dGUgPSB0cnVl
OwpAQCAtMTI5NiwyNCArMTI5NiwyNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUt
PmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShkYXRhKTsKKyAg
ICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5ndGgpOwogfQogCi12b2lkIERvY3VtZW50TG9h
ZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsK
LSAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKKyAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChidWZmZXIuZGF0YSgpKTsKLSAg
ICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CisgICAgQVNTRVJUKGRhdGEpOworICAgIEFTU0VSVChs
ZW5ndGgpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAvLyBUaGVy
ZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVk
IGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICNlbmRpZgogCiAgICAgaWYgKG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCAm
YnVmZmVyLCBidWZmZXIuc2l6ZSgpLCAtMSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyLCBkYXRhLCBsZW5ndGgsIC0xKTsKIAotICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBmYWxzZSk7
CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGRh
dGEsIGxlbmd0aCwgLTEsIGZhbHNlKTsKIAogICAgIGlmICghaXNNdWx0aXBhcnRSZXBsYWNpbmdM
b2FkKCkpCi0gICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKKyAgICAgICAgY29tbWl0TG9hZChk
YXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXR1cEZvclJlcGxhY2Uo
KQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVB
cmNoaXZlKCkKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUo
KSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YSgq
bV9wYXJzZWRBcmNoaXZlRGF0YSk7CisgICAgY29tbWl0RGF0YShtX3BhcnNlZEFyY2hpdmVEYXRh
LT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
ICNlbmRpZgogfQpAQCAtMjI0MCw3ICsyMjQwLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5
YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIGNvbW1pdExv
YWQobWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwor
ICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29u
TG9hZGluZygpCkBAIC0yMzkyLDkgKzIzOTMsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1
ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbgog
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotdm9pZCBEb2N1bWVudExvYWRlcjo6
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKIHsKLSAgICBkYXRhUmVjZWl2ZWQoYnVm
ZmVyKTsKKyAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgc2l6ZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRl
eCAyOGUyOGE2ODhhZTYuLmI0Njk4MWQ3NTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTg2LDcgKzg2LDYgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOwpAQCAtMzc4LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGlt
aW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIg
Y2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVh
bGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3Q7CkBAIC00NzgsNyArNDc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29t
bWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICB2b2lkIGNvbW1pdExvYWQoY29uc3QgdWludDhfdCosIGludCk7CiAgICAgdm9pZCBjbGVhck1h
aW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5
NCw3ICs0OTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2
aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKQEAgLTUwNCwxMyArNTAzLDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAg
IGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyOTEyZTNkNTYyMTUuLjViZDgzNjdm
MGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTQzNywyMCArNDM3LDIwIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgZGlkUmVjZWl2
ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBidWZmZXIpOworICAgIGRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKIAogICAgIGlmIChtX2RlbGF5Q2FsbGJhY2tzRm9ySW50ZWdyaXR5Q2hlY2spCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWlu
ZykKQEAgLTQ5MywxNCArNDkzLDIwIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAg
ICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xp
Y3k6OkRpc2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIpOworICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBl
OjpEZWZhdWx0KTsKIAogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShp
ZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5j
cmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3Vy
Y2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJl
c3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAg
IGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyKTsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CisgICAg
ICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewor
ICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApAQCAtNjYxLDggKzY2NywxMSBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vj
dXJpdHlDaAogICAgIH0KICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwogCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
ICpkYXRhKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChb
Jl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmll
ciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfQog
CiAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOwogICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWlu
Zzo6ZnJvbVN5bmNocm9ub3VzTG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBs
b2FkVGltaW5nLCB0aW1pbmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1l
dHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGM4NmJhN2Y0NTM4My4u
ZTA3YjhkOWQwNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oCkBAIC04NiwxNCArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgICAgICB2b2lkIGRhdGFTZW50
KENhY2hlZFJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5n
Rm9yV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggNGZmOTM4MTgwZmRkLi5iMDQ2ZWYwZGUyMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMjY0LDcgKzI2
NCw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNlaXZlZCgpCiAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cmVzb2x2ZVN0eWxlKERvY3VtZW50OjpSZXNvbHZlU3R5bGVUeXBl
OjpSZWJ1aWxkKTsKIH0KIAotdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCit2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogewogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2Ug
dG8gQVNTRVJUIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
NDI3IGhhcyBiZWVuIHJlc29sdmVkLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgIT0gU3Rh
dGU6Ok5vdFN0YXJ0ZWQpOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6
OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlz
LCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygq
dGhpcywgYnl0ZXMsIGxlbmd0aCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6Omluc2VydERh
dGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuaAppbmRleCBjMGEzNGE2YjdlOWMuLmQzZTgzZWI0OTc4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNs
YXNzIEZyYW1lOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIAogY2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDgsNyArNDcsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3Bh
dGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQg
PSBudWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IGQyM2M5NmI2YzUyOC4uNzU4Y2JlODA2NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFyZWRC
dWZmZXImKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMTE2YTE3ZDFmNWM5Li4y
MjY5OWM5YzUxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVw
bGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBh
cnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopIGZpbmFsOwogCiAgICAgUmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU5ZjJiZDg4Nzk2YS4uNGU1MGE5
MTViNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyAr
MTY4Nyw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYg
dXJsLCBOb2RlJiBpbml0aWF0b3JOb2RlKQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxl
Z2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVyLCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSks
IG51bGxwdHIsIC0xLCAtMSwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpLCAwLCAtMSwg
LTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODcsNyArMjA4
Nyw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAg
IC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgot
ICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3Vt
ZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFpblJl
c291Y2VFcnJvcik7CisgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVz
c2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFp
blJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpLAorICAgICAgICAgICAgbnVsbHB0
ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKSwgMCwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9y
PFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZCht
X2ZyYW1lKTsKQEAgLTIxMzUsNyArMjEzNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFBy
b3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3Vy
Y2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQg
dGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFu
ZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAg
ICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAg
ICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
MCwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMg
ZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2NSw4ICszMTY2LDcgQEAgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRp
b24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0
aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBub3Rp
ZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBkYXRhLmdldCgpLCBkYXRhID8gZGF0
YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVl
c3QsIHJlc3BvbnNlLCBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDAsIC0xLCBlcnJvcik7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAg
LTM2NDcsNyArMzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyCiAKICAgICBSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVzb3VyY2UucmVzcG9uc2UoKTsKICAgICByZXNwb25zZS5z
ZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpNZW1vcnlDYWNoZSk7Ci0gICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2Uu
ZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0Rl
bGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlVc2VyQWdlbnRJZk5lZWRlZChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDM1MmE0YzRmYjUwNC4uZWU5ZjNkMGM5ODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCiAgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fCisjaWZkZWYgX19P
QkpDX18gCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVt
b3RlQVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApA
QCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VN
dWx0aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0K
KyAgICAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAg
LTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQorICAgIAogICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZy
YW1lKENhY2hlZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEs
NyArMzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotCisgICAg
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9
CkBAIC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5n
VmlldykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotCisgICAgCiAgICAgdmlydHVh
bCBib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMWExN2E3MGZhNThjLi41ZDEyMGUyNDdhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIzMSwxMyArMjMxLDEzIEBA
IHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCB1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIE1lZGlhUmVzb3Vy
Y2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
ICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7
CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5ndGgp
OwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggN2I1NTc3MjBlZjA1Li5m
ZjZjMjg4NzEwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCmluZGV4IDVjYWFkZjYyOWM3MC4uNjA0M2FjOWJlMjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
QEAgLTE0MSwxNCArMTQxLDMwIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3sKKyAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Cit9CisKK3ZvaWQgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit7CisgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihu
dWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOworfQorCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOworICAg
IGlmIChtX2NsaWVudCkgeworICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CiAKLSAgICBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwg
ZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oCmluZGV4IDFlYzdkNjFlM2ExNy4uYjUxNzRlZGM5NGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTMg
KzM2LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjMsNyArNjIsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBA
IC03NCw2ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKwogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4g
bV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmNwcAppbmRleCAwMTlkMTc0ODFlNDQuLjYyYmI1NmUzNGU2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKQEAgLTc5LDEyICs3OCwxMiBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgUmVzbwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIsIGxvYWRlcik7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCkpCi0gICAgICAgIHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVy
LT5pZGVudGlmaWVyKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBwYWdlLT5wcm9ncmVzcygp
LmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKIAot
ICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2Fk
ZXItPmlkZW50aWZpZXIoKSwgJmJ1ZmZlciwgYnVmZmVyLnNpemUoKSwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpAQCAtMTU0LDEzICsxNTMsMTMgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmUKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1f
ZnJhbWUsIGlkZW50aWZpZXIsIGxvYWRlciwgciwgcmVzb3VyY2VMb2FkZXIpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVEYXRhKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZl
RGF0YShEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICAvLyBOb3RpZnlpbmcgdGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1h
eSBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVzdHJveWVkLgogICAgIFJlZjxGcmFtZT4gcHJvdGVj
dChtX2ZyYW1lKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVj
ZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBleHBlY3RlZERhdGFMZW5ndGgp
OworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgpOwogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwgYnVm
ZmVyID8gKmJ1ZmZlciA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1l
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MSw3ICsxODAsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IFJlc291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1f
ZnJhbWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciog
bG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNl
TG9hZE5vdGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3Qg
aXMgbnVsbCwgd2lsbFNlbmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAg
ICAgLy8gb25seSBkaXNwYXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCkBAIC0xOTQs
OCArMTkzLDggQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJlbWFpbmluZ0RlbGVn
YXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXJlc3BvbnNlLmlz
TnVsbCgpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlkZW50
aWZpZXIsIHJlc3BvbnNlKTsKIAotICAgIGlmIChleHBlY3RlZERhdGFMZW5ndGggPiAwKQotICAg
ICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVyLCBl
eHBlY3RlZERhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBpZiAoZGF0YUxlbmd0
aCA+IDApCisgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVy
LCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICBpZiAoZXJyb3Iu
aXNOdWxsKCkpIHsKICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgKaW5kZXggYzRmNWIy
ZWJkZDgxLi42ZGExNjAzMjVmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5v
dGlmaWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7
CkBAIC01NiwxOCArNTUsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
dWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZvaWQgZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2Fk
ZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVyKiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1
bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
KiwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1
bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBl
eHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAg
ICBib29sIGlzSW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGRjNDI5ODBlOWIyNS4uZGQyNmIzZTMzZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IGRlY29kZVJl
c3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVjb2RlUmVzdWx0LnZh
bHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0o
KSB7CisgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYm
IGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQiKQotICAgICAgICAg
ICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQYXlsb2Fk
V2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihX
VEZNb3ZlKGRhdGEpLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIAogICAg
ICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgICAg
ICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQog
ICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDcgKzMzNiwxMCBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBEYXRhUGF5bG9hZAogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogCi0g
ICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOworICAgIGVsc2UKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNTM2
LDcgKzUzOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByLCBDb21wbGV0aW9uSGFuCiAgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgLy8gVGhlIGZvbGxv
d2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2luY2UgYSBzdWJjbGFz
cwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEgd2F5IHRoYXQgaW52
YWxpZGF0ZXMgdGhlbS4gVGhpcwpAQCAtNTQ0LDIyICs1NDcsMzAgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGUKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24pOwogICAgIC8vIEFTU0VS
VCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZl
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKKyAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Cit9CisK
K3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0
YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQVNTRVJUKCFidWZm
ZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKKwogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlz
IGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwog
ICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGFkZEJ1ZmZlcihidWZmZXIsIGRhdGFQYXlsb2Fk
VHlwZSk7CisgICAgYWRkRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLmdldCgpLCBk
YXRhUGF5bG9hZFR5cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdp
dGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRh
TGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzE4
LDE0ICs3MjksMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNl
aXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMTA5OGU0ZjI3ODg5Li45MDc1Y2JjMGEzMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogCkBAIC0xNjcsNiArMTY3LDggQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5j
ZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7
IH0KIAorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJl
clBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVy
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAg
LTE5MCw3ICsxOTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25z
dCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGREYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
RGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5p
c2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDAsOCArMjAyLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVz
cG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZl
MGY3NDcyYTFhLi5jNGIwNTA0NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcApAQCAtNTE4LDE1ICs1MTgsMzIgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2Fk
ZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHByZXZpZXdMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgaWYgKHBy
ZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCiAKKyAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEs
IGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Cit9
CisKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit7CisjaWYgVVNFKFFVSUNLX0xPT0spCisg
ICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgeworICAg
ICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIuZ2V0KCkpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOworfQorCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQorewogICAgIEFTU0VSVChtX3Jlc291
cmNlKTsKIAogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkg
Pj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygp
KQpAQCAtNTM4LDEzICs1NTUsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGwKICAgICAvLyBh
bnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2Jq
ZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmPFN1YnJlc291cmNl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CisgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3Ro
LCBidWZmZXIuY29weVJlZigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsK
IAogICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewogICAgICAgICBpZiAoYXV0
byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jl
c291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpOwor
ICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVu
Z3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmgKaW5kZXggM2RiZDUzMzhhZmU0Li44MzJjOWYwZTczZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw3ICs3Myw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwpAQCAtOTEsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQs
IFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0
aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlv
dXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdS
ZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
aW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRD
b21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaAppbmRleCAzZDE5Mjg2MmYyNzcuLmNmMmRlMGM2MmQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQog
ICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSB7IG1f
ZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CiAgICAgdm9p
ZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
bV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCmluZGV4IGY5YzZiNWM0YTAyYS4uYjg1MjYyYmRlNmRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgK
QEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVRpbWluZzsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkYWJsZUxvYWRlckNsaWVudCk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNDUsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25z
dCBSZXNvdXJjZVRpbWluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAppbmRleCBiYWM2NmI0NTI4OTMuLjQyYWU2
NDkwOWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyLmgKQEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
ICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiAgICAgewogICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYjc3MWU2
MDYyZGJhLi4yYWE5MjU0YTU5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMCwxMyArMjMwLDE0IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
IHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJD
bGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0YSB9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2Vy
Q2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsK
KyAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpCi0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2Vy
UmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlcik7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAppbmRleCA5ZWY0ZTU4MjYzNjkuLmYyYjU4NjhlZWUz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5o
CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9u
IHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggZWQ3NTY2NTI2YjJkLi41MTk3OGY0MTIzODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZEZhbGxiYWNrRm9yTWFpbkVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wp
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29u
c3QgdWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29sKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4
IGQyYWVhZWMzZTE0Yy4uYjk2MzU2ZTc4NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJj
ZUZvclJlZGlyZWN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAg
ICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VE
YXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBib29sIGFsbEF0T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKICAgICB2b2lkIGZhaWxlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAppbmRleCAyNTZlODliMjExYjMuLjJiYjNmZTc1Yjk5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKQEAgLTUxLDEwICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpCiB7Ci0gICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7Ci0gICAg
ZWxzZQotICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8g
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFk
ZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDU0ZmVlZDJjYTY0MS4uN2IyZmI2YzljMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmNwcApAQCAtOTksOSArOTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAgICAg
bV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNy
ZWF0ZShtX3Jlc291cmNlLT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAKLXZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBl
bmQoYnVmZmVyKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGRhdGEs
IGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRp
cmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IDBiMjk2Mjg4ZjMxYS4uMDJkN2FkOTdhMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBkMzRjOGZiNjUzMjYuLjUwNDY1Y2M2YzAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsNyAr
NDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBk
YXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZm
ZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6
ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01NTUsMTggKzU1NSwxOCBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKTsK
LSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGJ1ZmZlcik7CisgICAgdXBkYXRlQnVm
ZmVySW50ZXJuYWwoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRh
KTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVy
SW50ZXJuYWwoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSk7Cisg
ICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3Ro
KSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAog
dm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGE1ZGM2M2YyM2RiZC4uZTg0MzA4
NzBiNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
MTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVy
dGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMg
dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
cnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBj
b25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJ
bWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCmluZGV4IGQzMzYxMTMyMTNmYi4uNzFlMTYwODJmZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4
LDEyICs0OCwxMiBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5P
ck1lZGlhT3JJY29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewog
ICAgIHNpemVfdCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwotICAgIGlmIChk
YXRhLnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKCFkYXRhIHx8IGRhdGEt
PnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgcmV0dXJuIGRhdGEuZ2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAg
ICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAogdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgICAgICBw
cmV2aW91c0RhdGFTaXplICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAKICAgICAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSwgdHJ1
ZSk7Ci0gICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKICAg
ICB9CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogCkBAIC04OSwxMSArODks
MTEgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgfQogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpOwotICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
YnVmZmVyKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShidWZmZXIpOworICAgIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAo
ZGF0YSAhPSBtX2RhdGEuZ2V0KCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRh
KSkgewogICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAg
ICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEt
PmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKQEAgLTEzMCwxNSArMTMwLDE1IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2Fz
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKLSAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKKyAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGls
ZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOworICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMs
IGRhdGEsIGxlbmd0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGl0ZXJhdGVSZWRpcmVjdHMoQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+JiYgaGFuZGxlLCBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCYgY2xpZW50LCBWZWN0b3I8c3RkOjpwYWlyPFJlc291cmNlUmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZT4+JiYgcmVkaXJlY3RzSW5SZXZlcnNlT3JkZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTcw
LDkgKzE3MCw5IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYgYykKICAgICAgICAgICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAg
ICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKKyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShh
dXRvJiBzZWdtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNDbGllbnQoKmNsaWVu
dCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
YnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4
IDM2ZTQ3YTFkYmEyMy4uYTc4NjVmOGFkMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtMjgsNyArMjgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VU
aW1pbmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2Ug
ewpAQCAtNTMsNyArNTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9y
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY3LDggKzY2LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVy
cmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgcHJldmlld1Jlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaAppbmRleCBjZDY1MGEyZjMxMzYu
LjIzZWFiOGRmMjk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTQ3LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIC8qIGRhdGEgKi8s
IGludCAvKiBsZW5ndGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGJiYzFiMzA1OTUyNy4uYTY5
YzIyYzZmZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiB7
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpEb05vdEJ1ZmZlckRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCA1MzRlMDEyY2M0ZmEuLmM5ODJkZDY5MzdhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMyw3ICsxMTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVy
biBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3Io
Q2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggY2EwMTkzNGQzMWJhLi45NmQ4OTgyZTkzNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CkBAIC00Nyw3ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwog
CiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAg
ICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBh
MjRiOGM1OWQ0NjAuLjQ4NzU2YTMzYjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVm
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdE
YXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzEsNyArNzEsNyBA
QCBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIExPRyhOZXR3b3JrLCAiTGVnYWN5UHJldmlld0xvYWRlciBhcHBl
bmRpbmcgYnVmZmVyIHdpdGggc2l6ZSAlbGQuIiwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9vcmln
aW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9jb252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNv
dXJjZSgpOwotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTE2Miw3ICsxNjIsOCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29ucwogICAgIGlmICghbV9oYXNQ
cm9jZXNzZWRSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VMb2FkZXIt
PmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YS5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOwor
ICAgIGF1dG8gZGF0YUNvcHkgPSBkYXRhLmNvcHkoKTsKKyAgICByZXNvdXJjZUxvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGFDb3B5KSwgZGF0YUNvcHktPnNpemUoKSwgRGF0YVBh
eWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpCkBAIC0yNDIsNiArMjQz
LDExIEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQ
cmV2aWV3TG9hZGVyIGNyZWF0ZWQgd2l0aCBwcmV2aWV3IGZpbGUgbmFtZSBcIiVzXCIuIiwgbV9j
b252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCitib29sIExl
Z2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKK30KKwogYm9vbCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7CiAg
ICAgcmV0dXJuICFtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDNjNDk1NzFlNDE5ZC4uNjAyNjMxYmI3Y2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yMTEsMTMgKzIx
MCwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLXZvaWQgRXZlbnRT
b3VyY2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBF
dmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBPUEVOKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0
SW5GbGlnaHQpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IW1faXNTdXNwZW5kZWRGb3JCYWNrRm9yd2FyZENhY2hlKTsKIAotICAgIGFwcGVuZChtX3JlY2Vp
dmVCdWZmZXIsIG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
KTsKKyAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBs
ZW5ndGgpKTsKICAgICBwYXJzZUV2ZW50U3RyZWFtKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAppbmRleCA3M2ZlZTc5MjczNDIuLmQwMTJkMzc3ZDE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFk
YWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDQ2MmNmM2I4NzQyMy4uZDkwODVi
Y2IwM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1D
b250ZW50RmlsdGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKICAgICB2aXJ0
dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9
IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDA5ZjEwNTJhMGYzLi44NGJjMjg0NWE2NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAKICAg
ICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVTZWdtZW50KCkg
JiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSAmJiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmhhc09u
ZVJlZigpKQotICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZl
Y3Rvcjx1aW50OF90Pj4oY29uc3RfY2FzdDxEYXRhU2VnbWVudCY+KG1fc2VnbWVudHNbMF0uc2Vn
bWVudC5nZXQoKSkubV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAg
ICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4o
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRh
KG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTI1MCwxMyArMjUwLDYgQEAgdm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNwYW48Y29uc3QKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgp
LCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotdm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKLXsKLSAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVu
dHMpCi0gICAgICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2VnbWVudC5j
b3B5UmVmKCkpKTsKLX0KLQogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJl
Zml4LmVtcHR5KCkpCkBAIC00MjIsNyArNDE1LDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoKQogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0g
c2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdt
ZW50KSB9KTsKQEAgLTYxMCw3ICs2MDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVu
c3VyZUJ1ZmZlcigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02MjYsNyArNjE5
LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRh
dGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXplKCld
KCkgeyByZXR1cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCBjYWVmM2YyNjIwMDMuLjNlNjRlYjQxZjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTE3OSwxMyArMTc5LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1c2luZyBE
YXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3Qg
YmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBzZWdt
ZW50OworICAgICAgICBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1c2lu
ZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsK
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI2MiwxMCArMjYxLDcgQEAgcHVibGljOgog
ICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3Rl
eHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92
PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
KTsKLSAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAg
ICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFTZWdtZW50PiAmJi4uLikpCisgICAgICAgICAgICAm
JiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQogICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CkBAIC0yOTIsMTAgKzI4OCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKLSAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0YVNlZ21l
bnQmIHNlZ21lbnQpCi0gICAgICAgIDogU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVu
dD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKQEAg
LTM2Nyw3ICszNjEsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBE
YXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0
aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQp
OwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAgLTM3
OCw3ICszNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVm
PGNvbnN0IERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50
PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50Owog
ICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5k
ZXggMTI1MzE5YmNiMzhlLi5jYmU4NzcxYTQ1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCBmODc3OTdjY2Q1MGIuLjc4MzMwZWFmYzZj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE0NSw5ICsxNDUsOSBAQCB2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLXZvaWQgTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQordm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGF1dG8gbnNEYXRhID0gZGF0YS5jcmVh
dGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBuc0RhdGEgeyBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aF0gfTsKIAogICAgIEJpbmFyeVNlbWFw
aG9yZSBzZW1hcGhvcmU7CiAgICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOm5zRGF0
YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5FRmlsdGVyU291cmNl
U3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCmluZGV4IGQ1ZmExMzMwYjE2Mi4uZTY2ZjEzNGZkYjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlk
ZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmlu
ZGV4IGE2NTExNWNlYjEyMi4uMWM5NjA0NzE2YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5tbQpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzCiAgICAgdXBk
YXRlRmlsdGVyU3RhdGUoKTsKIH0KIAotdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFBhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
CiB7CiAgICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7Ci0gICAgbV9yZXBs
YWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpkYXRhLmNyZWF0ZU5T
RGF0YSgpLmdldCgpXTsKKyAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1
YXRvciBhZGREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5n
dGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT11dOwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiAg
ICAgQVNTRVJUKG5lZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IGM5NThmODQ0ZGFjMS4uODg2OTFk
YzI1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsNyArNTEsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAg
dmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNl
aXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9X
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NzA4YTU4ZDJiNTguLmVjMGE3YWNm
NDczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZm
ZXImKQordm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQogewogICAgIGZ1bGZpbGxS
ZXF1ZXN0V2l0aFJlc291cmNlKHJlc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCmluZGV4IDYyNjdiZTAwYzU0ZS4uY2RmMTQz
ZjNjM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291
cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggNzI2NDcyNWM4ZTU2Li5mOTIxZjNkYTBlNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcg
KzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRo
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENh
Y2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAo
YXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFp
bGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsg
fQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsy
MTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkK
ICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOworICAgIG1f
YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGI3YjA3ZmYxNDU0ZC4uOTMwMTkwOTk0
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
NzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xp
ZW50IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KG1fc3JjLmdldCgpKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBTCiAgICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhl
IHRpbWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFj
ay4gU2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCiAgICAgLy8gc2VuZGluZyB0aW1lIGZy
b20gdGhlIHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgogICAgIGlm
ICghc3RkOjppc25hbihtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkpIHsKLSAgICAgICAgbWVt
YmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CisgICAgICAgIG1lbWJl
cnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICBkb3Vi
bGUgdGltZVNpbmNlU3RhcnQgPSAoV2FsbFRpbWU6Om5vdygpIC0gbWVtYmVycy0+ZG93bmxvYWRT
dGFydFRpbWUpLnNlY29uZHMoKTsKICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJSJXU6
IGRvd25sb2FkZWQgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGJ5dGVzIGluICVmIHNlY29uZHMgPX4g
JTEuMGYgYnl0ZXMvc2Vjb25kIiwgbV9yZXF1ZXN0TnVtYmVyLCBtZW1iZXJzLT50b3RhbERvd25s
b2FkZWRCeXRlcywgdGltZVNpbmNlU3RhcnQKICAgICAgICAgICAgICwgdGltZVNpbmNlU3RhcnQg
PyBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyAvIHRpbWVTaW5jZVN0YXJ0IDogMCk7CkBA
IC0xMTE1LDE5ICsxMTE1LDIwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTCiAgICAgICAgIG1l
bWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIH0KIAotICAg
IGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKLSAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6
IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKKyAgICBi
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgIGludCBs
ZW5ndGggPSBzZWdtZW50LnNpemUoKTsKKyAgICAgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1
OiBIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CiAKLSAg
ICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgIEFTU0VSVCghbWVtYmVycy0+
aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOworICAg
ICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOworICAgICAgICBBU1NFUlQoIW1l
bWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXpl
KTsKIAotICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyks
IGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICBn
c3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0
aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQ
RV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7Ci0KLSAgICBjaGVja1VwZGF0ZUJs
b2Nrc2l6ZShsZW5ndGgpOwotICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3Jh
cHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAgICBn
c3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAg
IGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNz
YWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAgICAgICAgZ3N0X3N0
cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIs
IEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlO
VDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOwogCisgICAgICAgIGNoZWNrVXBkYXRlQmxv
Y2tzaXplKGxlbmd0aCk7CisgICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3
V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsK
KyAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgpLCBidWZmZXIp
OworICAgIH0pOwogICAgIHN0b3BMb2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMpOwogICAgIG1l
bWJlcnMtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApp
bmRleCBkY2FjNTk5N2E2MTMuLmJhOGZkNGZmNGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2
LDExICszNiw5IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgp
ID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVu
dCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAg
YnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsK
LSAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKLSAgICB9KTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgKaW5kZXggZTQ0MmM5NzM0YzExLi5jNGYwNTQ4NWYyODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmgKQEAgLTQ0LDE0ICs0NCwxMyBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VI
YW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdl
QWxsb3dlZCwKQEAgLTY2LDkgKzY1LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAzMGI0YmIwZmRhZWYuLjRjMDQyMTBjNWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKQEAg
LTcxLDkgKzcxLDkgQEAgdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVIKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCi12b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgLyplbmNv
ZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCiB7Ci0gICAgbV9kYXRhLmFwcGVuZChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7CiB9CiAKIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2Fk
ZXJDbGllbnQuaAppbmRleCBjNGNiNzJkYzdhNjUuLjY4MzhlOWQ4Y2Y0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaApAQCAtMzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKLQogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVl
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN5bmNocm9ub3VzTG9hZGVyTWVzc2Fn
ZVF1ZXVlKTsgfQpAQCAtNjgsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5k
ZXggMTk4MTRhMzY1YzlmLi5mYzI3MjU0MDg5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6Omdp
dmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAg
ICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZm
ZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBi
eXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFz
ayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZm
ZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpXTsKKyAgICAgICAgICAgIFt0YXNrIHJlc291cmNlOm51bGxwdHIgcmVj
ZWl2ZWREYXRhOlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGJ1ZmZlclZpZXcsIGJ5dGVzRnJvbVRoaXNW
aWV3VG9EZWxpdmVyKS5jcmVhdGVTaGFyZWRCdWZmZXIoKV07CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNl
RmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4
LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2Vu
ZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEg
PSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKGJ1ZmZl
cik7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRh
dGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBlYTRhOWJmMjk3ODIuLmY5
MDk2ZWUyZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTE1OCw3ICsxNTgsNyBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7
CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3Rh
bEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAt
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwog
LSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNE
YXRhPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDoo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhh
bmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxs
YWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRX
aXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCmluZGV4IDNjOGJlMDhjMjkzNC4uNWUyZThlOGQ5ZDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAg
LTY1MiwxMyArNjUyLDEzIEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFtt
X3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwog
fQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAg
ICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJjZTom
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKV07CisgICAgW21fdGFz
ayByZXNvdXJjZTomcmVzb3VyY2UgcmVjZWl2ZWREYXRhOldURk1vdmUoYnVmZmVyKV07CiB9CiAK
IHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkzMSwxNCAr
OTMxLDE1IEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9
CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZXRhaW5QdHI8TlNEYXRhPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vz
c2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYg
fSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3Vu
dE9mQnl0ZXNSZWNlaXZlZCArPSBbZGF0YSBsZW5ndGhdOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBzdHJvbmdT
ZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAg
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNz
aW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAg
ICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKLSAgICAgICAgICAgIFtkYXRhRGVsZWdh
dGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uIGRh
dGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkUmVjZWl2
ZURhdGE6ZGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5n
ZXQoKV07CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQyY2M3NDI4NmUu
LmYzMjNhZjI2NDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJv
b2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDEx
IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUm
IGpvYiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkCiAgICAgICAgIGlmIChpdC0+dmFsdWUtPmdldEpv
YigpICE9ICZqb2IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFpdC0+dmFs
dWUtPnNhdmVDYWNoZWREYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpCisgICAgICAgIGlm
ICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLCBzaXplKSkKICAgICAgICAgICAgIGlu
dmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7CiAKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBt
X2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3VycmVu
dFN0b3JhZ2VTaXplICs9IHNpemU7CiAgICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5k
T3JNb3ZlVG9GaXJzdCh1cmwpOwogICAgICAgICAgICAgbWFrZVJvb21Gb3JOZXdFbnRyeSgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuaAppbmRleCBiNjViOTYzYjY4ZTYuLmM5ZTI5ZDgwOTcwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldENh
Y2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYsIFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0YQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsgLy8gU2F2ZSBkYXRhCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlJik7CiAgICAgdm9pZCBkaWRGYWlsKFJl
c291cmNlSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi4zNDk0NDU5MjU0
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYm
IHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1
ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTExLDcg
KzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVl
c3QmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fbGlzdGVuZXIpCi0gICAgICAgIG1fbGlzdGVuZXItPmRpZFJlY2VpdmVEYXRhT2ZMZW5n
dGgoYnVmZmVyLnNpemUoKSk7CisgICAgICAgIG1fbGlzdGVuZXItPmRpZFJlY2VpdmVEYXRhT2ZM
ZW5ndGgoYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZENv
bXBsZXRlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBOZXR3b3JrTG9hZE1ldHJpY3MmJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApp
bmRleCBhMTIwNzU4MzQ5M2YuLmNkZTQ0NDU3NzVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgsNyArMzgsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3dubG9hZExpc3Rl
bmVyIHsKIHB1YmxpYzoKQEAgLTczLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJl
cXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3Vy
bERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBs
b25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShD
dXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNh
dGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZDFlNTg2
MjRhYWVlLi4wOTBkMDM5YmE0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwx
MiArMTE5LDEyIEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQp
CiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3Jl
IGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlLi45YTFhMWJiZDE5Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlw
YXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGRmNzYzN2RlOWQ5Zi4uYzgxMzg4NmE4ZDVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKaW5kZXggZDBlZjBlNzExNjJiLi5iYWNiMmI1NTBiMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApA
QCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihT
dHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMg
aGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3NpemVfdCBD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtNDExLDcgKzQxMSw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBDVVJMX1dS
SVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5z
aXplKCk7CisgICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKICAgICBtX3Rv
dGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDggQEAgc2l6ZV90IEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAg
ICAgaWYgKG1fbXVsdGlwYXJ0SGFuZGxlKQogICAgICAgICAgICAgbV9tdWx0aXBhcnRIYW5kbGUt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2Fs
bENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBD
dXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7Ci0gICAgICAgICAgICAgICAgY2xpZW50LmN1cmxE
aWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOworICAgICAgICAgICAgY2FsbENsaWVudChb
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpXShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVl
c3RDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxE
aWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NCwxNiArNDQ0LDE2IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
ZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpO
b25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CisgICAgYXV0byByZWNlaXZl
Qnl0ZXMgPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChyZWNlaXZlQnl0ZXMpIHsKLSAgICAg
ICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1
ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7Ci0gICAgICAgICAgICBjbGllbnQuY3Vy
bERpZFJlY2VpdmVEYXRhKHJlcXVlc3QsIGJ1ZmZlcik7CisgICAgICAgIGNhbGxDbGllbnQoW2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0
Q2xpZW50JiBjbGllbnQpIG11dGFibGUgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNl
aXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmgKaW5kZXggOTJiNzQ2OTdiYzMxLi5hNmZiMzE1NzY2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSAr
MTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAg
ICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVf
dCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVs
dGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCA3MzAzM2YwZWY0ZWIu
LjM0Nzk4MzJmNTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
Q3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVibGlj
OgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFNl
bmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0
cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uMzA1
ZDRlNWM5ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0
MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVx
dWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5k
bGUsIGJ1ZmZlcik7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBi
dWZmZXIsIGJ1ZmZlci5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5o
CmluZGV4IDAyNGJjNGU5YWUzMS4uZGFmMGE1OWE0ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAg
dm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYp
IGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5h
bDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCAzNjY1OGY5MWRj
OWQuLmMwNzA0ZjBjZGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcApAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKKyAqIAogICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiQ3VybFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiQ3VybFN0cmVhbVNjaGVk
dWxlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUVycm9yLmgiCiAKICNpZiBVU0UoQ1VSTCkKQEAgLTEzMCwxMCArMTI5LDEwIEBAIHZvaWQgQ3Vy
bFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIW1fY3VybEhhbmRsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlY2VpdmVCdWZmZXIoa1JlY2VpdmVCdWZm
ZXJTaXplKTsKKyAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhf
dD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKICAgICBzaXplX3QgYnl0ZXNSZWNlaXZlZCA9IDA7CiAK
LSAgICBhdXRvIGVycm9yQ29kZSA9IG1fY3VybEhhbmRsZS0+cmVjZWl2ZShyZWNlaXZlQnVmZmVy
LmRhdGEoKSwga1JlY2VpdmVCdWZmZXJTaXplLCBieXRlc1JlY2VpdmVkKTsKKyAgICBhdXRvIGVy
cm9yQ29kZSA9IG1fY3VybEhhbmRsZS0+cmVjZWl2ZShyZWNlaXZlQnVmZmVyLmdldCgpLCBrUmVj
ZWl2ZUJ1ZmZlclNpemUsIGJ5dGVzUmVjZWl2ZWQpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VS
TEVfT0spIHsKICAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9BR0FJTikKICAgICAgICAg
ICAgIG5vdGlmeUZhaWx1cmUoZXJyb3JDb2RlKTsKQEAgLTE0NCw5ICsxNDMsOCBAQCB2b2lkIEN1
cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAgICAgaWYgKCFieXRlc1JlY2VpdmVkKQogICAgICAg
ICBkZXN0cm95SGFuZGxlKCk7CiAKLSAgICByZWNlaXZlQnVmZmVyLnJlc2l6ZShieXRlc1JlY2Vp
dmVkKTsKLSAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQs
IFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgewotICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CisgICAgbV9zY2hlZHVsZXIuY2FsbENs
aWVudE9uTWFpblRocmVhZChtX3N0cmVhbUlELCBbc3RyZWFtSUQgPSBtX3N0cmVhbUlELCBidWZm
ZXIgPSBXVEZNb3ZlKHJlY2VpdmVCdWZmZXIpLCBsZW5ndGggPSBieXRlc1JlY2VpdmVkXShDbGll
bnQmIGNsaWVudCkgbXV0YWJsZSB7CisgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJl
YW1JRCwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAppbmRleCBlOGEzMmMy
NjQ2MWIuLjRmNTliMjBlOGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgorICogCiAgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTMzLDcgKzMzLDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFN0cmVhbVNjaGVkdWxlcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOwogCiB1c2luZyBDdXJs
U3RyZWFtSUQgPSB1aW50MTZfdDsKQEAgLTQ3LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCkgPSAwOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBT
aGFyZWRCdWZmZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShD
dXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSkgPSAwOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDk1MGNkMWIxYWM2OC4uNjMwYTkzMzMwODViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDEwICs1OSw5IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKLSAgICAvLyBDdXJs
U3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBm
aW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFt
SUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKaW5kZXggYThmNTdhNzJkMGVhLi40Yjk0OTFjMTE1NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMzcsNyArMzcsNiBAQAogCiAjaW5jbHVkZSAi
Q3VybFN0cmVhbVNjaGVkdWxlci5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVy
cm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgpAQCAtMTA1LDEyICsxMDQsMTIgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCBsZW5n
dGgpCiAgICAgc2VuZFBlbmRpbmdEYXRhKCk7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJl
YW1JRCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAobV9z
dGF0ZSAhPSBPcGVuKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YSgqdGhpcywgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBt
X2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgZGF0YSwgbGVuZ3RoKTsK
IH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRGYWlsKEN1cmxTdHJlYW1JRCwg
Q1VSTGNvZGUgZXJyb3JDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBm
ZTY1YTI5ZTYzNi4uMWY0YTE5MzEzMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0KaW5kZXggYWU3MTU1ZWNlZjM1Li4zMTVlMDY1MTUzMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkg
ZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKICAg
ICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0
cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVEYXRh
KG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAg
ICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAgfTsKIAogICAgIFtzZWxmIGNhbGxG
dW5jdGlvbk9uTWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDc0MDgwY2UzMGU0MC4uODM4N2Y0YjMzNTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTUzNyw4ICs1MzcsOCBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8v
IERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgp
LgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlN
RVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVu
dAotICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKLSAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGJ1ZmZlcik7CisgICAgICAgIGRhdGEoKS0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT53cml0ZXIoKS5hZGREYXRhKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7
CiAgICAgICAgIH0pOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3Jp
dGVyKCkuZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5jcHAKaW5kZXggMWRlMjUzYzkyYjFiLi4wNTlmM2EzODZiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlclJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90Kiwg
aW50KQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5k
ZXggYjgzOTdiMzBkOGQ4Li42MzVhYzg0YmU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwog
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNDNjM2EzYjQ2NmVm
Li44MmEyYThjNGIxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKQEAgLTExNSwxMiArMTE1LDEyIEBAIHZvaWQgV29ya2VyRm9udExv
YWRSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBSCiAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiB9CiAKLXZvaWQgV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CisgICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggZDhjMTg5OTcy
ZjE4Li4yNzJiMTJiNWM5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNX
b3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIGludCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCmluZGV4IDkwMDJiNTgzOGIyZS4uMzIzNWRjZWI2MWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAg
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNw
b25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
KQogewogICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDEwICsyMTIs
MTAgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQorICAgIGlmICghbGVuKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSkpOworICAgIAorICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCAxNTk5MjZhOTU5ZjkuLjgyMzQ1
ODEzYjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGNlMzcwOTY4OWQ5Zi4uZmJhMzYzMjJi
MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCA4NDcxMDMxMDMyMTEuLmZmOGRjYTVhMzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCBSZWY8VGV4dFJlc291cmNlRGVjb2Rl
cj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZURlY29kZXIoKSBjb25zdAogICAgIHJldHVybiBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKIH0KIAotdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQogewogICAgIGlmIChtX2Vycm9yKQogICAgICAgICByZXR1cm47CkBAIC0x
MDUyLDE4ICsxMDUyLDE4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICh1c2VEZWNvZGVyICYmICFtX2RlY29k
ZXIpCiAgICAgICAgIG1fZGVjb2RlciA9IGNyZWF0ZURlY29kZXIoKTsKIAotICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQorICAgIGlmICghbGVuKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
dXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+
ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9yZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2Ug
ewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKLSAgICAg
ICAgbV9yZWNlaXZlZExlbmd0aCArPSBidWZmZXIuc2l6ZSgpOworICAgICAgICBtX3JlY2VpdmVk
TGVuZ3RoICs9IGxlbjsKIAogICAgICAgICBpZiAocmVhZHlTdGF0ZSgpICE9IExPQURJTkcpCiAg
ICAgICAgICAgICBjaGFuZ2VTdGF0ZShMT0FESU5HKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKaW5kZXggZWQ2ZjM2MDkxYmZjLi45M2M2Mzc4N2YzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlzRG9u
ZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjIwNzlhMzY3NWQ2Li43NjU3MGNmYjFiZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDIyLTAxLTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjg3Njg0KSBz
cGVlZHRlc3QubmV0IHVzZXMgbWFueSBHQiBvZiBtZW1vcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTYxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0
YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFNoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFyc2VUcmFja3MpOgorICAgICAgICAqIFNoYXJlZC9t
YWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmspOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKwog
MjAyMi0wMS0yNCAgQWxhbiBDb29uICA8YWxhbmNvb25AYXBwbGUuY29tPgogCiAgICAgICAgIENo
ZXJyeS1waWNrIHIyODgzODkuIHJkYXI6Ly9wcm9ibGVtLzg1NDA1MzIwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggN2Y1MTJjNmMxMWE4Li42MTdmNDc2ODk1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtOTcsMTAgKzk2LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAg
ICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9C
ZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNl
aXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSk7CisgICAg
ICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDk1MTA2ZjY3MjI3My4uNWI3YTdlMmE3
NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKQEAgLTM1LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTgsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lk
IGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgKaW5kZXggMDU0Yjg5M2UxMTExLi43MWZkMDIyMjliYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9Owog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRl
eCBiYThkMDQ4ZjY1ZGMuLjk1ODYwOTFlYTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApA
QCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikK
K3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCAw
Y2IzMTVmZDhmZjUuLjUwNWE0ZWZlNTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw3
ICszNyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNzIsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCmluZGV4IGY0NzllMDkwMmIyMS4uNGI5ZWU1NzRiOTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcg
KzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAppbmRleCA2MGI2OWE5MzZiYjcuLjhjMTA0ZDgxNjBiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMCArMjU0LDExIEBA
IHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVu
Z3RoLgotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICBtX2NsaWVudC5n
ZXQoKS5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CiB9CiAKIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCAwZTRj
MWFlNDkyM2MuLmU2YTc2MTE1OTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAg
ICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCA4YTI4NTgyNjExM2YuLjM0OGNmZmI5ZThl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjAxMDU3NDA0MTc2
Li5mODY2YzI5MGJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg0NSwyOSArODQ1LDI5IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJ
bk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICgh
bV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
PSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZl
ZCArPSBidWZmZXIuc2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgbV9udW1CeXRlc1JlY2Vp
dmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFw
cGVuZChidWZmZXIpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkg
KyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBG
SVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhl
IHJlc291cmNlIGhhbmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXIuc2l6ZSgpOworICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZl
ci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhLmFwcGVuZChidWZmZXIpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBl
bmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDgxN2FlZjI2Yzgz
Ni4uY2YxMGNmMGU3MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkz
LDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5l
ZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1
bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNp
b25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGYw
ZWZkMDRiYjJlMS4uYmMyYzMzN2U0ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lU
CiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2
ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgUElOR19SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCBiMjI1YzQ3Yjk0YWYuLmU3ODA4
ZDhlNjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQs
NyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHAKaW5kZXggYWFhZTJiZmJkZjgzLi4xN2Q0NzkwN2EzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9u
OjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5oCmluZGV4IDhjNmIwZGVlZDY2Yy4uODU4MDhlMTIxYjY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsK
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTMuLjI1ZDRlMzdmOTQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCkBAIC0xNzQsNyArMTczLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYjg5YWIzZWJk
NzYyLi5hYjU5ZWFlNTI2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2suaApAQCAtMzcsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1E
YXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC02Nyw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRvd25s
b2FkVGFzayhOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIERvd25sb2FkSUQpOwog
CiAgICAgLy8gSVBDIE1lc3NhZ2UKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDUwZDJiNDJhNzFiMC4uZTEw
YjA0Y2Q4ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogCiBtZXNzYWdlcyAtPiBTZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrIE5vdFJlZkNvdW50ZWQgewogICAgIERpZEZhaWwoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZl
RGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
ICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAg
IERpZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
aW5kZXggY2QyZDZhMjA3M2ZiLi5hOTRkNTY5YzliZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnByb2Nlc3NSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGJvb2wgbgogICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faXNEb25lKQogICAgICAgICByZXR1cm47CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQogICAgICAgICAgICAg
ZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2FkZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBkaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJj4oKmNodW5rKSksIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6
U2hhcmVkQnVmZmVyQ29weShjaHVuayksIGxlbmd0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IDUyMjVlNTQ1OTk5NS4uYzM0NTgwMjY3
ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDcgKzQ4
LDYgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTQsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGVudW0g
Y2xhc3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9y
bURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNo
KCk7CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2subWVzc2FnZXMuaW4KaW5kZXggN2RiNTNlOWJkMDM4Li42NDQ0MjA3YjhmODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0y
Nyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291
bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAg
RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggOWVj
Mzk0MWM2Y2VmLi5lNGQ5YWNkZGI0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc1LDEwICsxNzUsMTAgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5
Q2FsbGJhY2soUmVmUHRyIHsgJmJ1ZmZlciB9LCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgKaW5kZXggNWY4OGFjMmFhOGRmLi42N2FiYzU1YzYwZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC0z
Niw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTUsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25z
ZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAg
ICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yOyB9CkBAIC03Miw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDM5ODkzNzBhYTM1Ni4uN2EyNjIyMTlkZTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7
IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rl
cikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYs
MTAgKzE4Niw4IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoCiAgICAgICAgICAgICBtX2RlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVU
Ri04Iik7CiAgICAgfQogCi0gICAgYnVmZmVyLmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7Ci0gICAgICAgIGlmIChzZWdtZW50LnNpemUoKSkKLSAgICAgICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkp
KTsKLSAgICB9KTsKKyAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCisgICAgICAg
IG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4
IDdlODE4ZjM0MTNkYS4uNDRmYzA2ODVmYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDgxNGViMzIwZDRlNy4uNDFkODIzNTAyNDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFj
dGlvbjo6VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jv
d3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVC
dWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVm
ZmVyKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVy
LT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCA5YWRjYTYwNWU3MjguLjFiODQzZGI3ZWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMDc3MmFmMWE4NmQyLi40MTY2OGE1YjFj
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM4LDcgKzM4LDYgQEAgT0JKQ19DTEFTUyBOU011
dGFibGVVUkxSZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJs
ZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Myw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhj
b25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
IAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQo
RG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDJjMWU3MWVjOGI0Ni4uMTYzMTQy
NWM0MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0MywxMiArNDQzLDEyIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJv
cihlcnJvciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBXVEZFbWl0U2lnbnBvc3QobV90
YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS5zaXplKCkp
OworICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZl
ZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBXZWJLaXQ6OlJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAppbmRleCAxM2ZjYzdiZDQ4YTUuLjg0NjY5ZTIwOWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVT
aXRlSW5mby5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9U
ZXh0RW5jb2RpbmcuaD4KQEAgLTE3MywxMyArMTcyLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJl
c3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1f
Y2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShidWZmZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCBlNTU4NjRhOTVmN2IuLjQ1YmU1Y2UxODQzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5oCkBAIC0zNiw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEN1cmxSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTY5LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJl
cXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1
ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlk
U2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2ln
bmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Jiwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCAzNzBiODMyOGQ3NmMuLjY5YjNmNWZhZDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRS
ZWFkZXIuY3BwCmluZGV4IDZjMTliYzliYWI2NC4uOWNkZWQ5NjkzNTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0
UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvbgogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9OwotICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1
cyB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOwotICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52
YWxpZCgpIHx8IChtX2luaXQgJiYgZXJyb3JDb2RlKSk7Ci0gICAgQVNTRVJUKG1fdHJhY2tSZWFk
ZXJzLmlzRW1wdHkoKSB8fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VSVCghbV9w
YXJzZVRyYWNrc1N0YXR1cyk7CisgICAgQVNTRVJUKG1fZHVyYXRpb24uaXNJbnZhbGlkKCkpOwor
ICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkpOwogCiAgICAgQUxXQVlTX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDcg
KzIyMSw2IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRy
YWNrc0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKLSAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lk
IE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4m
JiBtZWRpYVNhbXBsZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmgKaW5kZXggNjUwOTNlOWU0NmI0Li4zN2U0YWQ0Mjc2YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCkBAIC04Nyw3ICs4Nyw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJlZjxNZWRpYVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURf
QllfTE9DSyhtX3BhcnNlVHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwotICAgIGJvb2wgbV9pbml0
IHsgZmFsc2UgfTsKIH07CiAKIGNvbnN0ZXhwciBNZWRpYUZvcm1hdFJlYWRlcjo6V3JhcHBlckNs
YXNzIE1lZGlhRm9ybWF0UmVhZGVyOjp3cmFwcGVyQ2xhc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlYTU4NzcyZWExYmIuLjAzNjc1MjMx
MTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTE4NiwxMSArMTg2LDExIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5
CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAg
bV9zeW5jRGF0YS5hcHBlbmQoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3Vy
Y2VMb2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlcikpLCBtX3dlYlBhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VM
b2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlci5nZXQoKSkpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBjMzIzMDY5YjFjYzAuLmY2ZmY0NmVl
YTVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAt
ODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAg
ICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlw
ZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcAppbmRleCA5MjM0YjVjNjUzZjkuLmI1MTNhMjY4MDhlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApAQCAtNzIsMTcgKzcyLDIwIEBAIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhU2VudChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCB1bnNpZ25lCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVNlbnQobV9pZCwgYnl0ZXNTZW50LCB0b3RhbEJ5
dGVzVG9CZVNlbnQpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmRh
dGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpk
YXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcihidWZmZXIpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVk
TWVtb3J5OjphbGxvY2F0ZShsZW5ndGgpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICByZXR1cm47CiAKKyAgICBhdXRvIHNoYXJlZE1lbW9yeVB0ciA9IHN0YXRpY19jYXN0PGNoYXIq
PihzaGFyZWRNZW1vcnktPmRhdGEoKSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeVB0ciwgZGF0
YSwgbGVuZ3RoKTsKKwogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBzaGFy
ZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgIC8vIFRha2Ugb3duZXJzaGlwIG9mIHNoYXJlZCBtZW1vcnkgYW5kIG1h
cmsgaXQgYXMgbWVkaWEtcmVsYXRlZCBtZW1vcnkuCiAgICAgaGFuZGxlLnRha2VPd25lcnNoaXBP
Zk1lbW9yeShNZW1vcnlMZWRnZXI6Ok1lZGlhKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpEYXRhUmVjZWl2ZWQobV9pZCwgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGJ1ZmZlci5zaXplKCkgfSks
IDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdU
Rk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aCkgfSksIDApOwogfQog
CiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKaW5kZXggOTQ5NDY0NTIyYzI2
Li40N2VhODY2NzFiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFs
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVhZGQ4NDczMGYxMS4uZDcxYWU1
ZTBhOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29w
eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0yMDEsMTUgKzIwMCwxNiBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdl
YlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSBvZiBzaXplICVsdSBm
b3IgJyVzJyIsIGRhdGEuc2l6ZSgpLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3
b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwg
d2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50
ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSkpKSB7Ci0gICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSksIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50
NjRfCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0
YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBk
YXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5zYWZl
QnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2Nv
cmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhh
bmQKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZm
ZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4i
KTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogCiAgICAgLy8g
T25seSBzZW5kIGRhdGEgdG8gdGhlIGRpZFJlY2VpdmVEYXRhIGNhbGxiYWNrIGlmIGl0IGV4aXN0
cy4KICAgICBpZiAodW5zaWduZWQgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBi
dWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGJ1ZmZlclNpemUs
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICBpZiAoIW1fY29yZUxvYWRlcikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggYWM1NDIyZmMwNjcxLi5hMjJlNjJmMjhiNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaApAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1E
YXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtODEsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCBkYWEy
NGQyN2M3MWEuLmRiNDI3NWUyZmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAg
LTI0LDcgKzI0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlKQogICAgIERpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQogICAgIERpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVk
QnVmZmVyQ29weSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZFJlY2Vp
dmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mg
bmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikKICAgICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAppbmRleCAyYjdlNGQyYzIwZmQuLjhkMmM1ZjNlMjVjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApA
QCAtNjUsNyArNjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBWE9iamVjdENhY2hl
OwogY2xhc3MgRWxlbWVudDsKIHN0cnVjdCBQbHVnaW5JbmZvOwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTE3NywxMSArMTc2LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZXNwb25z
ZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBmaW5hbCB7IH0KICAgICB2b2lkIHN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExv
YWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1
aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwogICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIGZpbmFsOwog
ICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JikgZmluYWw7CkBA
IC0zNjMsNyArMzYyLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7Cisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGYWls
KFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYTQ1YzY5MjM4
Nzc0Li4wZmFmMmQ2NTYwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNyArOTQsNiBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5Miw3ICsxMTkxLDcgQEAgdm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5T
dHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKIHsK
ICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAxLDcgKzEyMDAs
NyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgIHJlcXVlc3QtPmFkZERhdGEoZGF0YSwgY291bnQpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOSwxNSArMTcx
OCwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9
IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlE
ID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBt
X2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
LSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKKyAgICBDRkRhdGFBcHBlbmRC
eXRlcyhtX2RhdGEuZ2V0KCksIGJ5dGVzLCBsZW5ndGgpOworICAgIG1fc3RyZWFtZWRCeXRlcyAr
PSBsZW5ndGg7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2NCwxNCArMTc2MywxNCBAQCB2b2lkIFBERlBsdWdpbjo6
ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENG
RGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExl
bmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsg
YnVmZmVyLnNpemUoKSk7Ci0gICAgbWVtY3B5KENGRGF0YUdldE11dGFibGVCeXRlUHRyKG1fZGF0
YS5nZXQoKSkgKyBtX3N0cmVhbWVkQnl0ZXMsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwotICAgIG1fc3RyZWFtZWRCeXRlcyArPSBidWZmZXIuc2l6ZSgpOworICAgIGVuc3VyZURhdGFC
dWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKKyAgICBtZW1jcHkoQ0ZEYXRh
R2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMs
IGxlbmd0aCk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKIAogI2lmIEhBVkUoSU5D
UkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBj
b21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggZTRkNjJmNGJlYTliLi4xZDg0
NDgwNWY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBA
IC01NCwxMyArNTQsMTIgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7Ci1jbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFz
cyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTYxLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0
cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpID0gMDsKIAogICAgIC8vIFRlbGxz
IHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpID0gMDsK
QEAgLTE3NCw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgdGhlIG1h
bnVhbCBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBh
IHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkRmluaXNoTG9hZGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDM0NGY0YmUyM2E0Li41MzRkYTUyZDQ3ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBOZXRzY2FwZVBsdWdpblN0cmVh
bUxvYWRlckNsaWVudAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqKSBvdmVycmlkZTsKIApAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIqLCBjb25zdCBSCiAgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAg
ICBtX3BsdWdpblZpZXctPm1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlRGF0YShtX3N0cmVhbUlE
LCBidWZmZXIpOworICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVE
YXRhKG1fc3RyZWFtSUQsIGJ5dGVzLCBsZW5ndGgpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OlN0
cmVhbTo6ZGlkRmFpbChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKSAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVS
TCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwg
aGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2lu
Vmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogYnl0ZXMsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwg
aGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1fcGx1Z2luKQpAQCAt
MzgyLDExICszODIsMTEgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1T
dGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5h
cHBlbmQoYnVmZmVyKTsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGx1Z2luLT5tYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShieXRlcywgbGVuZ3RoKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkRmluaXNoTG9hZGluZygpCkBAIC0xMTcxLDkgKzExNzEsOSBAQCB2b2lkIFBsdWdp
blZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRh
LgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhLnRha2UoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZl
cikgewotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7Ci0gICAg
ICAgIH0pOworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCk7
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAg
ICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwg
ZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyNTYxNWNiMzBmMjIuLmY2NjMx
MmE4MGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVk
KCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVk
KCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBtYW51YWxMb2FkRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZvaWQg
bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA3ZWJmOTgwYTg5NGQuLjYzNDUxNWQ5NTM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBA
IC04MCwxNCArODAsMTQgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAobV93YWl0
aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CiAgICAgICAgIGlmICgh
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0
YSkpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsK
LSAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFw
cGVuZChidWZmZXIpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jl
c3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9y
bURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsxMzYs
MTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9y
bURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewog
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rv
d25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1
ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgZGF0YSAsIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6
ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCkKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNo
KCk7CiAgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgewot
ICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmlu
ZGV4IDA5NDAwZGYwY2U3Mi4uZTk4N2UxOWFjOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9y
bURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoKCkgZmluYWw7CkBAIC02MCw4ICs2MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b252ZXJ0RmV0Y2hUb0Rvd25sb2FkKCkgZmluYWw7CiAKICAgICB2b2lkIGNsZWFudXAoKTsKLQot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KTsKKyAgICAKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90KTsKICAgICB2b2lkIGRpZEZpbmlzaEJsb2JMb2FkaW5nKCk7CiAKICAgICBzdHJ1
Y3QgQmxvYkxvYWRlciBmaW5hbCA6IFdlYkNvcmU6OkZldGNoTG9hZGVyQ2xpZW50IHsKQEAgLTY5
LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkK
ICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9i
Q2h1bmsoZGF0YSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmso
ZGF0YSwgc2l6ZSk7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGNsaWVudC0+ZGlkRmFpbChlcnJvcik7IH0KICAgICAg
ICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBjbGllbnQtPmRpZEZpbmlzaEJsb2JMb2FkaW5n
KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGI2YjM0ODU3ZTc4
Li5hNzQwNDU4MDBjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1
MSwxMCArMTE1MSwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
bV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGlmICghbV9wbHVnaW5W
aWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSk7CisgICAgICAgIGxvYWRlci0+
Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEg
c3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5j
ZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNo
YXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0x
MTc2LDcgKzExNzYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyA9IHRydWU7CiAgICAg
fQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEpOworICAg
IG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxZDMwYmMzOTM4
M2EuLmJiNTI5ZDNhZWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50
KCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAg
ICAKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDcyZTM1NTRjOGUwYS4uYTIwNWUwMDFj
YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNs
aWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggNjQ5YmM4MzE5
YzI3Li4wZGMxNjdlNWI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92
ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA2MTg4ZWM2ZDQ4NmYuLmI1ZmRjZDhlMzg5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTcwMTQsMTIgKzcwMTQsMTIg
QEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmQKICAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXJs
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSkKK3ZvaWQgV2ViUGFn
ZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlm
aWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBh
dXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0
KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBBU1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVy
LT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2FmZUJ1ZmZlcigpKTsK
KyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6
ZSgpLCBkYXRhLmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENv
bXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDA2N2YxYmIzZTNkMi4uZjdjMGU0ZGI4MjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xODQsNyArMTg0LDYgQEAgbmFtZXNw
YWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1E
YXRhUmVmZXJlbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMTg5Myw3ICsxODkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVt
ZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2
b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElz
VGFraW5nU25hcHNob3RzRm9yQXBwbGljYXRpb25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eS5jcHAKaW5kZXggNjE2ZWRhMDhmMGI4Li42ZDhkMGNmMjc4NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXpl
X3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKIHsKICAgICBhdXRvKiB0YXNrID0gbV90YXNr
cy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURh
dGEoc2l6ZSwgZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5k
ZXggYWIyMGJkNTczYWE0Li41OGJlY2MxN2I1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBA
IC0zNSw3ICszNSw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjAsNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNjaGVtZVRhc2tQ
cm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCA5ZTcyZDg0Yzk3ZGYuLjM2MDZiYmRj
NjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC0xNDAsMjEgKzE0MCwyMSBAQCB2b2lkIFdl
YlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIH0pOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94
eTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25z
dCB1aW50OF90KiBkYXRhKQogewogICAgIGlmICghaGFzTG9hZGVyKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBX
RUJVUkxTQ0hFTUVUQVNLUFJPWFlfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZl
ZCBkYXRhIGR1cmluZyByZXNwb25zZSBwcm9jZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwotICAgICAg
ICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBkYXRhID0g
UmVmIHsgZGF0YSB9XSB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShkYXRhKTsKKyAgICAg
ICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZl
Y3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgpKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07
Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLCAwLCBEYXRhUGF5bG9hZFR5
cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKICAgICBw
cm9jZXNzTmV4dFBlbmRpbmdUYXNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgKaW5kZXggZWQ5MWYz
OGUzYWRkLi43NTUwODc5NDE4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw3ICszNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShz
aXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggOWZmMGFlZThiYWViLi41YzYyMWNmM2MzMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMjUgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIyODc2
ODQpIHNwZWVkdGVzdC5uZXQgdXNlcyBtYW55IEdCIG9mIG1lbW9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFu
ZGxlLmg6CisKIDIwMjItMDEtMjQgIEFsYW4gQ29vbiAgPGFsYW5jb29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDaGVycnktcGljayByMjg4Mzg5LiByZGFyOi8vcHJvYmxlbS84NTQwNTMyMApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAz
Mjg5YzIzNjI5YTAuLmEyNTU2MGExMGMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzQsNyArNzMsNyBAQCBw
cml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENv
bXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgaW50
KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2
b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
KSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzM1ZTQ4NDQ5YTUwLi5jYjdkY2U2ZDk3ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0yNSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JF
U1NJT04ocjI4NzY4NCkgc3BlZWR0ZXN0Lm5ldCB1c2VzIG1hbnkgR0Igb2YgbWVtb3J5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29t
bWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmll
d0xvYWRlckNsaWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgX2NvbW1pdERhdGE6XSk6CisKIDIwMjItMDEtMTEgIFJ1c3NlbGwgRXBzdGVp
biAgPHJlcHN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGVycnktcGljayByMjg3ODg0LiBy
ZGFyOi8vcHJvYmxlbS84NzIwNjY5MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOGRm
OTkzZjJkNzc1Li45NTlkNzQ4YjU2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
NDgsMTIgKzQ4LDEwIEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ2FjaGVkRnJhbWU7Ci1jbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJGcmFtZUxvYWRlckNsaWVudD4gewpAQCAtMTUzLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRp
ZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlz
dG9yeSgpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3Mo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggODdhNWQ2NTdmN2I3Li40
M2U2M2Y0NTYzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsOSArOTky
LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRM
b2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKLSAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJl
ZVdoZW5Eb25lOk5PXSk7CisgICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5z
RGF0YS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjAxMSw3ICsyMDEyLDcg
QEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
X2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7
CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJy
YXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDJhODc3
MGRmODBiYi4uMGUwNWIxOGQ2OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVu
aXF1ZVdlYkRhdGFVUkwoKTsKICAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhf
cHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVz
XSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpp
bmRleCBmMDI3MTY2NTgxNmQuLmQzMTVkOTUzYWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjg3Njg0KSBzcGVl
ZHRlc3QubmV0IHVzZXMgbWFueSBHQiBvZiBtZW1vcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTYxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MjItMDEtMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBzdXBwb3J0IGZvciBEaXJlY3QyRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDEyNzBlNTdkZDk1Yi4uZmIyNTgzZmU5NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKKyAgICBs
b2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVu
dCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUg
dG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3Vs
ZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNzkyNmZkMzY3MTgwLi4wOTViMjUzNWE2
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlOwogCiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450003</attachid>
            <date>2022-01-26 01:02:48 -0800</date>
            <delta_ts>2022-01-26 22:03:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235615-20220126200247.patch</filename>
            <type>text/plain</type>
            <size>2302</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1ZDExZTk3NzNjNzRm
NDQ3ZjAxMWFkZDBmMDA0NzBkNzc3MWExNS4uOGRkZjA3MWE3NTU2ZWEyYzIwMDBmN2NkZjQxNDA5
YjA2MWZmYjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAxLTI2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjg3
Njg0KSBzcGVlZHRlc3QubmV0IHVzZXMgbWFueSBHQiBvZiBtZW1vcnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTYxNQorICAgICAgICByZGFyOi8v
ODc4MzA1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgcmVncmVzc2lvbiB3YXMgaW50cm9kdWNlZCB3aXRoIHIyODY5MzcgYW5kIGlzIGEgZ29v
ZCBleGFtcGxlIG9mCisgICAgICAgIGVycm9ycyBpbnRyb2R1Y2VkIHdoZW4gYXR0ZW1wdGluZyB0
byBvcHRpbWlzZSB0aGluZ3MgdG9vIGVhcmx5LgorICAgICAgICBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyIGRvZXMgYSBzZWFyY2ggaW4gdGhlIGFjY3VtdWxhdGluZworICAgICAgICBy
ZXNvdXJjZSdzIFNoYXJlZEJ1ZmZlciwgc2VhcmNoIHRoYXQgd2FzIHRha2luZyBPKGxvZyhuKSsx
KSBwcmlvciByMjg2OTM3CisgICAgICAgIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBEYXRhVmll
dyBzZWdtZW50cyBpbiB0aGUgU2hhcmVkQnVmZmVyLgorICAgICAgICBUaGlzIHdhcyBzaW1wbGlm
aWVkIGFzIGEgTygxKSBvcGVyYXRpb24gYnkgdXNpbmcgdGhlIGNvbWJpbmVkIGNvbnRpZ3VvdXMK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGluc3RlYWQuCisgICAgICAgIEhvd2V2ZXIsIHRoYXQgY2F1
c2VkIGV2ZXJ5IHNpbmdsZSBpbnRlcm1lZGlhcnkgYWNjdW11bGF0ZWQgYnVmZmVycyB0byBiZQor
ICAgICAgICBrZXB0IHJlZmVyZW5jZWQgYnkgdGhlIFhNTEh0dHBSZXF1ZXN0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbGVhZGluZyB0bworICAgICAgICBtYXNzaXZlIG1lbW9yeSB1c2UuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisKIDIwMjItMDEtMTYgIE15bGVz
IEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVc2Ug
Y2hhcmFjdGVyIG5hbWVzIGluc3RlYWQgb2YgY29kZXBvaW50IHZhbHVlcyBpbiBvdmVycmlkZUNv
bnRyb2xDaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGQzMzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0
ZDNlOGEwYzYuLjkxYTM5OTI2MmRjNDIzYWZmYzE5NjY3ODQ0NzFjZDMyOTI5NGViZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNjcsOCArNjcsOCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgp
OwotICAgIHdoaWxlIChtX2RhdGEtPnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKLSAgICAg
ICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBtX2RhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0
YVNpemUpOworICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKKyAg
ICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBkYXRhLmdldFNvbWVEYXRhKHByZXZpb3VzRGF0
YVNpemUpOwogICAgICAgICBwcmV2aW91c0RhdGFTaXplICs9IGluY3JlbWVudGFsRGF0YS5zaXpl
KCk7CiAKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbm90aWZ5U2NvcGUobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSwgdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450104</attachid>
            <date>2022-01-26 22:03:08 -0800</date>
            <delta_ts>2022-01-26 23:00:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235615-20220127170307.patch</filename>
            <type>text/plain</type>
            <size>3781</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY2YWVhYjI0OWE3NTUz
YmUzOGRkYzEzZWU3NDRmY2U2ZjRmMzQwMi4uYWRkN2NkYTliOThjODg4MjM2NjdkNGQ4MjUyYWU0
ZDM4NDlhNWM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAxLTI2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjg3
Njg0KSBzcGVlZHRlc3QubmV0IHVzZXMgbWFueSBHQiBvZiBtZW1vcnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTYxNQorICAgICAgICByZGFyOi8v
ODc4MzA1ODMKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
IFRoZSByZWdyZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIHdpdGggcjI4NjkzNyBhbmQgaXMgYSBnb29k
IGV4YW1wbGUgb2YKKyAgICAgICAgZXJyb3JzIGludHJvZHVjZWQgd2hlbiBhdHRlbXB0aW5nIHRv
IG9wdGltaXNlIHRoaW5ncyB0b28gZWFybHkuCisgICAgICAgIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIgZG9lcyBhIHNlYXJjaCBpbiB0aGUgYWNjdW11bGF0aW5nCisgICAgICAgIHJl
c291cmNlJ3MgU2hhcmVkQnVmZmVyLCBzZWFyY2ggdGhhdCB3YXMgdGFraW5nIE8obG9nKG4pKzEp
IHByaW9yIHIyODY5MzcKKyAgICAgICAgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIERhdGFWaWV3
IHNlZ21lbnRzIGluIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIFRoaXMgd2FzIHNpbXBsaWZp
ZWQgYXMgYSBPKDEpIG9wZXJhdGlvbiBieSB1c2luZyB0aGUgY29tYmluZWQgY29udGlndW91cwor
ICAgICAgICBTaGFyZWRCdWZmZXIgaW5zdGVhZC4KKyAgICAgICAgSG93ZXZlciwgdGhhdCBjYXVz
ZWQgZXZlcnkgc2luZ2xlIGludGVybWVkaWFyeSBhY2N1bXVsYXRlZCBidWZmZXJzIHRvIGJlCisg
ICAgICAgIGtlcHQgcmVmZXJlbmNlZCBieSB0aGUgWE1MSHR0cFJlcXVlc3QgU2hhcmVkQnVmZmVy
QnVpbGRlciBsZWFkaW5nIHRvCisgICAgICAgIG1hc3NpdmUgbWVtb3J5IHVzZS4KKyAgICAgICAg
SW4gb3RoZXIgd29yZHM6CisgICAgICAgIEZvciBlYWNoIHVwZGF0ZSwgd2UgZGlkIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CisgICAgICAgICAgICAtIFNldCBtX2RhdGEgdG8gYSBuZXcgYmlnIGNvbnRp
bnVvdXMgY2h1bmsgb2YgZGF0YSB0aGF0IHN0b3JlcyBhbGwKKyAgICAgICAgICAgICAgcmVjZWl2
ZWQgZGF0YQorICAgICAgICAgICAgLSBDcmVhdGUgYSB2aWV3IG9mIHRoZSBuZXcgZGF0YSBhcyBh
IFNoYXJlZEJ1ZmZlci4gVGhpcyBTaGFyZWRCdWZmZXIKKyAgICAgICAgICAgICAgcmVmZXJlbmNl
cyB0aGUgYmlnIGNvbnRpbnVvdXMgY2h1bmsgYWJvdmUKKyAgICAgICAgICAgIC0gWEhSIHN0b3Jl
cyBhIHJlZiB0byB0aGUgdmlldywgaGVuY2Uga2VlcCB0aGUgYmlnIGNodW5rIGFsaXZlLgorICAg
ICAgICBFYWNoIFhIUiBjaHVuaywgYWx0aG91Z2ggc21hbGwgaW4gZGF0YSB0aGF0IGNhbiBiZSBh
Y2Nlc3NlZCwgaXMgYWN0dWFsbHkga2VlcGluZyBpbiBtZW1vcnkgYWxsIHRlbXBvcmFyeSBjcmVh
dGVkIG1fZGF0YSBjaHVua3MuCisgICAgICAgIEZvbGxvd2luZyB0aGlzIGNoYW5nZSwgWEhSIHdp
bGwgbm93IG9ubHkga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIG5ldyBEYXRhU2VnbWVudCBhZGRl
ZCBzaW5jZSB0aGUgbGFzdCBydW4gcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBwcmV2aW91cyBjb250
ZW50LgorCisgICAgICAgIEZseS1ieTogYWRkIHNvbWUgY29tbWVudHMgZGVzY3JpYmluZyB0aGUg
cnVubmluZyBvZiB0aGUgbWV0aG9kLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorCiAyMDIyLTAxLTI2ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCwgZml4IG5vbi11bmlmaWVkIGJ1aWxk
IGFmdGVyIHIyODg2NDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IGQzMzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNl
OGEwYzYuLjU1YzQ1YmViZmY0ZjRhNGNmNGRkOTc5NzQ3ZGFmOGZlNGEyMjQxNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NjIsMTkgKzYyLDI0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIGlmIChtX2luSW5jcmVtZW50YWxE
YXRhTm90aWZ5KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBXZSBuZWVkIHRvIGtlZXAgYSBz
dHJvbmcgcmVmZXJlbmNlIHRvIGJvdGggdGhlIFNoYXJlZEJ1ZmZlciBhbmQgdGhlIGN1cnJlbnQg
Q2FjaGVkUmF3UmVzb3VyY2UgaW5zdGFuY2UKKyAgICAvLyBhcyBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkIGNhbGwgbWF5IGRlbGV0ZSBib3RoLgogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGF1dG8gcHJvdGVj
dGVkRGF0YSA9IFJlZiB7IGRhdGEgfTsKKwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpOwogCisgICAgLy8gTm90aWZ5IGNsaWVudHMgb25seSBvZiB0aGUg
bmV3bHkgYXBwZW5kZWQgY29udGVudCBzaW5jZSB0aGUgbGFzdCBydW4uCiAgICAgYXV0byBwcmV2
aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKLSAgICB3aGlsZSAobV9kYXRhLT5zaXplKCkg
PiBwcmV2aW91c0RhdGFTaXplKSB7Ci0gICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gbV9k
YXRhLT5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFTaXplKTsKKyAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CisgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
ZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFTaXplKTsKICAgICAgICAgcHJldmlvdXNEYXRh
U2l6ZSArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogCiAgICAgICAgIFNldEZvclNjb3BlPGJv
b2w+IG5vdGlmeVNjb3BlKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnksIHRydWUpOwogICAgICAg
ICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKSk7CiAgICAgfQotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsK
KyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLnNpemUoKSk7CiAKICAgICBpZiAoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkgewogICAg
ICAgICBpZiAobV9sb2FkZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>