<?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>234921</bug_id>
          
          <creation_ts>2022-01-06 07:06:30 -0800</creation_ts>
          <short_desc>Remove IPC::SharedBufferDataReference and use IPC::SharedBufferCopy instead</short_desc>
          <delta_ts>2022-01-07 22:25:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828601</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-06 07:06:30 -0800</bug_when>
    <thetext>We have no need to distinguish a SharedBufferDataReference from a SharedBufferCopy.

A SharedBufferDataReference will be converted into a IPC::DataReference (a Span&lt;uint8_t&gt;) and from there the data will be copied again into a SharedBuffer. This is inefficient and unnecessary.

By using an IPC::SharedBufferCopy we can move the SharedBuffer around without ever having to copy the content.

IPC::SharedBufferCopy::decoder should be rewritten to avoid copying its content as done there: https://webkit-search.igalia.com/webkit/rev/105b58d2aab063d1ab6df6717b7b0d7816b674eb/Source/WebKit/Platform/IPC/SharedBufferCopy.cpp#55-57

IPC::SharedBufferCopy should be renamed IPC::SharedBuffer for simplicity sake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828602</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-06 07:07:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/87196287&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828810</commentid>
    <comment_count>2</comment_count>
      <attachid>448557</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-06 20:44:51 -0800</bug_when>
    <thetext>Created attachment 448557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828835</commentid>
    <comment_count>3</comment_count>
      <attachid>448566</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 00:39:25 -0800</bug_when>
    <thetext>Created attachment 448566
Patch

Fix compilation on GTK and Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828844</commentid>
    <comment_count>4</comment_count>
      <attachid>448570</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 01:14:59 -0800</bug_when>
    <thetext>Created attachment 448570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828846</commentid>
    <comment_count>5</comment_count>
      <attachid>448571</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 01:21:46 -0800</bug_when>
    <thetext>Created attachment 448571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828847</commentid>
    <comment_count>6</comment_count>
      <attachid>448572</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 01:46:25 -0800</bug_when>
    <thetext>Created attachment 448572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828850</commentid>
    <comment_count>7</comment_count>
      <attachid>448574</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 02:11:43 -0800</bug_when>
    <thetext>Created attachment 448574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828858</commentid>
    <comment_count>8</comment_count>
      <attachid>448574</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-07 02:54:58 -0800</bug_when>
    <thetext>Comment on attachment 448574
Patch

I like the direction.
I wonder how we could remove those makeContiguous calls that are actually no-op on receive side.
Ideally we should be able on sender side to provide a Fragmented buffer and get a contiguous buffer on receiver side.
Any idea?

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

&gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:285
&gt; +    Ref&lt;SharedBuffer&gt; buffer = data.makeContiguous();

auto

&gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:286
&gt; +    char* dataPtr = const_cast&lt;char*&gt;(buffer-&gt;data());

auto*
We should probably introduce a non const getter instead.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:185
&gt; +    size_t bytesWritten = FileSystem::writeToFile(m_downloadFile, contiguousData-&gt;data(), contiguousData-&gt;size());

This looks inefficient even though this is probably efficient.
We do not need to call contiguousBuffer here given we want to write in a file and we could write pieces by pieces.
AIUI, data is coming straight from IPC so is probably contiguous here.

&gt; Source/WebKit/Platform/IPC/SharedBufferCopy.h:55
&gt; +    Ref&lt;WebCore::FragmentedSharedBuffer&gt; safeBuffer() const;

Do we need all these methods given I guess we only manipulate SharedBufferCopy (outside of IPC sending) that have a contiguous buffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828869</commentid>
    <comment_count>9</comment_count>
      <attachid>448580</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 04:52:07 -0800</bug_when>
    <thetext>Created attachment 448580
Patch

apply comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828871</commentid>
    <comment_count>10</comment_count>
      <attachid>448581</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 04:57:57 -0800</bug_when>
    <thetext>Created attachment 448581
Patch

remove stray changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828872</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-07 05:01:54 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=448580&amp;action=review

&gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:286
&gt; +    char* dataPtr = const_cast&lt;char*&gt;(buffer-&gt;data());

auto/auto*

&gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:287
&gt;      hr = stream-&gt;InitializeFromMemory(reinterpret_cast&lt;BYTE*&gt;(dataPtr), data.size());

Do we need this reinterpret_cast given SharedBuffer can return a const uint8_t*

&gt; Source/WebKit/Platform/IPC/SharedBufferCopy.cpp:54
&gt; +    return downcast&lt;SharedBuffer&gt;(m_buffer.get())-&gt;data();

Do we need this getter?
I am a bit hesitant to do downcast.

&gt; Source/WebKit/Platform/IPC/SharedBufferCopy.h:57
&gt; +    RefPtr&lt;WebCore::SharedBuffer&gt; buffer() const { return downcast&lt;WebCore::SharedBuffer&gt;(m_buffer.get()); }

It might be safer to go with something like:
ASSERT(!m_buffer || m_buffer.isContiguous());
return m_buffer ? m_buffer-&gt;makeContiguous() : nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828876</commentid>
    <comment_count>12</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 05:23:58 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448580&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:286
&gt; &gt; +    char* dataPtr = const_cast&lt;char*&gt;(buffer-&gt;data());
&gt; 
&gt; auto/auto*
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.cpp:287
&gt; &gt;      hr = stream-&gt;InitializeFromMemory(reinterpret_cast&lt;BYTE*&gt;(dataPtr), data.size());
&gt; 
&gt; Do we need this reinterpret_cast given SharedBuffer can return a const
&gt; uint8_t*

no idea, I&apos;ve never touched this code before; in fact I&apos;m now 100% this isn&apos;t used at all because the code as it was it couldn&apos;t have compiled.
The argument is a FragmentedSharedBuffer() which doesn&apos;t have a data() method; I only found that code because I sourced a particular code pattern.


&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/SharedBufferCopy.cpp:54
&gt; &gt; +    return downcast&lt;SharedBuffer&gt;(m_buffer.get())-&gt;data();
&gt; 
&gt; Do we need this getter?
&gt; I am a bit hesitant to do downcast.
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/SharedBufferCopy.h:57
&gt; &gt; +    RefPtr&lt;WebCore::SharedBuffer&gt; buffer() const { return downcast&lt;WebCore::SharedBuffer&gt;(m_buffer.get()); }
&gt; 
&gt; It might be safer to go with something like:
&gt; ASSERT(!m_buffer || m_buffer.isContiguous());
&gt; return m_buffer ? m_buffer-&gt;makeContiguous() : nullptr;

this is 100% identical to using downcast. makeContiguous() will return the same object if isContiguous() is true.

downcast does:
ASSERT_WITH_SECURITY_IMPLICATION(!source || is&lt;Target&gt;(*source));
and is&lt;Target&gt; calls isType() which does:
bool isType(const WebCore::FragmentedSharedBuffer&amp; buffer) { return buffer.isContiguous(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828877</commentid>
    <comment_count>13</comment_count>
      <attachid>448580</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-07 05:27:23 -0800</bug_when>
    <thetext>Comment on attachment 448580
Patch

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

&gt; Source/WebKit/Platform/IPC/SharedBufferCopy.h:45
&gt; +        : m_buffer(WTFMove(buffer)) { }

Let&apos;s mark them as explicit and mention they should only be used for IPC serialisation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828879</commentid>
    <comment_count>14</comment_count>
      <attachid>448581</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-07 05:42:37 -0800</bug_when>
    <thetext>Comment on attachment 448581
Patch

As discussed offline, it might be good to fix the perf regression.
In the end, we might want on receiver side to pass SharedBufferCopy&amp;&amp; from which we can extract Ref&lt;SharedBuffer&gt;.
Then we can remove SharedBufferCopy::data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828887</commentid>
    <comment_count>15</comment_count>
      <attachid>448585</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 07:09:38 -0800</bug_when>
    <thetext>Created attachment 448585
Patch

apply comments: make constructor explicit, add comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828890</commentid>
    <comment_count>16</comment_count>
      <attachid>448587</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 07:21:44 -0800</bug_when>
    <thetext>Created attachment 448587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828898</commentid>
    <comment_count>17</comment_count>
      <attachid>448591</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 07:59:48 -0800</bug_when>
    <thetext>Created attachment 448591
Patch

GTK fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829121</commentid>
    <comment_count>18</comment_count>
      <attachid>448641</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 15:57:43 -0800</bug_when>
    <thetext>Created attachment 448641
Patch

GTK/WPE compilation fixes; fix crash when loading icons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829133</commentid>
    <comment_count>19</comment_count>
      <attachid>448646</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 16:31:04 -0800</bug_when>
    <thetext>Created attachment 448646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829192</commentid>
    <comment_count>20</comment_count>
      <attachid>448663</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-07 19:50:30 -0800</bug_when>
    <thetext>Created attachment 448663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829200</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-07 22:24:58 -0800</bug_when>
    <thetext>Committed r287808 (245860@main): &lt;https://commits.webkit.org/245860@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448663.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448557</attachid>
            <date>2022-01-06 20:44:51 -0800</date>
            <delta_ts>2022-01-07 00:39:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107154448.patch</filename>
            <type>text/plain</type>
            <size>97211</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNGU0
MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNjM2VhZDFlMDcx
Yjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUludGVnZXIpX3dr
X3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilw
cmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dSZWN0R2V0SGVp
Z2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRE
cmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRT
ZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAgICAgICAgcmV0
YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYgKHBkZkRhdGEu
ZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBh
dXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAg
ICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9j
dW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3Zp
ZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRmYWQ4YTBlZWNl
MzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwMDks
NyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25J
bmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNsaWVudCgpLmhh
bmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHJlcXVlc3RJ
RCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdw
b3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2Fs
bGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMi4uNjlkMzYx
MmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFz
c2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNw
YWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAv
LyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWRE
YXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8v
IGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
IHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6ZSBzaXplOwog
ICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVy
OjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERhdGFSZWNlaXZl
ZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHko
ZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAgICBpZiAoIW1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBkYXRhICwgYWxs
RGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXRE
YXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZvcyksIDApKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2Vp
dmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVh
NzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2VhN2UzZDcxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2Vi
Q29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4YmM3MTMwZDc1
ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhjNWIzYjI5NzY0
MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNpbmNsdWRlICJS
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVJ
bWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFn
ZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6
OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURl
Y29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50
aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWltYWdlRGVj
b2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBhNTNmMTU3YmVl
YmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVmMWUwZjY1OGI5
YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpCiB7
CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpj
cmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJldHVybiBidWZm
ZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5
MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2NjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdv
cmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlz
SW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVmZmVyKCksIGVu
Y29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRl
cikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1Jl
Y2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigp
ID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
bV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEu
Y29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRj
NTk4MTBiYzkxZWQ4YS4uNjVlMjUxYzljMGFkOWFhMjU2NzFiM2FkNTgzNGU0ZmYzNjNjMDI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRvd25sb2Fk
VGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggZWQ0ZjVkZTlkNWU1NjE4ZDQzMjQ1NTA4MmY1ZGExODhhYmY5YmY0Yy4uNGI2YjM0ODU3
ZTc4ZTU2ZjUyNmJjZjY0NTNjNDUyYjdlNDMyNGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmODlmZjcyYTBkMzFiZWMxMWVm
ODAyOTdlZmJhOTJjMmE3YmM2NmI1Li5hMzM5MWJjNzBlZDdiODkzZGJhOTZjOWMzZDg4Y2Q0MGU4
MTlmNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtNjMsNyArNjMsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIlRleHRSZWNvZ25pdGlvblVwZGF0
ZVJlc3VsdC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IgogI2luY2x1ZGUgIlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCIKQEAgLTM4MDUsNyAr
MzgwNSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsCiB9CiAKICNpZiBFTkFCTEUoTUhUTUwp
Ci12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGNh
bGxiYWNrKHsgTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpIH0p
OwogfQpAQCAtMzgyNSw3ICszODI1LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rp
b24oUGFnZSogcGFnZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFj
aykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
OwpAQCAtMzgzMywxMiArMzgzMywxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdAogICAgICAg
ICBkYXRhID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihmcmFtZSktPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpOwogI2VuZGlmCiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YUJ1ZmZlcjsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRh
dGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRpZgotICAgIGNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZmZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNhbGxiYWNrKQpAQCAtMzg1OSw3ICszODU5LDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgKICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBj
YWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKSkgewpAQCAtMzg3MSwxMCArMzg3MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJlbmNl
ID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJh
Y2soeyBXVEZNb3ZlKGJ1ZmZlcikgfSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cmNlVVJMKQpAQCAtMzg5MCw3ICszODg3LDcgQEAgc3RhdGljIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0
IFUKICAgICByZXR1cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNr
KQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewpAQCAtMzg5OCwxMyArMzg5NSwxMCBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZQogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1l
KCksIHJlc291cmNlVVJMKTsKICAgICB9CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJl
bmNlID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soeyBXVEZNb3ZlKGJ1ZmZlcikgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zOTE0LDEyICszOTA4LDEyIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogI2VuZGlmCiAK
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YUJ1ZmZlcjsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkK
LSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAg
ICAgIGRhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKICNlbmRp
ZgotICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZmZXIp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCkBAIC01
NDcyLDcgKzU0NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1w
bChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbgogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgSW50U2l6
ZSBzbmFwc2hvdFNpemU7CkBAIC01NDk3LDcgKzU0OTEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdU
b1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+JgogICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmlnaW5h
bExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKICAgICBmcmFtZVZpZXcuc2V0UGFpbnRCZWhh
dmlvcihvcmlnaW5hbFBhaW50QmVoYXZpb3IpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHBkZkRhdGEuZ2V0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UmVj
dFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNp
emUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNTU1MSwxMiArNTU0NSwxMiBAQCB2
b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYg
Y2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQz
Ml90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIFByaW50Q29udGV4dEFjY2Vzc1Njb3BlIHNjb3Bl
IHsgKnRoaXMgfTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7
CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50
LCBwZGZQYWdlRGF0YSk7Ci0gICAgY2FsbGJhY2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VE
YXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURh
dGEuZ2V0KCkpKSB9KTsKKyAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdl
RGF0YS5nZXQoKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQ
YWdlRGF0YSkKQEAgLTY5OTIsNyArNjk4Niw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50
ZXJMb2NrKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQpA
QCAtNzA2Miw3ICs3MDU2LDcgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2
ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlckkKICAgICBhdXRvKiBo
YW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRs
ZXJJZGVudGlmaWVyKTsKICAgICBBU1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNr
RGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVyKCkgPyAqZGF0YS5idWZm
ZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOworICAgIGhhbmRsZXItPnRhc2tE
aWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5jb250aWd1b3VzQnVmZmVyKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
QEAgLTcyODcsMTIgKzcyODEsMTIgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4KICAgICBjYWxs
YmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvIGF0
dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAgICAgICAg
IGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShmaWxlU2l6ZSksIGNvbnRlbnRU
eXBlLCBmaWxlTmFtZSk7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29udGVudFR5cGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY2xvc2luZ0ltYWdl
RGF0YS5kYXRhKCksIGVuY2xvc2luZ0ltYWdlRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgZW5jbG9zaW5n
SW1hZ2VEYXRhLnNhZmVCdWZmZXIoKSk7CiAgICAgfQogICAgIGNhbGxiYWNrKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDg4NjY3MDdjNDYx
M2Q5YTdjZDM1MjE1ZGZjYTkyM2M2OTc5YmViOS4uMGE4MjcwOWFjM2ZhMzU3YjE3NDIzODhlODI4
NmIyYzAwZTY0OTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTAxNCw3ICsxMDE0LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25z
dCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYpPiYmKTsKLSAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
KTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICAgICB2b2lk
IGRyYXdQYWdlc1RvUERGSW1wbChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50
SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJs
ZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7CiAjZW5kaWYKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgUHJpbnRJbmZvJiwgc2l6ZV90LCBNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9T
QXN5bmNSZXBseSYmKTsKICNlbmRpZgogCi0gICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAg
ICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZv
aWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQ
cmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKT4mJik7CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRM
b3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICAgICB2
b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTEzMDgsNyArMTMwOCw3IEBAIHB1Ymxp
YzoKICAgICAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0lt
YWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0
dGFjaG1lbnRJY29uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIHFsVGh1bWJuYWlsSGFuZGxlKTsKICNlbmRpZgogCkBAIC0xNjgzLDE1ICsx
NjgzLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcm
KT4mJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spOworICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1M
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYp
PiYmIGNhbGxiYWNrKTsKICNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmKTsKLSAg
ICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAg
IHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYpPiYmKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
Jik+JiYpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmKT4mJik7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+
JiYpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOwor
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJDb3B5PiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBz
dGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJkYTVm
NTBhZGQyM2E5Njc0MGU4OWQ3MzNkNzljMTg3ZjA1MmJlMTIuLjE0ZDFjNjczNGIyMmIzMmU5MjU3
NDA3ZjU3YjFjNGFiYjBmZTQ0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjEyLDE1ICsyMTIsMTUgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygp
IC0+IChzdHJ1Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyByZXN1bHQpIEFzeW5jCiAjZW5k
aWYKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSgpIC0+IChJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBHZXRDb250ZW50
c0FzTUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2Vu
ZGlmCi0gICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKLSAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4g
KHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJl
bmNlKSBBc3luYworICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+IGJ1ZmZlcikgQXN5bmMKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBidWZmZXIpIEFzeW5jCiAgICAgR2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAg
ICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5
bmMKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhKSBBc3luYworICAgIEdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGEp
IEFzeW5jCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6
OkRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKIAogICAgIFJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCkBAIC00
MTMsMTIgKzQxMywxMiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWlu
dDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENvbXB1dGVQYWdl
c0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVj
dEVkZ2VzPGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4pIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgRHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBpbWFnZSkgQXN5bmMKLSAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpIEFzeW5jCisgICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1Mo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm8pIC0+IChzaXplX3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwotICAgIERyYXdU
b1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhKSBBc3luYworICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBh
Z2VDb3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCi0g
ICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
KSBBc3luYworICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3
UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IpIEFzeW5jCkBAIC01NTAsNyArNTUwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
KQogCi0gICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgaWNvbkRhdGEpIEFzeW5jCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpIC0+IChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgaWNvbkRhdGEpIEFzeW5jCiAgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGll
bnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpAQCAt
NTcxLDcgKzU3MSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmlu
ZyBjb250ZW50VHlwZSkgLT4gKCkgQXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0
cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYworICAgIFVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCiAgICAgVXBkYXRl
QXR0YWNobWVudEljb24oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgcWxUaHVtYm5haWxIYW5kbGUpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNmQ1NWYxMDg3
Y2E0MDJjOTU1ZWE1YjU4MjE0NzM0MDIxMTQwMGYwLi43MGNkMDZjNmUxMTAzZTYzNjMwMTcwYzRj
YTFmY2IwMGU4MDZhNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVy
Q29weS5oIgogI2ltcG9ydCAiU2hhcmVkTWVtb3J5LmgiCiAjaW1wb3J0ICJTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUuaCIKICNpbXBvcnQgIlRhcEhhbmRsaW5nUmVzdWx0LmgiCkBAIC00MjQ0
LDEzICs0MjQ1LDEzIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByCiAgICAgICAgIGF1dG8gcGRm
RGF0YSA9IHBkZlNuYXBzaG90QXRTaXplKHNuYXBzaG90UmVjdCwgc25hcHNob3RTaXplLCAwKTsK
IAogICAgICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2lu
YWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7Ci0gICAgICAgIHJlcGx5KElQQzo6RGF0YVJl
ZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
cGRmRGF0YS5nZXQoKSkpKTsKKyAgICAgICAgcmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRm
RGF0YS5nZXQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFt
ZUlELCBwcmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFnZURhdGEpOwotICAgIHJlcGx5KElQ
Qzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZE
YXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkpOworICAgIHJlcGx5KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiAKICAgICBlbmRQcmludGluZygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMTRjZGY3NTE1YzYyYzQ1ZGFi
OWY5ZGI4MTZmZGNiMmQ4ODVjZjMzYy4uYjAzMmNjNzM4YTQwZmQyOThmMGUwMjY4ZmEyOWQ3ZTU0
ZDUwMjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04NCw3ICs4
NCw3IEBAIGNsYXNzIE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNw
YWNlIFBBTCB7CkBAIC01NTEsNyArNTUxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25z
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgY29uc3VtZUF1ZGlvQ29tcG9u
ZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICNlbmRpZgog
ICAgIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDc0OTNjM2Y4ZjQ2NTFkZGZiZDUw
NDExZTdlMjA1NjZhZDkwZDkyZmUuLjQyZDc1YTM5NGE5Y2QyN2Q0NDg5NGQ3Zjk1OWEwMjEwMDFk
NzYwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0xOTksNyArMTk5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgQ29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgcmVnaXN0cmF0aW9uRGF0YSkKKyAgICBDb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKElQQzo6U2hhcmVkQnVmZmVyQ29weSByZWdpc3RyYXRpb25EYXRhKQogICAg
IEFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlc0RpZENoYW5nZShzdHJ1Y3QgV2ViS2l0OjpBY2Nlc3Np
YmlsaXR5UHJlZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmlu
ZGV4IGRmMWY4Y2ZiMTBiMjdlNjEyOTg1N2RjYTlkODE2YWJlMTgxNzA0NWEuLmMyYjcyOWNmYmE4
ODlkMmQ3ODA4MTk1YmQ4YWU3MzY4OGJhYTA1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2lt
cG9ydCAiUHJvY2Vzc0Fzc2VydGlvbi5oIgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgog
I2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vz
c1dhdGNoZXIuaCIKQEAgLTEyNDgsMTYgKzEyNDksMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzeXN0
ZW1EaWRXYWtlKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0Nv
bXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9p
ZCBXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwog
CiAgICAgaWYgKCFQQUw6OmlzQXVkaW9Ub29sYm94Q29yZUZyYW1ld29ya0F2YWlsYWJsZSgpIHx8
ICFQQUw6OmNhbkxvYWRfQXVkaW9Ub29sYm94Q29yZV9BdWRpb0NvbXBvbmVudEFwcGx5U2VydmVy
UmVnaXN0cmF0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlv
bnMgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpKTsKLSAgICBpZiAoIXJlZ2lzdHJhdGlvbnMpCisgICAgaWYgKCFkYXRh
LmJ1ZmZlcigpKQogICAgICAgICByZXR1cm47CisgICAgYXV0byByZWdpc3RyYXRpb25zID0gZGF0
YS5jb250aWd1b3VzQnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgYXV0byBlcnIgPSBB
dWRpb0NvbXBvbmVudEFwcGx5U2VydmVyUmVnaXN0cmF0aW9ucyhyZWdpc3RyYXRpb25zLmdldCgp
KTsKICAgICBpZiAobm9FcnIgIT0gZXJyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448566</attachid>
            <date>2022-01-07 00:39:25 -0800</date>
            <delta_ts>2022-01-07 01:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107193920.patch</filename>
            <type>text/plain</type>
            <size>99964</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94
eUd0ay5jcHAKaW5kZXggOTFmZGZjODQzN2FhNTc3MGViYjkyMTZiMzcxYjMyYjJiYWQ4MmEyNS4u
NjdhM2JiMzM1ZjY3Y2NiZDZjYjBhODI0YmY4MjFiOTE4MDI2MTk5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFMKICAgICBjbGlwYm9hcmQucmVh
ZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3Jp
Z2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVR5cGVzOwogICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVy
LmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihkYXRh
QnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIGlmIChjdXN0b21EYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGN1
c3RvbURhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRvbVR5cGVzLmFk
ZCh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
aW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNj
M2VhZDFlMDcxYjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dS
ZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBb
cmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYg
KHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9w
cmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRm
YWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNs
aWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBh
aXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcw
Mi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERh
dGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0
YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFj
YjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2Vh
N2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4
YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhj
NWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBs
eShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVm
MWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQy
MDcyNTYwMDY5MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2Njhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF8KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEuY29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uNWExMDc1NTdjYzM1ZTk1Y2QyNzA1MzA3ZDkwYTBmYmNi
MDZhMmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODQsOSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IFNo
YXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgU2hhcmVkQnVmZmVyQ29weShidWZmZXIp
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTE0Miw5ICsx
NDEsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVC
bG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciAsIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IFNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSAsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZl
ci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFi
ZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1M2M0NTJiN2U0MzI0YjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4
OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUuLmEzMzkxYmM3MGVkN2I4OTNk
YmE5NmM5YzNkODhjZDQwZTgxOWY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiVGV4
dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAog
I2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2Fs
bGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcgKzM4MjUsNyBAQCBzdGF0aWMgRnJhbWUq
IGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAjZW5kaWYKIAotICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCi0gICAg
Y2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCkBAIC0zODU5LDcgKzM4NTks
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODcxLDEwICszODcxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICAgICAgfQogICAgIH0KIAotICAgIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJl
bmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAogc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcgKzM4ODcsNyBAQCBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICszODk1LDEwIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1l
KGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0KIAotICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0g
ICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVm
ZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM5MTQsMTIg
KzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwor
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91
dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcsNyArNTQ5MSw3IEBAIHZv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwogICAgIGZyYW1l
Vmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CiAKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NTUx
LDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUHJpbnRDb250ZXh0
QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJ
bmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxsYmFjayh7IENGRGF0YUdl
dEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjk5Miw3ICs2OTg2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIpCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5k
bGVySQogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQ
cm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAot
ICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZm
ZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7Cisg
ICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmNvbnRp
Z3VvdXNCdWZmZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBs
ZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6Omlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZp
bGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNobWVudC0+dXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkp
OworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRl
bnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9CiAgICAgY2Fs
bGJhY2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA0ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4wYTgyNzA5YWMz
ZmEzNTdiMTc0MjM4OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9Q
REYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0x
MDIzLDcgKzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4m
Jik7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlm
CiAKQEAgLTE2ODMsMTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRz
QXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2
b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+
JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMi4uMTRk
MWM2NzM0YjIyYjMyZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTIs
MTUgKzIxMiwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNB
dHRyaWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJl
c3VsdCkgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0Fz
TUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3lu
YworICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291
cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5n
IHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZy
b21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNl
VVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5
bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcg
c3RyaW5nKSBBc3luYwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChT
dHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCisgICAgR2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0
V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkg
LT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVmZXJlbmNlKSBB
c3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMpIEFzeW5jCiAKQEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50
aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFn
ZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNo
cm9ub3VzCi0gICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGaU9TKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEp
IEFzeW5jCiAjZW5kaWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRp
ZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMKICAgICBTZXRV
c2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5j
CisgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBm
aWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkg
QXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLjcwY2QwNmM2
ZTExMDNlNjM2MzAxNzBjNGNhMWZjYjAwZTgwNmE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJv
eFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIKICNpbXBv
cnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFwSGFuZGxpbmdS
ZXN1bHQuaCIKQEAgLTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZp
T1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHIK
ICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92
ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKLSAgICAgICAg
cmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBseShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1Bh
Z2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBwZGZQYWdlRGF0
YSk7Ci0gICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFn
ZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSk7CisgICAg
cmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsKIAogICAgIGVu
ZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAx
NGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2IyZDg4NWNmMzNjLi5iMDMyY2M3MzhhNDBmZDI5
OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJD
b3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTU1MSw3ICs1NTEsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBv
bmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBj
b25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5
M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFkOTBkOTJmZS4uNDJkNzVhMzk0YTljZDI3ZDQ0
ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5OSw3ICsxOTksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZWdpc3RyYXRpb25EYXRhKQorICAgIENvbnN1
bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlZ2lz
dHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVj
dCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4MTZhYmUxODE3
MDQ1YS4uYzJiNzI5Y2ZiYTg4OWQyZDc4MDgxOTViZDhhZTczNjg4YmFhMDVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpAQCAtMTI0OCwxNiArMTI0OSwxNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vz
czo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3
b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29t
cG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwotICAgIGlmICghcmVnaXN0cmF0aW9u
cykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbnMgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0VyciAhPSBlcnIpCg==
</data>
<flag name="commit-queue"
          id="474463"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448570</attachid>
            <date>2022-01-07 01:14:59 -0800</date>
            <delta_ts>2022-01-07 01:36:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107201457.patch</filename>
            <type>text/plain</type>
            <size>99964</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94
eUd0ay5jcHAKaW5kZXggOTFmZGZjODQzN2FhNTc3MGViYjkyMTZiMzcxYjMyYjJiYWQ4MmEyNS4u
NjdhM2JiMzM1ZjY3Y2NiZDZjYjBhODI0YmY4MjFiOTE4MDI2MTk5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFMKICAgICBjbGlwYm9hcmQucmVh
ZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3Jp
Z2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVR5cGVzOwogICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVy
LmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihkYXRh
QnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIGlmIChjdXN0b21EYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGN1
c3RvbURhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRvbVR5cGVzLmFk
ZCh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
aW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNj
M2VhZDFlMDcxYjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dS
ZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBb
cmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYg
KHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9w
cmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRm
YWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNs
aWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBh
aXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcw
Mi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERh
dGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0
YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFj
YjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2Vh
N2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4
YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhj
NWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBs
eShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVm
MWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQy
MDcyNTYwMDY5MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2Njhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF8KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEuY29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uNWExMDc1NTdjYzM1ZTk1Y2QyNzA1MzA3ZDkwYTBmYmNi
MDZhMmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODQsOSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IFNo
YXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgU2hhcmVkQnVmZmVyQ29weShidWZmZXIp
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTE0Miw5ICsx
NDEsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVC
bG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciAsIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IFNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSAsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZl
ci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFi
ZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1M2M0NTJiN2U0MzI0YjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4
OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUuLmEzMzkxYmM3MGVkN2I4OTNk
YmE5NmM5YzNkODhjZDQwZTgxOWY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiVGV4
dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAog
I2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2Fs
bGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcgKzM4MjUsNyBAQCBzdGF0aWMgRnJhbWUq
IGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAjZW5kaWYKIAotICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCi0gICAg
Y2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCkBAIC0zODU5LDcgKzM4NTks
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODcxLDEwICszODcxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICAgICAgfQogICAgIH0KIAotICAgIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJl
bmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAogc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcgKzM4ODcsNyBAQCBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICszODk1LDEwIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1l
KGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0KIAotICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0g
ICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVm
ZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM5MTQsMTIg
KzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwor
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91
dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcsNyArNTQ5MSw3IEBAIHZv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwogICAgIGZyYW1l
Vmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CiAKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NTUx
LDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUHJpbnRDb250ZXh0
QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJ
bmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxsYmFjayh7IENGRGF0YUdl
dEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjk5Miw3ICs2OTg2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIpCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5k
bGVySQogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQ
cm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAot
ICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZm
ZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7Cisg
ICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmNvbnRp
Z3VvdXNCdWZmZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBs
ZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6Omlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZp
bGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNobWVudC0+dXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkp
OworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRl
bnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9CiAgICAgY2Fs
bGJhY2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA0ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4wYTgyNzA5YWMz
ZmEzNTdiMTc0MjM4OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9Q
REYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0x
MDIzLDcgKzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4m
Jik7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlm
CiAKQEAgLTE2ODMsMTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRz
QXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2
b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+
JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMi4uMTRk
MWM2NzM0YjIyYjMyZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTIs
MTUgKzIxMiwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNB
dHRyaWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJl
c3VsdCkgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0Fz
TUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3lu
YworICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291
cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5n
IHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZy
b21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNl
VVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5
bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcg
c3RyaW5nKSBBc3luYwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChT
dHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCisgICAgR2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0
V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkg
LT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVmZXJlbmNlKSBB
c3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMpIEFzeW5jCiAKQEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50
aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFn
ZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNo
cm9ub3VzCi0gICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGaU9TKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEp
IEFzeW5jCiAjZW5kaWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRp
ZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMKICAgICBTZXRV
c2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5j
CisgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBm
aWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkg
QXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLjcwY2QwNmM2
ZTExMDNlNjM2MzAxNzBjNGNhMWZjYjAwZTgwNmE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJv
eFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIKICNpbXBv
cnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFwSGFuZGxpbmdS
ZXN1bHQuaCIKQEAgLTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZp
T1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHIK
ICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92
ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKLSAgICAgICAg
cmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBseShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1Bh
Z2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBwZGZQYWdlRGF0
YSk7Ci0gICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFn
ZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSk7CisgICAg
cmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsKIAogICAgIGVu
ZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAx
NGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2IyZDg4NWNmMzNjLi5iMDMyY2M3MzhhNDBmZDI5
OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJD
b3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTU1MSw3ICs1NTEsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBv
bmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBj
b25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5
M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFkOTBkOTJmZS4uNDJkNzVhMzk0YTljZDI3ZDQ0
ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5OSw3ICsxOTksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZWdpc3RyYXRpb25EYXRhKQorICAgIENvbnN1
bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlZ2lz
dHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVj
dCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4MTZhYmUxODE3
MDQ1YS4uYzJiNzI5Y2ZiYTg4OWQyZDc4MDgxOTViZDhhZTczNjg4YmFhMDVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpAQCAtMTI0OCwxNiArMTI0OSwxNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vz
czo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3
b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29t
cG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwotICAgIGlmICghcmVnaXN0cmF0aW9u
cykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbnMgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0VyciAhPSBlcnIpCg==
</data>
<flag name="commit-queue"
          id="474465"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448571</attachid>
            <date>2022-01-07 01:21:46 -0800</date>
            <delta_ts>2022-01-07 02:07:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107202143.patch</filename>
            <type>text/plain</type>
            <size>99979</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94
eUd0ay5jcHAKaW5kZXggOTFmZGZjODQzN2FhNTc3MGViYjkyMTZiMzcxYjMyYjJiYWQ4MmEyNS4u
NjdhM2JiMzM1ZjY3Y2NiZDZjYjBhODI0YmY4MjFiOTE4MDI2MTk5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFMKICAgICBjbGlwYm9hcmQucmVh
ZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3Jp
Z2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVR5cGVzOwogICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVy
LmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihkYXRh
QnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIGlmIChjdXN0b21EYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGN1
c3RvbURhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRvbVR5cGVzLmFk
ZCh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
aW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNj
M2VhZDFlMDcxYjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dS
ZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBb
cmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYg
KHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9w
cmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRm
YWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNs
aWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBh
aXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcw
Mi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERh
dGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0
YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFj
YjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2Vh
N2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4
YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhj
NWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBs
eShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVm
MWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQy
MDcyNTYwMDY5MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2Njhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF8KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEuY29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uYTBkNDk2YmU5YmJhOGY3ZWE3NjYwYWIwOWI0ZjQ3MWFl
YWY4NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODQsOSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIu
c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVE
YXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBA
IC0xNDIsOSArMTQxLDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnUKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZl
ciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSAsIHN0YXRpY19jYXN0
PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1ZTU2MThkNDMy
NDU1MDgyZjVkYTE4OGFiZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1M2M0NTJiN2U0
MzI0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUuLmEz
MzkxYmM3MGVkN2I4OTNkYmE5NmM5YzNkODhjZDQwZTgxOWY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5j
bHVkZSAiU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5Lmgi
CiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5j
bHVkZUNoaWwKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcgKzM4MjUsNyBA
QCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBA
IHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAj
ZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkg
fTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0
YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCkBA
IC0zODU5LDcgKzM4NTksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNr
KHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2Fs
bGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODcxLDEw
ICszODcxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
IChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxs
YmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsK
IH0KIAogc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFG
b3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcg
KzM4ODcsNyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3Vy
Y2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICsz
ODk1LDEwIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291
cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0K
IAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAg
IGlmIChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBj
YWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJh
Y2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0
YTsKQEAgLTM5MTQsMTIgKzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0g
eyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0
YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVy
ZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9y
Y2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6
ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBy
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2Ut
Pm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcs
NyArNTQ5MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJl
Y3QpOwogICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlv
cik7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0
Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQo
KSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC01NTUxLDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFn
ZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgUHJpbnRDb250ZXh0QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwo
ZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxs
YmFjayh7IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjk5Miw3ICs2OTg2
LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1l
bnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySQogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VS
TFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VS
VChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRp
ZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKS5nZXQoKSk7CisgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlm
aWVyLCBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2No
ZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2
b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVu
Y2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVt
ZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmli
dXRlcyhXVEZNb3ZlKGZpbGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAg
YXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1h
Z2VEYXRhLnNpemUoKSkpOworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFn
ZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsK
ICAgICB9CiAgICAgY2FsbGJhY2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCA0ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5Nzli
ZWI5Li4wYTgyNzA5YWMzZmEzNTdiMTc0MjM4OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFn
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZv
aWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9Q
REYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsK
ICNlbmRpZgogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9Q
REZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3Qs
IE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAK
LSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
Jik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyAr
MTI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlm
CiAKLSAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2Fs
bGJhY2tJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGll
bnQoYm9vbCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxI
YW5kbGUpOwogI2VuZGlmCiAKQEAgLTE2ODMsMTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJM
RShNSFRNTCkKLSAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFj
ayk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0g
ICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZv
aWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRX
b3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMx
ODdmMDUyYmUxMi4uMTRkMWM2NzM0YjIyYjMyZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yMTIsMTUgKzIxMiwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IEdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAg
ICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhKSBBc3luYworICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3lu
YwotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJl
c291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
U3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+IGJ1ZmZlcikgQXN5bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bigpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNB
c1N0cmluZygpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEp
IEFzeW5jCisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcp
IEFzeW5jCi0gICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVy
ZW5jZSkgQXN5bmMKKyAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBk
YXRhUmVmZXJlbmNlKSBBc3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWly
PFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKQEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8p
IC0+IChWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2Fs
ZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFn
ZU1hcmdpbikgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2Uo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFn
ZVNpemUpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwot
ICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBw
YWdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXpl
X3QgcGFnZUNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJh
d1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBy
ZWN0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJ
bmZvKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1
NTAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJL
aXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmll
cikgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAg
ICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJh
Y2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkg
QXN5bmMKICAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xp
ZW50KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5z
ZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3lu
YwotICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcg
ZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURh
dGEpIC0+ICgpIEFzeW5jCisgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVu
dFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0lt
YWdlRGF0YSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRl
bnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRs
ZSkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCmluZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjEx
NDAwZjAuLjcwY2QwNmM2ZTExMDNlNjM2MzAxNzBjNGNhMWZjYjAwZTgwNmE2ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgog
I2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRN
ZW1vcnkuaCIKICNpbXBvcnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9y
dCAiVGFwSGFuZGxpbmdSZXN1bHQuaCIKQEAgLTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQ
YWdlOjpkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHIKICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUo
c25hcHNob3RSZWN0LCBzbmFwc2hvdFNpemUsIDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRM
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KTsKLSAgICAgICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIo
cGRmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAg
ICByZXBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURh
dGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNv
dW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdl
dEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEu
Z2V0KCkpKSk7CisgICAgcmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0
KCkpKTsKIAogICAgIGVuZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCAxNGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2IyZDg4NWNmMzNjLi5i
MDMyY2M3MzhhNDBmZDI5OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgT2JqZWN0OwogfQog
CiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CitjbGFz
cyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTU1MSw3ICs1NTEs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGNv
bnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CisgICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNzQ5M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFkOTBkOTJmZS4uNDJk
NzVhMzk0YTljZDI3ZDQ0ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5OSw3ICsxOTksNyBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZWdpc3RyYXRpb25E
YXRhKQorICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2Vz
RGlkQ2hhbmdlKHN0cnVjdCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3Np
YmlsaXR5UHJlZmVyZW5jZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3
ZGNhOWQ4MTZhYmUxODE3MDQ1YS4uYzJiNzI5Y2ZiYTg4OWQyZDc4MDgxOTViZDhhZTczNjg4YmFh
MDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgi
CiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0
ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpAQCAtMTI0OCwxNiAr
MTI0OSwxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRh
KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBBTDo6aXNBdWRpb1Rv
b2xib3hDb3JlRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BdWRpb1Rvb2xi
b3hDb3JlX0F1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwotICAgIGlm
ICghcmVnaXN0cmF0aW9ucykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3Jl
YXRlQ0ZEYXRhKCk7CiAKICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJS
ZWdpc3RyYXRpb25zKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0VyciAhPSBlcnIp
Cg==
</data>
<flag name="commit-queue"
          id="474469"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448572</attachid>
            <date>2022-01-07 01:46:25 -0800</date>
            <delta_ts>2022-01-07 02:11:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107204620.patch</filename>
            <type>text/plain</type>
            <size>100876</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94
eUd0ay5jcHAKaW5kZXggOTFmZGZjODQzN2FhNTc3MGViYjkyMTZiMzcxYjMyYjJiYWQ4MmEyNS4u
NjdhM2JiMzM1ZjY3Y2NiZDZjYjBhODI0YmY4MjFiOTE4MDI2MTk5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFMKICAgICBjbGlwYm9hcmQucmVh
ZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3Jp
Z2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVR5cGVzOwogICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVy
LmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihkYXRh
QnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIGlmIChjdXN0b21EYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGN1
c3RvbURhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRvbVR5cGVzLmFk
ZCh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
aW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNj
M2VhZDFlMDcxYjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dS
ZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBb
cmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYg
KHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9w
cmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRm
YWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNs
aWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBh
aXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcw
Mi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERh
dGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0
YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFj
YjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2Vh
N2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4
YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhj
NWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBs
eShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVm
MWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQy
MDcyNTYwMDY5MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2Njhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF8KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEuY29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uYTBkNDk2YmU5YmJhOGY3ZWE3NjYwYWIwOWI0ZjQ3MWFl
YWY4NGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODQsOSBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIu
c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVE
YXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBA
IC0xNDIsOSArMTQxLDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnUKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZl
ciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSAsIHN0YXRpY19jYXN0
PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1ZTU2MThkNDMy
NDU1MDgyZjVkYTE4OGFiZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1M2M0NTJiN2U0
MzI0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDYw
YzIwN2VkMGVlYTgzNmI0ODcwZGRhN2M2YmIzMGExNDU0Y2E0OTcuLmMyNGU0YTk3NGE4ODJkZmM1
NDQ1ZmFiODY4NzM2MWFmN2YyYzI5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcKIAogICAgIElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRCdWZmZXIocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlcjo6UmVwbHkoZGF0YSksIDApOwotICAg
IHJldHVybiBkYXRhLmJ1ZmZlcigpOworICAgIHJldHVybiBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIo
KTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4
OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUuLmEzMzkxYmM3MGVkN2I4OTNk
YmE5NmM5YzNkODhjZDQwZTgxOWY0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiVGV4
dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3Ry
aW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAog
I2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2Fs
bGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcgKzM4MjUsNyBAQCBzdGF0aWMgRnJhbWUq
IGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBj
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2Vs
ZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAjZW5kaWYKIAotICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAg
ICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0
YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCi0gICAg
Y2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCkBAIC0zODU5LDcgKzM4NTks
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODcxLDEwICszODcxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICAgICAgfQogICAgIH0KIAotICAgIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJl
bmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAogc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcgKzM4ODcsNyBAQCBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICszODk1LDEwIEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1l
KGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0KIAotICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0g
ICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVm
ZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM5MTQsMTIg
KzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwor
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91
dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludElu
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcsNyArNTQ5MSw3IEBAIHZv
aWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwogICAgIGZyYW1l
Vmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CiAKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NTUx
LDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUHJpbnRDb250ZXh0
QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJ
bmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxsYmFjayh7IENGRGF0YUdl
dEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjk5Miw3ICs2OTg2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICgh
ZG9jdW1lbnRMb2FkZXIpCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5k
bGVySQogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQ
cm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAot
ICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZm
ZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7Cisg
ICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmNvbnRp
Z3VvdXNCdWZmZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBs
ZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6Omlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5j
bG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVM
YXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZp
bGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNobWVudC0+dXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkp
OworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRl
bnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9CiAgICAgY2Fs
bGJhY2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA0ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4wYTgyNzA5YWMz
ZmEzNTdiMTc0MjM4OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJsaWM6CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9Q
REYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0x
MDIzLDcgKzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4m
Jik7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlm
CiAKQEAgLTE2ODMsMTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRz
QXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2
b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+
JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMi4uMTRk
MWM2NzM0YjIyYjMyZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTIs
MTUgKzIxMiwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNB
dHRyaWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJl
c3VsdCkgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0Fz
TUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3lu
YworICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291
cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5n
IHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZy
b21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNl
VVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5
bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcg
c3RyaW5nKSBBc3luYwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChT
dHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCisgICAgR2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0
V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkg
LT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVmZXJlbmNlKSBB
c3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMpIEFzeW5jCiAKQEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50
aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1Rv
UERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFn
ZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNo
cm9ub3VzCi0gICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGaU9TKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEp
IEFzeW5jCiAjZW5kaWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRp
ZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMKICAgICBTZXRV
c2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChT
dHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmlu
ZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5j
CisgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBm
aWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkg
QXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLjcwY2QwNmM2
ZTExMDNlNjM2MzAxNzBjNGNhMWZjYjAwZTgwNmE2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJv
eFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIKICNpbXBv
cnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFwSGFuZGxpbmdS
ZXN1bHQuaCIKQEAgLTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZp
T1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHIK
ICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBz
bmFwc2hvdFNpemUsIDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92
ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKLSAgICAgICAg
cmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBseShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1Bh
Z2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBwZGZQYWdlRGF0
YSk7Ci0gICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFn
ZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSk7CisgICAg
cmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsKIAogICAgIGVu
ZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAx
NGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2IyZDg4NWNmMzNjLi5iMDMyY2M3MzhhNDBmZDI5
OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJD
b3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTU1MSw3ICs1NTEsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBv
bmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBj
b25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5
M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFkOTBkOTJmZS4uNDJkNzVhMzk0YTljZDI3ZDQ0
ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5OSw3ICsxOTksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZWdpc3RyYXRpb25EYXRhKQorICAgIENvbnN1
bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlZ2lz
dHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVj
dCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4MTZhYmUxODE3
MDQ1YS4uYzJiNzI5Y2ZiYTg4OWQyZDc4MDgxOTViZDhhZTczNjg4YmFhMDVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpAQCAtMTI0OCwxNiArMTI0OSwxNiBAQCB2b2lk
IFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vz
czo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIHVzaW5n
IG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3
b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29t
cG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwotICAgIGlmICghcmVnaXN0cmF0aW9u
cykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbnMgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0VyciAhPSBlcnIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448574</attachid>
            <date>2022-01-07 02:11:43 -0800</date>
            <delta_ts>2022-01-07 04:51:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107211141.patch</filename>
            <type>text/plain</type>
            <size>99174</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA2YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4xOTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFl
ZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcxMmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVk
aWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1l
SW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFW
Rk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFW
QXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAz
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFn
ZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rl
ckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1
bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURl
Y29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6
OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBl
eHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNi
MzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVkZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVm
MjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYyLDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsK
IH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4
ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5k
ZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYx
YzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIz
YzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1
MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQwYTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hh
ciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9
IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnkocmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0
YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDVi
ODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUw
MjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMz
MGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMzMmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VE
ZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlm
YjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNkY2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5
YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3
ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2Ni
MjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBH
SUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQy
MzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUxOGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRp
b25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4u
MTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhlNjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
CmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5
MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29k
ZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
aWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3
MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4
YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VE
ZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4
NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJhZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFk
ODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYsOSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVy
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZp
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFP
cHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVk
KTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShk
YXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYg
KCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNpemUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
CiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0
KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsK
IAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUxZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3
YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdlNmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERh
dGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6
Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41
MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUzNjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2Rl
cihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3lu
Y2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNU
cmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwogICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91
cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2
M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNv
bnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlm
ICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVf
dCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAg
ICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgs
NyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQwogCiAgICAgZGVzdGluYXRpb25VUkwg
PSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwogCi0gICAgY29tcGxldGlvbihjb252ZXJ0VG9P
cHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUp
OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpA
QCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBkYXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1
Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2Fn
ZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAotICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5
c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNo
YXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlG
b3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
YWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sm
JiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOworICAgIGNvbXBsZXRpb24oY29u
dmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50
OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5k
TWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0
aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1l
c3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9u
VVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJhYzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNl
OTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcAppbmRleCA4YzhkYzM2YjFlNTM5MzhmODFlYjRhYmFhZmYwMTkwZjJi
NTRlZGJmLi5kZjYxNGEzMjU5MzIxNzJjMGU1MjYzNzRlMTA0ZmE4NDYzYjc0MGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCkBAIC0xODEsNyArMTgx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93
bmxvYWRGaWxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91
c0RhdGEgPSBkYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKTsKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCksIGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKGJ5dGVzV3JpdHRl
biAhPSBkYXRhLnNpemUoKSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJiMDliODlh
ODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYyYmI1MWU4
MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBlZGVmIHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7CiB9Owog
Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
aW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVzaW5nIFR5
cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+CiBzdHJ1
Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2Mw
ZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uNmM4MWFmNjkwNjgyNjlmNjc0Yjc5YjcyNzA5
NWYwOTQ3N2JhZTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCkBA
IC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgU2hhcmVk
QnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgdWludDY0
X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0gICAgZW5j
b2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAgIGVuY29k
ZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJldHVybjsK
LSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyOworICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAppbmRleCA1N2IxNDZlNThlN2E5ZGE3MDI2YzlkZWU1MjAzOTU1MWFkYWI3MWQ5Li40NTI2NGMw
MDMzNGJlNDIzYmI1NGNlZjhjNGU0ODRhZTQ2MmU1ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yNCw3ICsyNCw2IEBACiAgKi8KIAog
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgotLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKIApAQCAtNDAsMjEgKzM5LDIyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewog
cHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVy
Q29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PigpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250
aWd1b3VzKCkpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtl
Q29udGlndW91cygpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmYnVmZmVyKSkgeyB9CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlcjsgfQorICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYWZlQnVm
ZmVyKCkgY29uc3Q7CiAKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQorICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KIApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY1ODQz
MmFkYjZhNjM4MzE0ZTExODhmY2VmYWJhYjVhNjUyYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiRW5jb2Rlci5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotdm9pZCBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBpZiAo
bV9kYXRhLmVtcHR5KCkpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKGVuY29k
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFidWZmZXIoKSk7Ci0g
ICAgZW5jb2RlciA8PCBtX2RhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4
MGEyNGZlNzM1NzBkM2Y1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgotCi1uYW1lc3BhY2UgSVBDIHsKLQotY2xhc3MgRW5jb2RlcjsKLQotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHByaXZhdGUgU2hhcmVkQnVmZmVyQ29weSB7
Ci1wdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLSAg
ICB1c2luZyBTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5OwotCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgICAgIDogbV9kYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
IHsgfQotCi0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIC8vIFVzZSBJUEM6
OkRhdGFSZWZlcmVuY2UgdG8gZGVjb2RlLgotCi1wcml2YXRlOgotICAgIERhdGFSZWZlcmVuY2Ug
bV9kYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA1YzNkMmVlMTI1YjhiY2I5OWViYWU0M2E1OGU4YWU0OGJm
YTAxYjhkLi44YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTE0MCwxNCArMTQwLDYgQEAg
ZGVmIGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29u
c3QgJXMmJyAlIHR5cGUKIAogCi1kZWYgcmVwbHlfdHlwZSh0eXBlKToKLSAgICBpZiB0eXBlID09
ICdJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UnOgotICAgICAgICByZXR1cm4gJ0lQQzo6
RGF0YVJlZmVyZW5jZScKLSAgICBpZiB0eXBlID09ICdzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4nOgotICAgICAgICByZXR1cm4gJ3N0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPicKLSAgICByZXR1cm4gdHlwZQotCi0KIGRlZiByZXBseV9wYXJhbWV0
ZXJfdHlwZSh0eXBlKToKICAgICByZXR1cm4gJyVzJicgJSB0eXBlCiAKQEAgLTE2NSw3ICsxNTcs
NyBAQCBkZWYgcmVwbHlfdHVwbGUobWVzc2FnZSk6CiAKIAogZGVmIHJlcGx5X2FyZ3VtZW50c190
eXBlKG1lc3NhZ2UpOgotICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihy
ZXBseV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycykpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHBh
cmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkK
IAogCiBkZWYgbWVzc2FnZV90b19yZXBseV9mb3J3YXJkX2RlY2xhcmF0aW9uKG1lc3NhZ2UpOgpA
QCAtMjA3LDcgKzE5OSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgIHNlbmRfcGFyYW1ldGVycyA9IFsoZnVuY3Rpb25fcGFy
YW1ldGVyX3R5cGUoeC50eXBlLCB4LmtpbmQpLCB4Lm5hbWUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10KICAgICAgICAgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMgPSAn
JXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNdKQog
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgIG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUo
eC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAg
IG1vdmVfcGFyYW1ldGVycyA9ICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCVzKT4mJik7XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsg
cmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OiVzXyVzUmVwbHk7IH1cbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKQEAgLTEwNzcsMTAgKzEwNjksMTAgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
I2lmICVzXG5cbicgJSBtZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBl
KHgudHlwZSkpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAg
ICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlw
ZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlvbmFsPCVz
PiAlcztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtMTA4OCw3ICsxMDgwLDcg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9p
bih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9w
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBD
OjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsg
Jz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKaW5kZXggNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZi4uNTdi
YzgzOGY5NzkxZGFkYjk4NTA4ZWMxNDhjMmVlNzJkZTljNDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlYTU5ZjA4OTE2ZGQ3M2U3Mjc3OGI3OGRlZTk2NzA3
MTE4NTQ4NWViLi40NWVjZTUxYTUwMzY2ZGEzNGZmOTBlOTFkNTdlNWE4OGUyZGI4ODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI2
LDEwICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CkBAIC04NSw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlt
aW5nRnVuY3Rpb24uaD4KQEAgLTEwMyw3ICsxMDIsNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkdlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAgLTI5ODAsNyArMjk3OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCiB7Ci0gICAgZW5jb2RlciA8
PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IGRhdGEuZGF0YTsKIH0KIAogc3RkOjpvcHRpb25h
bDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI5
OTMsMTEgKzI5OTEsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA2Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2Zj
Mzk3Li40NDU3MzEwOWFlMzMyM2Q2OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTIwMSw3ICsyMDEsNiBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2
Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJhYjJmOGM0MTI4Y2JiZThjLi5iZjFiNDhkZDk2ZTI0MTBkYmM0
YWUzZTU5OWJjMTE5YjAyOTI5MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVh
dGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJh
dGlvbiBjb21wbGUKICAgICBpZiAocGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCkpCiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0
UmVjdChwZGZDb25maWd1cmF0aW9uLnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFt
ZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZE
YXRhLmVtcHR5KCkpIHsKKyAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwg
W2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93
bikuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
Y29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNE
YXRhICopZGF0YS5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZj
ZjAwNGNkMGQ1N2I1ZWEzODZiNWNiMjMzYjMwYS4uN2M5NDAyOTYwYWU3ZDA2NzY2MmJiNDYxNGFh
ZGU0MTFjZTgzZWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93
c2luZ1NQSS5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hh
cmVkQnVmZmVyQ29weS5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2ltcG9ydCAiU3luYXBzZVNQSS5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMjY5LDcgKzI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsCiAgICAgaWYgKGJ1ZmZlckNvcHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbcGFnZUNsaWVudCgpLmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXJDb3B5LmJ1
ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gZmlsZVdyYXBwZXIgPSBh
ZG9wdE5TKFtwYWdlQ2xpZW50KCkuYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlckNvcHkuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpw
cmVmZXJyZWRGaWxlTmFtZV07CiAgICAgYXR0YWNobWVudC0+c2V0RmlsZVdyYXBwZXIoZmlsZVdy
YXBwZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5
ZDUzMWJjOGFjMGE1NGMzLi4xNzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2lt
cG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0j
aW1wb3J0ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tUeXBlUmVmV3JhcHBlci5oIgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCBhZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40YTlkZDIz
NmQ4YzUyMjgxYThlYzI4YjExYWU3ZmY4MDRlMDVjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRl
ICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmgiCkBAIC00Mzk1LDEwICs0Mzk0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRh
KT4gdG9BUElEYXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4m
JiBjYWxsYmFjaykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0
YSA/IEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6
IG51bGxwdHIpOworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gU2hhcmVkQnVmZmVyQ29w
eSByZXR1cm5lZCBvdmVyIElQQyBhcmUgYWx3YXlzIGNvbnRpZ3VvdXM7IHRoaXMgaXMgYSBuby1v
cC4KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPmNvbnRpZ3VvdXNCdWZmZXIo
KTsKKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgY29udGlndW91c0RhdGEtPnNpemUoKSkucHRyKCkpOwogICAgIH07CiB9CiAKQEAgLTg5
OTAsNyArODk5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpAQCAtOTg4MSw4
ICs5ODg2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgbG9hZElkZW50aWZpZXIpLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25E
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGlj
b25EYXRhKS5nZXQoKSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBp
Y29uRGF0YS5jb250aWd1b3VzQnVmZmVyKCk7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRh
dGE6OmNyZWF0ZShjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBjb250aWd1b3VzRGF0YS0+c2l6ZSgp
KS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMTAxMTUsMTEgKzEwMTIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiBhdHRhY2htZW50LCBDb21wbGV0aW8KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LmVuY2xvc2luZ0ltYWdlRGF0YSgpKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAq
ZGF0YSB9OwotCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVu
dC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2ht
ZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSkpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uMmVjZTYxZTJiY2JmNDE1YzU3
ZDU4ZDcwZWJkMzMzMmZkODQ3ZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJv
eHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94
eUd0ay5jcHAKaW5kZXggOTFmZGZjODQzN2FhNTc3MGViYjkyMTZiMzcxYjMyYjJiYWQ4MmEyNS4u
NjdhM2JiMzM1ZjY3Y2NiZDZjYjBhODI0YmY4MjFiOTE4MDI2MTk5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFMKICAgICBjbGlwYm9hcmQucmVh
ZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3Jp
Z2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVR5cGVzOwogICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVy
LmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7CisgICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihkYXRh
QnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIGlmIChjdXN0b21EYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGN1
c3RvbURhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRvbVR5cGVzLmFk
ZCh0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
aW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uZGQwZDY2OWNj
M2VhZDFlMDcxYjg3Yzc4NzUzNzg1MGM5Y2U5ZjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dS
ZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBb
cmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYg
KHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmNvbnRpZ3VvdXNCdWZmZXIoKS0+Y3JlYXRlQ0ZE
YXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9w
cmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRm
YWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25p
ZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNs
aWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFw
KHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBh
aXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcw
Mi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6
ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1h
Z2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERh
dGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0
YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxs
RGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFj
YjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2Vh
N2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4
YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTliNDQxNGMyMjVjZDU2ODhj
NWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBs
eShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5jZmU0NmQ0ZWI1OGI0MDVm
MWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQy
MDcyNTYwMDY5MTE4NjA2Li5lYmQwODVlYWM5M2Y0ZTMyZDRiZWUzOGI4N2Q4NjUzMmRkZjM2Njhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF8KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEu
YnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVy
Y2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5jb250aWd1b3VzQnVm
ZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CkBAIC0yMTgsOCArMjE4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGRhdGEuY29udGlndW91c0J1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYx
YTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uNTg4ZDg1OTBhNGE5ZTIwNmIxZGVkOGNlMjc2ZjQ0ODNi
Y2VjNzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFz
a01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGVkNGY1ZGU5ZDVl
NTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMuLjRiNmIzNDg1N2U3OGU1NmY1MjZiY2Y2NDUz
YzQ1MmI3ZTQzMjRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDIs
NyArNDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJV
c2VyRGF0YS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggNjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5Ny4uYzI0ZTRhOTc0
YTg4MmRmYzU0NDVmYWI4Njg3MzYxYWY3ZjJjMjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZwog
CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlcihwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyOjpSZXBseShkYXRhKSwg
MCk7Ci0gICAgcmV0dXJuIGRhdGEuYnVmZmVyKCk7CisgICAgcmV0dXJuIGRhdGEuY29udGlndW91
c0J1ZmZlcigpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb0NsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZjg5ZmY3MmEwZDMxYmVjMTFlZjgwMjk3ZWZiYTkyYzJhN2JjNjZiNS4uYTMzOTFiYzcw
ZWQ3Yjg5M2RiYTk2YzljM2Q4OGNkNDBlODE5ZjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlICJT
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAj
aW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNs
dWRlICJUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmgiCkBAIC0zODA1LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRl
bnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hp
bAogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRN
TERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
KT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsYmFjayh7IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEobV9wYWdlLmdldCgpKSB9KTsKIH0KQEAgLTM4MjUsNyArMzgyNSw3IEBAIHN0YXRp
YyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNl
PiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM4MzMsMTIgKzM4MzMsMTIgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHQKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICNlbmRpZgog
Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEp
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSks
IHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAg
ICAgICBkYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5k
aWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRhQnVmZmVy
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKQEAgLTM4NTks
NyArMzg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgY2FsbGJhY2socmVzdWx0
U3RyaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4NzEsMTAgKzM4NzEs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgICAgICB9CiAgICAgfQogCi0gICAgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKHsgV1RGTW92ZShidWZmZXIpIH0pOwogfQogCiBz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1l
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKQEAgLTM4OTAsNyArMzg4Nyw3
IEBAIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0
YSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
VVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4OTgsMTMgKzM4OTUsMTAg
QEAgdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgfQogCi0gICAg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKHsgV1RGTW92ZShidWZmZXIpIH0pOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAt
MzkxNCwxMiArMzkwOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2U7CisgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0
YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsK
KyAgICBjYWxsYmFjayhkYXRhQnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFp
bnRXaXRob3V0Q2FsbGJhY2soKQpAQCAtNTQ3Miw3ICs1NDY2LDcgQEAgdm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW4KIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3VG9Q
REYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpOwogICAgIEludFNpemUgc25hcHNob3RTaXplOwpAQCAtNTQ5Nyw3ICs1NDkx
LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYKICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmll
d3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7CiAg
ICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsKIAot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRy
KHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTU1NTEsMTIgKzU1NDUsMTIgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICBjb21w
bGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERG
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpkcmF3UGFn
ZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBQcmlu
dENvbnRleHRBY2Nlc3NTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgUmV0YWluUHRyPENGTXV0
YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlE
LCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwotICAgIGNhbGxiYWNrKHsg
Q0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
Q0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSk7CisgICAgY2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCkBAIC02OTkyLDcgKzY5ODYsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2Fk
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBkb2N1bWVudExvYWRl
ciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKQEAgLTcwNjIsNyArNzA1Niw3IEBAIHZvaWQgV2ViUGFn
ZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlm
aWVyIGhhbmRsZXJJCiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1l
SGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRs
ZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBk
YXRhLmJ1ZmZlcigpID8gKmRhdGEuYnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdl
dCgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRh
dGEuY29udGlndW91c0J1ZmZlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNr
RGlkQ29tcGxldGUoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC03Mjg3LDEyICs3MjgxLDEyIEBAIHZvaWQgV2Vi
UGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+CiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5n
SW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRo
SWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgp
LnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdU
Rk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRhY2ht
ZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEu
c2l6ZSgpKSk7CisgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERh
dGEoY29udGVudFR5cGUsIGVuY2xvc2luZ0ltYWdlRGF0YS5zYWZlQnVmZmVyKCkpOwogICAgIH0K
ICAgICBjYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkuLjBh
ODI3MDlhYzNmYTM1N2IxNzQyMzg4ZTgyODZiMmMwMGU2NDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHB1Ymxp
YzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3
UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmKT4mJik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlm
CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdUb1BERmlPUyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJik7CiAjZW5kaWYKIAotICAgIHZv
aWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYpOwpAQCAtMTI1OCw3ICsxMjU4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29s
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBA
IC0xMzA4LDcgKzEzMDgsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7
CiAjZW5kaWYKIApAQCAtMTY4MywxNSArMTY4MywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1M
KQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKKyAg
ICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lk
IGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CisgICAgdm9pZCBnZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29u
dGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCBiZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJi
ZTEyLi4xNGQxYzY3MzRiMjJiMzJlOTI1NzQwN2Y1N2IxYzRhYmIwZmU0NDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTIxMiwxNSArMjEyLDE1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRT
dHJpbmcgcmVzdWx0KSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENv
bnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGEpIEFzeW5jCisgICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAg
R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBidWZmZXIpIEFzeW5jCisgICAgR2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcg
cmVzb3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVm
ZmVyKSBBc3luYwogICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4g
KFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMK
KyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMK
LSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBB
c3luYworICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGFSZWZl
cmVuY2UpIEFzeW5jCiAKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3Ry
dWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0
OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4gZGV0YWlscykgQXN5bmMKIApAQCAtNDEzLDEyICs0MTMsMTIgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2lu
KSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkg
LT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJh
d1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkg
LT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAgIERyYXdQYWdlc1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3Vu
dCkgU3luY2hyb25vdXMKLSAgICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdl
Q291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREZp
T1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50
SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgZGF0YSkgQXN5bmMKICNlbmRpZgotICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+
IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiByZWN0KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKICNp
ZiBQTEFURk9STShHVEspCiAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+
IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKSBBc3luYwpAQCAtNTUwLDcgKzU1MCw3IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGljb25EYXRhKSBBc3luYworICAgIERpZEdl
dExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxv
YWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGljb25EYXRhKSBBc3luYwog
ICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAK
ICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTU3MSw3ICs1NzEsNyBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRh
Y2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6
ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAg
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFt
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4g
KCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwg
U3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRh
KSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVy
LCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMDZkNTVmMTA4N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4u
NzBjZDA2YzZlMTEwM2U2MzYzMDE3MGM0Y2ExZmNiMDBlODA2YTZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzLDYg
KzQzLDcgQEAKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0
ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIlNoYXJlZE1lbW9yeS5o
IgogI2ltcG9ydCAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW1wb3J0ICJUYXBI
YW5kbGluZ1Jlc3VsdC5oIgpAQCAtNDI0NCwxMyArNDI0NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRy
YXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcgogICAgICAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hv
dFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CiAKICAgICAgICAgZnJhbWVWaWV3LnNldExheW91dFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwot
ICAgICAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRh
LmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHJlcGx5
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRhdGEuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAg
ICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBk
ZlBhZ2VEYXRhKTsKLSAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0
cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkp
KTsKKyAgICByZXBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkpOwog
CiAgICAgZW5kUHJpbnRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDE0Y2RmNzUxNWM2MmM0NWRhYjlmOWRiODE2ZmRjYjJkODg1Y2YzM2MuLmIwMzJjYzcz
OGE0MGZkMjk4ZjBlMDI2OGZhMjlkN2U1NGQ1MDI0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBPYmplY3Q7CiB9CiAKIG5hbWVz
cGFjZSBJUEMgewotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtNTUxLDcgKzU1MSw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgY29uc3VtZUF1
ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAg
ICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA3NDkzYzNmOGY0NjUxZGRmYmQ1MDQxMWU3ZTIwNTY2YWQ5MGQ5MmZlLi40MmQ3NWEzOTRh
OWNkMjdkNDQ4OTRkN2Y5NTlhMDIxMDAxZDc2MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTk5LDcgKzE5OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJh
dGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlZ2lzdHJhdGlvbkRhdGEpCisg
ICAgQ29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgcmVnaXN0cmF0aW9uRGF0YSkKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNEaWRDaGFu
Z2Uoc3RydWN0IFdlYktpdDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liaWxpdHlQ
cmVmZXJlbmNlcykKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBkZjFmOGNmYjEwYjI3ZTYxMjk4NTdkY2E5ZDgx
NmFiZTE4MTcwNDVhLi5jMmI3MjljZmJhODg5ZDJkNzgwODE5NWJkOGFlNzM2ODhiYWEwNWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNpbXBv
cnQgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQVBJ
Q2FzdC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCkBAIC0xMjQ4LDE2ICsxMjQ5LDE2
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtRGlkV2FrZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9u
ZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogICAgIGlmICghUEFMOjppc0F1ZGlvVG9vbGJveENv
cmVGcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0F1ZGlvVG9vbGJveENvcmVf
QXVkaW9Db21wb25lbnRBcHBseVNlcnZlclJlZ2lzdHJhdGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byByZWdpc3RyYXRpb25zID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFyZWdp
c3RyYXRpb25zKQorICAgIGlmICghZGF0YS5idWZmZXIoKSkKICAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVnaXN0cmF0aW9ucyA9IGRhdGEuY29udGlndW91c0J1ZmZlcigpLT5jcmVhdGVDRkRh
dGEoKTsKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25lbnRBcHBseVNlcnZlclJlZ2lzdHJh
dGlvbnMocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgaWYgKG5vRXJyICE9IGVycikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448580</attachid>
            <date>2022-01-07 04:52:07 -0800</date>
            <delta_ts>2022-01-07 04:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107235204.patch</filename>
            <type>text/plain</type>
            <size>97683</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAxNzc1MDZjZjA0NzBmZTM1Y2M5YzJiNGI2ZmNkYmY5
YjQyYTE5MThlLi5jYWVmM2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtMzg1LDMgKzM4Niw3IEBAIHByaXZhdGU6CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0NvbnRpZ3VvdXMoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaAppbmRleCA2YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4x
OTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFlZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4
IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcx
MmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIElt
YWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJ
bWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpD
PiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlz
QWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZl
ZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2so
KTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMw
NjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3
ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBp
dGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFn
ZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6
OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9u
IG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5
cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBS
ZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1l
VHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBA
IC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdl
dCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVk
ZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVmMjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYy
LDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZElt
YWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTEx
NDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3
ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4
YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYxYzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTks
NyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERh
dGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNl
ZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJh
NDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5
OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQw
YTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVE
KGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnko
cmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAo
IVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5k
ZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0
MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4
OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUwMjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5
ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVu
Y29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
Zjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMz
MmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBC
TVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApp
bmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNk
Y2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJt
cCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFs
OwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2Fy
ZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxs
eSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3
NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2NiMjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJ
bWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYg
KGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
Yzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUx
OGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7
IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjli
ODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4uMTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhl
NjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VE
ZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4
YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMx
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAg
dm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIz
OTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VE
ZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0g
ZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2
MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkg
b3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJh
ZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFkODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0
Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYs
OSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVj
b2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShkYXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdu
b3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdl
RGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYgKCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3
IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNp
emUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpCiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVu
dGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0K
IAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291
bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3Vu
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBp
ZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEw
Myw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURl
Y29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rl
ci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
LCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVC
dWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdl
RGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUx
ZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdl
NmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsy
Nyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikK
IAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNs
dWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYs
MTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsK
KyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZv
aWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpG
cmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0
ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUz
NjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NF
VFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVm
Q291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2RlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURl
Y29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikg
U3luY2hyb25vdXMKICAgICBEZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVu
dFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNv
cmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwog
ICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4
NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2
OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBz
dGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7
Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVm
ZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZm
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxT
aGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBj
aGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciop
YXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2Fs
bGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgsNyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IElQQwogCiAgICAgZGVzdGluYXRpb25VUkwgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwog
Ci0gICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVz
dCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRp
b24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9u
VVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBk
YXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVw
ZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAot
ICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uo
bmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3Vj
Y2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNoYXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9y
Q29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlk
KQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQs
IENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRp
b24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtl
eUlkKSkpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0
Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGlu
YXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAg
ICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFS
ZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29k
ZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJh
YzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNlOTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5
MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJi
MDliODlhODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYy
YmI1MWU4MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oCkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBl
ZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7
CiB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVz
aW5nIFR5cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+
CiBzdHJ1Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUz
MGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uODk5MDFiMGVmZWY4ZjY2MzJhYzRi
ZWY0NDY1NGI0YTY2MzcwMWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJDb3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5o
IgogCkBAIC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQg
U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
dWludDY0X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0g
ICAgZW5jb2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAg
IGVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50
LnNlZ21lbnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJDb3B5OjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8U2hhcmVk
QnVmZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXgg
NTdiMTQ2ZTU4ZTdhOWRhNzAyNmM5ZGVlNTIwMzk1NTFhZGFiNzFkOS4uYTdiMGRkZTJhZjY0ZGI5
YzhiZTM1OGZlYzRlZjdiZjg1YTllZWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjQsNyArMjQsNiBAQAogICovCiAKIC8vIEVuY29k
ZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9m
IHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLS8vIFRv
IGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBvbmNl
CiAKQEAgLTQwLDI5ICszOSwzMCBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoK
ICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9
Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9Ci0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gb25seSBiZSB1c2Vk
IG9uIHRoZSByZWNlaXZlcidzIElQQyBzaWRlLC4KKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLmdldCgpKTsgfQorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHNhZmVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IGJ1ZmZlcigpLnJlbGVhc2VO
b25OdWxsKCkgOiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc2NTg0MzJhZGI2YTYzODMx
NGUxMTg4ZmNlZmFiYWI1YTY1MmI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkVuY29k
ZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZGF0YS5lbXB0
eSgpKSB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShlbmNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghYnVmZmVyKCkpOwotICAgIGVuY29kZXIg
PDwgbV9kYXRhOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcw
ZDNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBFbmNvZGVzIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQg
YXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHku
aCIKLQotbmFtZXNwYWNlIElQQyB7Ci0KLWNsYXNzIEVuY29kZXI7Ci0KLWNsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgOiBwcml2YXRlIFNoYXJlZEJ1ZmZlckNvcHkgewotcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdXNpbmcgU2hh
cmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weTsKLQotICAgIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UoRGF0YVJlZmVyZW5jZSBkYXRhKQotICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhLCBzaXplKSB7IH0KLQotICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAvLyBVc2UgSVBDOjpEYXRhUmVmZXJl
bmNlIHRvIGRlY29kZS4KLQotcHJpdmF0ZToKLSAgICBEYXRhUmVmZXJlbmNlIG1fZGF0YTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggNWMzZDJlZTEyNWI4YmNiOTllYmFlNDNhNThlOGFlNDhiZmEwMWI4ZC4uOGI1
MjFmNzcwMTU0OGIxYWY4YjQ0YjM1Mzc0NjM3NjljOTBkZjk4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xNDAsMTQgKzE0MCw2IEBAIGRlZiBmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSh0eXBlLCBraW5kKToKICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSB0
eXBlCiAKIAotZGVmIHJlcGx5X3R5cGUodHlwZSk6Ci0gICAgaWYgdHlwZSA9PSAnSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJzoKLSAgICAgICAgcmV0dXJuICdJUEM6OkRhdGFSZWZlcmVu
Y2UnCi0gICAgaWYgdHlwZSA9PSAnc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+JzoKLSAgICAgICAgcmV0dXJuICdzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4nCi0gICAgcmV0dXJuIHR5cGUKLQotCiBkZWYgcmVwbHlfcGFyYW1ldGVyX3R5cGUodHlw
ZSk6CiAgICAgcmV0dXJuICclcyYnICUgdHlwZQogCkBAIC0xNjUsNyArMTU3LDcgQEAgZGVmIHJl
cGx5X3R1cGxlKG1lc3NhZ2UpOgogCiAKIGRlZiByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KToKLSAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocmVwbHlfdHlwZShw
YXJhbWV0ZXIudHlwZSkgZm9yIHBhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMp
KQorICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihwYXJhbWV0ZXIudHlw
ZSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpCiAKIAogZGVmIG1l
c3NhZ2VfdG9fcmVwbHlfZm9yd2FyZF9kZWNsYXJhdGlvbihtZXNzYWdlKToKQEAgLTIwNyw3ICsx
OTksNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3Nh
Z2UpOgogICAgICAgICBzZW5kX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBl
KHgudHlwZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRl
cnNdCiAgICAgICAgIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzID0gJyVzJyAlICcsICcu
am9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkKICAgICAgICAgaWYg
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICBtb3Zl
X3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBlKHgudHlwZSkpIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAgICBtb3ZlX3BhcmFt
ZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZv
aWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYm
KTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
c3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xu
JyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2Uu
bmFtZSkpCkBAIC0xMDc3LDEwICsxMDY5LDEwIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4n
ICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9
IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgICAgIG1vdmVf
cGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVf
cGFyYW1ldGVycykKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlv
bmFsPCVzPiAlcztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4nICUg
KHgudHlwZSwgeC5uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGRlY29kZXIgPj4gJXM7XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbiAg
ICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpO1xuICAgICAgICBy
ZXR1cm47XG4gICAgfVxuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgY29tcGxldGlvbkhhbmRsZXIoJykKQEAgLTEwODgsNyArMTA4MCw3IEBAIGRlZiBnZW5l
cmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3ZlKConLmpvaW4oeC5uYW1lIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9p
ZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAlIG1vdmVfcGFyYW1ldGVycykK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQQzo6QXN5bmNSZXBs
eUVycm9yPCcgKyByZXBseV90eXBlKHgudHlwZSkgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHgudHlwZSArICc+OjpjcmVhdGUo
KScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmluZGV4
IDY4Y2VjNjYyMmI2MDhiNjdlOTliYjljMjk5YmExZjE2OGY1ZGJmMWYuLjU3YmM4MzhmOTc5MWRh
ZGI5ODUwOGVjMTQ4YzJlZTcyZGU5YzQwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtMzAsNyArMzAs
NiBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZWE1OWYwODkxNmRkNzNlNzI3NzhiNzhkZWU5NjcwNzExODU0ODVlYi4u
NDVlY2U1MWE1MDM2NmRhMzRmZjkwZTkxZDU3ZTVhODhlMmRiODg1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNiwxMCArMjYsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oPgpAQCAtODUsNiArODMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZURhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9u
Lmg+CkBAIC0xMDMsNyArMTAyLDYgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25HZW9tZXRyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0yOTgwLDcgKzI5NzgsNyBAQCBzdGQ6Om9w
dGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVj
b2RlKERlY29kZXImIGRlYwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhJiBkYXRhKQogewotICAgIGVuY29kZXIgPDwgZGF0YS5pZGVu
dGlmaWVyIDw8IGRhdGEubWltZVR5cGUgPDwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IHsgZGF0YS5kYXRhLmdldCgpIH07CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50aWZpZXIgPDwg
ZGF0YS5taW1lVHlwZSA8PCBkYXRhLmRhdGE7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT46OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTkzLDExICsyOTkx
LDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUo
aWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBidWZmZXIucmVsZWFzZU5vbk51bGwo
KSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KaW5kZXggOTIwZGUwMGJiNjg2
MjAyYjZjMWQ2NGZhYWQ3MTIzNTljMTYwMjc4Zi4uNGFjZmM2MTc2MzIxNDY3OTBkZjFjMzk2YmM4
ZmQ4NDU0NzQ5NTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2
ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0
b3J5Lm1tCkBAIC00MzEsOCArNDMxLDggQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG8KICAgICAg
ICAgcmF3UGxhdGZvcm1EZWx0YSA9IHsgV2ViQ29yZTo6RmxvYXRTaXplKC1JT0hJREV2ZW50R2V0
RmxvYXRWYWx1ZShpb0hJREV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxkU2Nyb2xsWCksIC1J
T0hJREV2ZW50R2V0RmxvYXRWYWx1ZShpb0hJREV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxk
U2Nyb2xsWSkpIH07CiAKICNpZiBIQVZFKFBMQVRGT1JNX1NDUk9MTF9NT01FTlRVTV9JTlRFUlJV
UFRJT05fUkVBU09OKQotICAgICAgICBib29sIG1vbWVudHVtV2FzSW50ZXJydXB0ZWQgPSBJT0hJ
REV2ZW50R2V0U2Nyb2xsTW9tZW50dW0oaW9ISURFdmVudC5nZXQoKSkgJiBrSU9ISURFdmVudFNj
cm9sbE1vbWVudHVtSW50ZXJydXB0ZWQ7Ci0gICAgICAgIG1vbWVudHVtRW5kVHlwZSA9IG1vbWVu
dHVtV2FzSW50ZXJydXB0ZWQgPyBXZWJXaGVlbEV2ZW50OjpNb21lbnR1bUVuZFR5cGU6OkludGVy
cnVwdGVkIDogV2ViV2hlZWxFdmVudDo6TW9tZW50dW1FbmRUeXBlOjpOYXR1cmFsOworLy8gICAg
ICAgIGJvb2wgbW9tZW50dW1XYXNJbnRlcnJ1cHRlZCA9IElPSElERXZlbnRHZXRTY3JvbGxNb21l
bnR1bShpb0hJREV2ZW50LmdldCgpKSAmIGtJT0hJREV2ZW50U2Nyb2xsTW9tZW50dW1JbnRlcnJ1
cHRlZDsKKy8vICAgICAgICBtb21lbnR1bUVuZFR5cGUgPSBtb21lbnR1bVdhc0ludGVycnVwdGVk
ID8gV2ViV2hlZWxFdmVudDo6TW9tZW50dW1FbmRUeXBlOjpJbnRlcnJ1cHRlZCA6IFdlYldoZWVs
RXZlbnQ6Ok1vbWVudHVtRW5kVHlwZTo6TmF0dXJhbDsKICNlbmRpZgogICAgIH0pKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDY3OTYzNzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjQ0
NTczMTA5YWUzMzIzZDY5ZTAyMjdiZDdhYTQxNWEzY2I4NzkzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MjAxLDcgKzIwMSw2IEBAIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAog
UGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmNwcAogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCi1QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3Bw
CiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUyZDYzOTVmMDA2
M2I2YTljY2IwNjA0YmFiMmY4YzQxMjhjYmJlOGMuLjIxYzA5YWM1MjI4NWM5NDI1MTIxOGVlYWY4
OWYwY2IzZDRlZjc0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTY0MiwxMyArMTY0MiwxMyBAQCAtICh2b2lkKWNyZWF0ZVBERldp
dGhDb25maWd1cmF0aW9uOihXS1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNv
bXBsZQogICAgIGlmIChwZGZDb25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmln
dXJhdGlvbi5yZWN0KSkKICAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBk
ZkNvbmZpZ3VyYXRpb24ucmVjdCk7CiAKLSAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZs
b2F0UmVjdCwgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1w
dHkoKSkgeworICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbaGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYgcGRmRGF0YSkgeworICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIGhhbmRsZXIobmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEo
KSwgcGRmRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIo
KS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCks
IG5pbCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDI5ZjkxNzc0NTk2Y2YwMDRjZDBkNTdiNWVhMzg2
YjVjYjIzM2IzMGEuLmIwZGQxOWE4ZmUyODRmNDhjZTA3ZTJkYTYwNDYxMjA3NzYxOWEwYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCkBAIC00Miw3ICs0Miw2IEBACiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBv
cnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
LSNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIlN5bmFwc2VT
UEkuaCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNpbXBvcnQgIldlYlBhZ2Uu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KaW5kZXggNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRj
My4uMTc1ZGMxNDEwODc0N2Y2ZjdiNmYwNTNhYWQyN2ExYzQ2Y2UyNmVhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
QEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmpl
Y3RHcmFwaC5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgotI2ltcG9ydCAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lt
cG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVHlwZVJlZldyYXBw
ZXIuaCIKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsg
V1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucyhXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYWZiMzc0
MmU5MjEwYjE5ZGI0YjQxNDUyODEyNGE0YzFiZmE1NmViMy4uNjQ4Yjg1YzUzMTQ5NzlmNmVjMTYz
MDY4MTE4ZGRiYjE0N2Q4YTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgog
I2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5n
V2FybmluZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5oIgpAQCAtNDM5
NSwxMCArNDM5NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZwogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgZGF0YSk+IHRvQVBJRGF0YUNh
bGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCitz
dGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIHJldHVybiBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJl
bmNlPiYgZGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKGRhdGEgPyBBUEk6OkRhdGE6
OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkucHRyKCkgOiBudWxscHRyKTsKKyAg
ICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mIGRhdGEpIG11dGFibGUgeworICAgICAgICBpZiAo
IWRhdGEpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSk7CiAgICAgfTsKIH0KIApAQCAtODk5MCw3ICs4
OTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CkBAIC05ODgxLDggKzk4ODQs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJD
b3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBs
b2FkSWRlbnRpZmllciksIFtdKGF1dG8pIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaWNvbkRhdGEpIG11
dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoaWNvbkRhdGEp
LmdldCgpKTsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgaWNvbkRh
dGEpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoaWNv
bkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpLnB0cigpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CkBAIC0xMDExNSwxMSArMTAxMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIENvbXBsZXRpbwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJ
OjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2U7Ci0gICAgaWYgKGF1dG8gZGF0YSA9IGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkp
Ci0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07Ci0KLSAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFj
aG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRh
Y2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRh
UmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQu
aWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50
LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgYXR0YWNobWVudC5lbmNsb3Np
bmdJbWFnZURhdGEoKSksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogI2lmIEhBVkUoUVVJQ0tM
T09LX1RIVU1CTkFJTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggNjZiNDEyNjkxY2Y3NDQ3MTE0NDgwMTRkNTg5OTM3ZjY5ZjY4OTdlMC4uZjRlYWE1YTBmNGM0
YzMxYTcyMTFjMzViMDY1NjhlYzZjYjEyNDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE0MDAsOSArMTQwMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB1aW50NjRfdCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJik+JiYpOwogICAgIHVpbnQ2NF90IGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwotICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJik7CisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHN0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2NF90PiBjb21wdXRlUGFnZXNG
b3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFBy
aW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYpOworICAgIHN0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2NF90PiBjb21wdXRlUGFnZXNGb3JQ
cmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50
SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNG
b3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkVycm9yKik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkNzY3ZmMwNmIzNmYxNTZmZjMxYzM4M2U2NDNkNDM0
NGMyMTdhYWM4Li4yZWNlNjFlMmJjYmY0MTVjNTdkNThkNzBlYmQzMzMyZmQ4NDdlOTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjcsNyAr
MjcsNiBAQAogI2luY2x1ZGUgIldlYlVSTFNjaGVtZVRhc2suaCIKIAogI2luY2x1ZGUgIkFQSUZy
YW1lSW5mby5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAppbmRleCA5MWZkZmM4NDM3YWE1
NzcwZWJiOTIxNmIzNzFiMzJiMmJhZDgyYTI1Li42N2EzYmIzMzVmNjdjY2JkNmNiMGE4MjRiZjgy
MWI5MTgwMjYxOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UGFzdGVib2FyZFByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgUwogICAgIGNsaXBib2FyZC5yZWFkQnVmZmVyKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCksIFsmY2xpcGJvYXJkLCBvcmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikg
bXV0YWJsZSB7CiAgICAgICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tVHlwZXM7CiAgICAgICAg
IGlmIChhdXRvIGRhdGFCdWZmZXIgPSBidWZmZXIuYnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGF1
dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKCpk
YXRhQnVmZmVyKTsKKyAgICAgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGRhdGFCdWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwog
ICAgICAgICAgICAgaWYgKGN1c3RvbURhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogY3VzdG9tRGF0YS5vcmRlcmVkVHlwZXMoKSkKICAg
ICAgICAgICAgICAgICAgICAgZG9tVHlwZXMuYWRkKHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCA0ZTQxYzY1N2NmNjE4M2ZhZmVmYTM3
MDQwZTc5ZTg2NzAwYjVhMjlhLi5hZGQyYWQyNDk0MmRhMTVhYzRiZDZjZDUyZGY5NDkyNWRiNGY0
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpA
QCAtODk3LDEyICs4OTcsMTIgQEAgLSAoTlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRG
b3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBwcmludElu
Zm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBDR1JlY3RHZXRIZWlnaHQocHJpbnRpbmdSZWN0KTsK
IAogICAgIGF1dG8gcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpOwotICAgIGF1dG8gcGFp
ciA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihmcmFtZUlELCBw
cmludEluZm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSkgeworICAgIGF1dG8gcGFpciA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERihmcmFtZUlELCBwcmludEluZm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgewogICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmlu
dENhbGxiYWNrSUQgPSAwOwotICAgICAgICBpZiAocGRmRGF0YS5lbXB0eSgpKQorICAgICAgICBp
ZiAocGRmRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0
YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEu
YnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKICAgICAg
ICAgcmV0YWluZWRTZWxmLT5fcHJpbnRlZERvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50
Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODI5OGJl
Yjg1N2MyYzVhN2JmNjRjMTg0ZmFkOGEwZWVjZTMyMGExMC4uMTRjNGM4ZjM1MjIzZjFlMjg1ZjBi
OGQzYjBiYzU2MjEwMDVmZWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMDA5LDcgKzEwMDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAoV2Vi
S2l0OjpUYQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1h
dGlvbkZvclBvdGVudGlhbFRhcChyZXF1ZXN0SUQsIHJlbmRlclJlY3QsIGZpdEVudGlyZVJlY3Qs
IHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSwgbm9kZUlzUm9vdExl
dmVsKTsKIH0KIAotc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IFdlYlBhZ2VQcm94eTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQorc3RkOjpwYWlyPHNpemVfdCwgdWlu
dDY0X3Q+IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxi
YWNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFj
ayh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDYyOTI2Nzk4YzVjMTEzMjRhMzFh
YTUwY2RhN2VkMWZiZjc0ZmU3MDIuLjY5ZDM2MTJjNjFmMGJjMmJjNWVhYTZiNmEzZTMwN2M1OTk3
M2U4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgpAQCAtMjAwLDE4ICsyMDAsMTYgQEAg
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBs
b25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUs
IHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWRE
YXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMg
KGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKLQogICAgIHNpemVfdCBmcmFt
ZUNvdW50OwogICAgIEludFNpemUgc2l6ZTsKICAgICBib29sIGhhc1RyYWNrOwogICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvczsKLSAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBk
YXRhUmVmZXJlbmNlLCBhbGxEYXRhUmVjZWl2ZWQpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OlNldERhdGE6OlJlcGx5KGZyYW1lQ291bnQsIHNpemUsIGhhc1RyYWNrLCBm
cmFtZUluZm9zKSwgMCkpCisgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXRE
YXRhKG1faWRlbnRpZmllciwgZGF0YSAsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwg
aGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0Fs
bERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4
IDQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEuLjljMDg4MTYxZWRkYmYy
MzQwZjg3YTBiYjk3MzQxMzdlYTdlM2Q3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtODAs
NyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJD
b3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHAKaW5kZXggMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3My4uMDRkN2Nk
ODk5YjQ0MTRjMjI1Y2Q1Njg4YzViM2IyOTc2NDA1NDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQyLDggKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBSZWZQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVh
dGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKLSAgICBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKLSAgICBp
ZiAoIWVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2RlcihkYXRhUmVm
ZXJlbmNlLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6
Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRpZmllciksIDApKQorICAgIGlm
ICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGEsIG1p
bWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNv
ZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKCFpbWFnZURlY29kZXJJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5jcHAKaW5kZXggYTUzZjE1N2JlZWJkN2RiMmU4MWIyZjVlY2JkNjM4MTg2MmE2ODA4
YS4uY2ZlNDZkNGViNThiNDA1ZjFlMGY2NThiOWI5MjYyNWE0NzJkM2YwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
Owogc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY29udmVydFRvQXJyYXlCdWZmZXIoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYnVmZmVyKCkpCi0g
ICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzQ5MTkw
ZDE5YjBmYTFjZTBiNTExZTg0MjA3MjU2MDA2OTExODYwNi4uNzRmMzk2ZjNjNmVhODA1NWU5YjFl
NDVkYjQ0NWEwNDNhYmE2ZWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjE4LDggKzIxOCw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYgZGF0YSwgaW50NjRfCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVt
Qnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5i
dWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0
YShkYXRhLnNhZmVCdWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMp
OwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDMxNDgyZWIzYjM2OGQ3OGE2MWE3ZWMxZDI0
YzU5ODEwYmM5MWVkOGEuLjU4OGQ4NTkwYTRhOWUyMDZiMWRlZDhjZTI3NmY0NDgzYmNlYzcyNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJEb3dubG9h
ZFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1ZTU2MThkNDMy
NDU1MDgyZjVkYTE4OGFiZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1M2M0NTJiN2U0
MzI0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEu
aCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUuLmJk
Nzg1MGJmYjljMWIzMjlkM2VmZTQ0ZDgwMmZlMzg3YjUyMTQxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3IEBACiAjaW5j
bHVkZSAiU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5Lmgi
CiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMgaW5j
bHVkZUNoaWwKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcgKzM4MjUsNyBA
QCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBA
IHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAj
ZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEu
Z2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkg
fTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0
YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCkBA
IC0zODU5LDcgKzM4NTksNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIGNhbGxiYWNr
KHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2Fs
bGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODcxLDEw
ICszODcxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlm
IChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxs
YmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9KTsK
IH0KIAogc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFG
b3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcg
KzM4ODcsNyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3Vy
Y2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICsz
ODk1LDEwIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291
cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0K
IAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAg
IGlmIChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBj
YWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayh7IFdURk1vdmUoYnVmZmVyKSB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJh
Y2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0
YTsKQEAgLTM5MTQsMTIgKzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8KICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0g
eyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0
YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVy
ZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9y
Y2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6
ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiBy
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2Ut
Pm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcs
NyArNTQ5MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJl
Y3QpOwogICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlv
cik7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0
Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQo
KSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC01NTUxLDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0lt
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFn
ZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgUHJpbnRDb250ZXh0QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0
cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwo
ZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxs
YmFjayh7IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQpAQCAtNjk5Miw3ICs2OTg2
LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1l
bnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySQogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VS
TFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VS
VChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRp
ZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKS5nZXQoKSk7CisgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlm
aWVyLCBkYXRhLnNhZmVCdWZmZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFz
a0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdl
YlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PgogICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2lu
Z0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBX
ZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0
aElkZW50aWZpZXIoaWRlbnRpZmllcikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhX
VEZNb3ZlKGZpbGVTaXplKSwgY29udGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNo
bWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZW5jbG9zaW5nSW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRh
LnNpemUoKSkpOworICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhE
YXRhKGNvbnRlbnRUeXBlLCBlbmNsb3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9
CiAgICAgY2FsbGJhY2soKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA0ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4w
YTgyNzA5YWMzZmEzNTdiMTc0MjM4OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJs
aWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJh
d1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1
aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwg
dWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5Jik+JiYpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRp
ZgogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1Mo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAK
ICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmKT4mJik7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIENhbGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5Jik+JiYpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9v
bCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpA
QCAtMTMwOCw3ICsxMzA4LDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUp
OwogI2VuZGlmCiAKQEAgLTE2ODMsMTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRN
TCkKLSAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7Cisg
ICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9p
ZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+Jik+JiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0
UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlv
bkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENv
bnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChX
ZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUy
YmUxMi4uMTRkMWM2NzM0YjIyYjMyZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0yMTIsMTUgKzIxMiwxNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENv
bnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nIHJlc3VsdCkgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRD
b250ZW50c0FzTUhUTUxEYXRhKCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhKSBBc3luYworICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAg
IEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291
cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5n
IHJlc291cmNlVVJMKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1
ZmZlcikgQXN5bmMKICAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+
IChTdHJpbmcgc3RyaW5nKSBBc3luYwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
ZygpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5j
CisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4gZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5j
Ci0gICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkg
QXN5bmMKKyAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVm
ZXJlbmNlKSBBc3luYwogCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0
cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktp
dDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMpIEFzeW5jCiAKQEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3Rv
ckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdp
bikgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUp
IC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERy
YXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQp
IC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBD
b21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291
bnQpIFN5bmNocm9ub3VzCi0gICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFn
ZUNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERG
aU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAt
PiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gcmVjdCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAt
PiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4g
KElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBs
b2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMK
ICAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQog
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0
YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emUsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAg
IFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5h
bWUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+
ICgpIEFzeW5jCisgICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUs
IFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0
YSkgLT4gKCkgQXN5bmMKICAgICBVcGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmll
ciwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDA2ZDU1ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAu
LjcwY2QwNmM2ZTExMDNlNjM2MzAxNzBjNGNhMWZjYjAwZTgwNmE2ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2
ICs0Myw3IEBACiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnku
aCIKICNpbXBvcnQgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFw
SGFuZGxpbmdSZXN1bHQuaCIKQEAgLTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpk
cmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHIKICAgICAgICAgYXV0byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNo
b3RSZWN0LCBzbmFwc2hvdFNpemUsIDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRW
aWV3cG9ydE92ZXJyaWRlUmVjdChvcmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsK
LSAgICAgICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0
YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBs
eShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAg
ICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBw
ZGZQYWdlRGF0YSk7Ci0gICAgcmVwbHkoSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQ
dHIocGRmUGFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkp
KSk7CisgICAgcmVwbHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsK
IAogICAgIGVuZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAppbmRleCAxNGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2IyZDg4NWNmMzNjLi5iMDMyY2M3
MzhhNDBmZDI5OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgT2JqZWN0OwogfQogCiBuYW1l
c3BhY2UgSVBDIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAgLTU1MSw3ICs1NTEsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGNvbnN1bWVB
dWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7Cisg
ICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggNzQ5M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFkOTBkOTJmZS4uNDJkNzVhMzk0
YTljZDI3ZDQ0ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5OSw3ICsxOTksNyBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSByZWdpc3RyYXRpb25EYXRhKQor
ICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzRGlkQ2hh
bmdlKHN0cnVjdCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcyBhY2Nlc3NpYmlsaXR5
UHJlZmVyZW5jZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4
MTZhYmUxODE3MDQ1YS4uMTUzZDg5ZTE1M2E3MGRjMWM1NjZjOTE2MzEzZjQwOTc5MTM5Yjk0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1w
b3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0FQ
SUNhc3QuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpAQCAtMTI0OCwxNiArMTI0OSwx
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBv
bmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhKQogewog
ICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hD
b3JlRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3Jl
X0F1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25zKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwotICAgIGlmICghcmVn
aXN0cmF0aW9ucykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBkYXRhLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKIAog
ICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25lbnRBcHBseVNlcnZlclJlZ2lzdHJhdGlvbnMocmVn
aXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgaWYgKG5vRXJyICE9IGVycikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448581</attachid>
            <date>2022-01-07 04:57:57 -0800</date>
            <delta_ts>2022-01-07 07:09:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220107235754.patch</filename>
            <type>text/plain</type>
            <size>96482</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uOGNiNWJiNjE5Njg4ZGUzY2FhZmVlMjdhOTQ0OWJm
ZjMzYWM2YTZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlIHRvIGF2b2lkCisgICAgICAgIGhhdmluZyB0byBj
b25zdF9jYXN0IHRoZSBhcmd1bWVudCBpbiBXZWJLaXQuCisKKyAgICAgICAgTm8gY2hhbmdlIGlu
IG9ic2VydmFibGUgYmVoYXZpb3VyLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEtMTItMjcgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb250ZW50IEZpbHRlcmluZyBzaG91bGQgYmUgdXNpbmcg
U2hhcmVkQnVmZmVyIGluc3RlYWQgb2YgY29weWluZyBpdHMgZGF0YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNzI0
OTBkODJkMTJjNzdiYzY2OThkODc4ZDgwYzNlZGNiY2VhYTY4Li4xZjMzMzM1MGRiNWQ3OTE0NWI0
YzQ4NDE4OWM3NTkzMzVhNWNmNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMi0w
MS0wNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgYW5kIHVzZSBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0OTIxCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg3MTk2Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyQ29weSBk
aWRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBuZXcgU2hhcmVkQnVmZmVyCisgICAgICAgIGFuZCBjb3B5
IGl0cyBjb250ZW50OyBpdHMgSVBDIGRlY29kZXIgY2FuIGluc3RlYWQgd3JhcCB0aGUgdW5kZXJs
eWluZworICAgICAgICBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAg
SGF2aW5nIHJlbW92ZWQgdGhvc2UgY29waWVzIGFuZCBleHRyYSBhbGxvY2F0aW9ucyB0aGVyZSdz
IG5vIGxvbmdlciBhCisgICAgICAgIHRlY2huaWNhbCBuZWVkIHRvIGhhdmUgYm90aCBTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGFuZCBTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgIFRoZSBi
aWdnZXN0IHdpbm5lcnMgb2YgdGhpcyBjaGFuZ2UgYXJlIHRoZSBpbWFnZXMgdHJhbnNmZXJyZWQg
b3ZlciBJUEMuCisgICAgICAgIFdlIHJlbW92ZSB0d28gbWVtb3J5IGFsbG9jYXRpb24vY29weSB0
aGUgd2FzIG9jY3VycmluZyBhdCBib3RoIElQQworICAgICAgICBib3VuZGFyaWVzLgorCisgICAg
ICAgIFdlIGFsc28gcmVtb3ZlIHRoZSBuZWVkIGZvciBTaGFyZWRCdWZmZXJDb3B5IHRvIHVzZSBh
IGNvbnRpZ3VvdXMKKyAgICAgICAgU2hhcmVkQnVmZmVyLiBUaGlzIG1ha2VzIHRoZSBJUEMgZW5j
b2RpbmcgbXVjaCBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgT25jZSB0cmFuc2ZlcnJlZCBvdmVy
IElQQywgd2l0aCB0aGUgY3VycmVudCBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiwKKyAgICAgICAg
dGhlIFNoYXJlZEJ1ZmZlckNvcHkgYXV0b21hdGljYWxseSBiZWNvbWVzIGEgY29udGlndW91cyBT
aGFyZWRCdWZmZXIsCisgICAgICAgIHNvIGNhbGxpbmcgbWFrZUNvbnRpZ3VvdXMoKSBvbiB0aGUg
U2hhcmVkQnVmZmVyQ29weSBpcyBhIG5vLW9wOworICAgICAgICB0aGlzIGFsbG93cyBmb3IgemVy
byByZWdyZXNzaW9uIHNwZWVkLXdpc2UgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAgICBGbHkt
YnkgY2hhbmdlczogdGhlIFBERiBjb2RlIHVzZXMgSVBDOjpEYXRhUmVmZXJlbmNlIG9iamVjdDsg
dGhlIGRhdGEKKyAgICAgICAgd2FzIGNvcGllZCBpbnRvIGEgQ0ZEYXRhIG9yIGEgU2hhcmVkQnVm
ZmVyLiBCeSB1c2luZyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKKyAgICAgICAgd2FzIGNhbiByZW1v
dmUgdGhvc2UgY29waWVzIGFzIGEgU2hhcmVkQnVmZmVyIGNhbiBiZSB3cmFwcGVkIGluIGEgQ0ZE
YXRhLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCBpdCdzIGxpa2VseSB3aGVyZSBzdWNoIGNvZGUg
cGF0dGVybiB3YXMgdXNlZDsgbW9yZQorICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgY2FuIGJl
IHJlcGxhY2VkIGJyb2FkbHkgd2l0aCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29kZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9VaW50OEFycmF5KToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlG
b3JLZXlJRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckRv
d25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRC
dWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6Y29udGlndW91c0J1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6IFJlbW92ZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSk6CisgICAgICAgIChyZXBseV9hcmd1bWVudHNfdHlwZSk6CisgICAg
ICAgIChtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbik6CisgICAgICAgIChnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
cmF3VG9QREYpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lv
bkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFn
ZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1RvUERGaU9TKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMpOgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAxNzc1MDZjZjA0NzBmZTM1Y2M5YzJiNGI2ZmNkYmY5
YjQyYTE5MThlLi5jYWVmM2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtMzg1LDMgKzM4Niw3IEBAIHByaXZhdGU6CiBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIHsgcmV0dXJuIGJ1ZmZlci5pc0NvbnRpZ3VvdXMoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuaAppbmRleCA2YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4Li4x
OTUzMzkyZTZmZThlZDRlYTllYjVlMThjMjFlZDhkN2IxYmY3OTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMTI5LDcgKzEyOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4
IDYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUuLjAyNGRlZTBjMDkwNDcx
MmNmMzExM2JjNzk4NTRkNTNiMzc2ZmNmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIElt
YWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJ
bWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpD
PiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlz
QWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZl
ZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2so
KTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAzNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMw
NjVlY2I1MDU3Li41NjNhZjE5MjRkOWFmMzU5ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3
ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBp
dGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFn
ZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6
OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9u
IG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5
cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBS
ZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1l
VHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBA
IC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1fbG9hZGVyLmdl
dCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKaW5kZXggYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNS4uOTBiMWVk
ZDAxYjYzOTNkZmM5OWMxYjg3ZDkwZjU0YTVmMjMyODk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtNTYy
LDcgKzU2Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZElt
YWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IGFsbERhdGFSZWNlaXZlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggYTBhYzFjMmZiZWU1MjdlNWFiMTEx
NDU1ODEyYmRiNzM2M2EwNTU0Ny4uMTc1MTA4ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3
ZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4
YjQ5YzJiYjY1M2FjNC4uNzBmYThkM2Y3NzYxYzBlMzE1NTBjOGU1YzU1ZjQ2OTk5YTg5YmZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTE5OSw3ICsxOTks
NyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERh
dGEoZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggZDNl
ZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcxYWU5OS4uMjYxZGFmZjI2MTU4ZTE3YTJh
NDIyMWZmYjI0MzU0Njc3MTZkYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDc3MzU3MzliOTMzNGY0NGQ5
OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEuLjY1MTg1NjExYjM1ZjkyZTdjYTcyN2VlYjc2YTIwNWQw
YTYzMWU3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
Miw3ICsyODIsOCBAQCB2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlYwogICAgIGlmICghU1VDQ0VFREVE
KGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgY2hhciogZGF0YVB0ciA9IGNvbnN0X2Nhc3Q8Y2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICBociA9IHN0cmVhbS0+SW5pdGlhbGl6ZUZyb21NZW1vcnko
cmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oZGF0YVB0ciksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAo
IVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5k
ZXggYzIzNjVmZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgyMS4uMmNmOTA5NTcwY2E0
MWU5ZjFmZTNlODQxZjQzYTkzODgwMmRmZWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggYjI4
OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUwMjIxN2ZjNjgzNi4uZjA1OGI1ZGM4ZWUxY2U2M2Q5
ZTZjOWRiYzZlNWFiYmNkOGUwNDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVu
Y29kZWREYXRhU3RhdHVzOjpFcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
Zjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAxZjNiYTcyZC4uZTgyODc0OWY2MTYzZGMz
MmM0ODA3NTQyNjAyNWU0NWMwNTAzODdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBC
TVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApp
bmRleCA2NGRlZDZhYmJlMmMwYTI5YjExZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcyLi5lYjg0YzViZjNk
Y2NlNDc4YTY3OWU2ZTIwNjBkODE0MTg3ZmE5YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJt
cCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFs
OwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2Fy
ZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxs
eSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBiOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxLi41NThkYjM3
NTA3MWM5YjNmNzU4NmZjZWJlYWVhNTRiN2NiMjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJ
bWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYg
KGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
Yzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYi4uYmZiMmU4NmZjOTc0YjUx
OGM5NmYwYjc3YjZmZWFlODhkNTliNDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAg
IFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7
IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgp
IGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzA3MTM0NWI4YmYzNjli
ODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMS4uMTBlYjA3OTExYzFjY2UxZWZiZWIxZTlkMzliZDhl
NjA2YzY1NDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VE
ZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4
YmUxMzliYjc0MjcxZDU3YTguLjAzNmMxM2U5MjlhYjVjNzMzYmE3YzhiNWQ5MmJkYjhjZGMzNmMx
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAg
dm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDc3MmU4MzI2NmUyMzBlYjZkZmY3ZGMxZWY3ZGI1NTIz
OTYzYmZiMGQuLjFkOGE4MmYyZTQ4ZTlmNGU4YTQxNDA2MTViOWFhZWE4Nzc2Mzg5MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VE
ZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0g
ZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBkZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2
MDk3M2FhYTBkMjNlLi4yNzRjZDRkNWYyZjU4NjQ2NzcxYzU5ZWI3NWYyNDJiYTk3MmUzMjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkg
b3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCA3MzJhMTk0OTJh
ZDc0ZmQ1NzhlZGI2MzkxZDU5OGY5ZTAwMDFkODg5Li5jYzViOGI2NjU5NTBiNmU1OWI5YzJlMmY0
Zjc4MjcwN2Y4YzEyMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNDUsOSArNDYs
OSBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogewogfQogCi12b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGltYWdlRGVjb2RlciA9IEltYWdlRGVj
b2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQsIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKKyAgICBhdXRvIGltYWdlRGVjb2RlciA9IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShkYXRhLnNhZmVCdWZmZXIoKSwgbWltZVR5cGUsIEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdu
b3JlZCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdl
RGVjb2RlcklkZW50aWZpZXI7CiAgICAgaWYgKCFpbWFnZURlY29kZXIpCkBAIC05Myw3ICs5NCw3
IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldEV4cGVjdGVkQ29udGVudFNp
emUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpCiAgICAgbV9pbWFnZURlY29kZXJzLmdldChpZGVu
dGlmaWVyKS0+c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShleHBlY3RlZENvbnRlbnRTaXplKTsKIH0K
IAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291
bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3Vu
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBp
ZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSkgewpAQCAtMTAyLDcgKzEw
Myw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zCiAgICAgfQogCiAgICAgYXV0byBpbWFnZURl
Y29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGltYWdlRGVjb2Rl
ci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
LCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShkYXRhLnNhZmVC
dWZmZXIoKSwgYWxsRGF0YVJlY2VpdmVkKTsKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdl
RGVjb2Rlci0+ZnJhbWVDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDI3MGUx
ZWJlMzEyMzVmNzc4NmRmMDdiOTAwMGExYzg3YTU3ZDI3YjcuLmY4ZWNkZTcyNGExZDgyNWNkZDdl
NmM0MWM4NDA5NjI1OGJlOGNjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCkBAIC0yNyw3ICsy
Nyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikK
IAotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtMzcsNiArMzYsMTAgQEAKICNpbmNs
dWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25h
bWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCkBAIC01MywxMCArNTYs
MTAgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsK
KyAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOworICAgIHZv
aWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpG
cmFtZUluZm8+PiYmKT4mJik7CiAgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSk+JiYpOwogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxOThiMmIyM2NlNmZjMGY0
ZmYzMjM4MzY1Mzg2YTg2ZmM5NGRhY2E3Li41MDFlNjdmYWNjYmJlNzZkYzRjN2ZlMTU1NjE5ZmUz
NjMzOWNjNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yOCwxMCArMjgsMTAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NF
VFJFQURFUikKIAogbWVzc2FnZXMgLT4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTm90UmVm
Q291bnRlZCB7Ci0gICAgQ3JlYXRlRGVjb2RlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZURl
Y29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikg
U3luY2hyb25vdXMKICAgICBEZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVu
dFNpemUpCi0gICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJv
b2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMKKyAgICBTZXREYXRhKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNv
cmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNUcmFjaywgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwog
ICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KSAtPiAoc3RkOjpvcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4
NGU0OTdlNGEwMjFiOWNjZjU3OC4uYzhlNzQ2M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2
OWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTU5LDE3ICs1OSwxOCBAQCBz
dGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyLmJ1ZmZlcigpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHNpemVfdCBzaXplSW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7
Ci0gICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgc2l6ZUluQnl0ZXMpOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyID0gYnVm
ZmVyLmJ1ZmZlcigpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIGlmICghYXJyYXlCdWZm
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgMCwgYnVmZmVyLnNpemUoKSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxT
aGFyZWRCdWZmZXIoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBj
aGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciop
YXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkpIH07CiB9CiAKIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2Fs
bGJhY2smJiBjb21wbGV0aW9uKQpAQCAtODgsNyArODksNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IElQQwogCiAgICAgZGVzdGluYXRpb25VUkwgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwog
Ci0gICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVz
dCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRp
b24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoa2V5UmVxdWVzdCksIGRlc3RpbmF0aW9u
VVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBk
YXRlLCBVcGRhdGVDCiAKICAgICBib29sIHN1Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVw
ZGF0ZUFycmF5LmdldCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIAot
ICAgIGNvbXBsZXRpb24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uo
bmV4dE1lc3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworICAgIGNvbXBsZXRpb24oc3Vj
Y2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbFNoYXJlZEJ1ZmZlcihuZXh0TWVzc2FnZSksIGVycm9y
Q29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlk
KQpAQCAtMTIwLDcgKzEyMSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpCiAKIHZvaWQgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQs
IENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIGNvbXBsZXRp
b24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGdldENhY2hlZEtleUZvcktleUlkKGtl
eUlkKSkpOworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIoZ2V0
Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGlu
YXRpb25VUkwpCkBAIC0xMzIsNyArMTMzLDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAg
ICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFS
ZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKKyAgICBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRvT3B0aW9uYWxTaGFyZWRC
dWZmZXIobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29k
ZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTZmZDJh
YzcwZWM3ZTBlNzU5MGFkZTI3MmUxNDI3ZmNlOTZkZGU1MC4uMDlkNDJiNWYyN2YwNjI2MTQ3ZDI5
MzNjZDIyNGY4NTA5YTUyMjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mzg4MTMyNGJi
MDliODlhODY4ZDhhOWQ4MTFjOGI2MmEyMDFhOWYxLi42MDQxYmRjZDJkMmRiYzcyZjMzYjRiOGYy
YmI1MWU4MGIyNGI5NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oCkBAIC0xODAsMTEgKzE4MCw2IEBAIHN0cnVjdCBDb2RpbmdUeXBlIHsKICAgICB0eXBl
ZGVmIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+IFR5cGU7
CiB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOwotdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29kaW5nVHlwZTxjb25zdCBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJj4gewotICAgIHVz
aW5nIFR5cGUgPSBEYXRhUmVmZXJlbmNlOwotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHM+
CiBzdHJ1Y3QgQ29kaW5nVHlwZTxzdGQ6OnR1cGxlPFRzLi4uPj4gewogICAgIHR5cGVkZWYgc3Rk
Ojp0dXBsZTx0eXBlbmFtZSBDb2RpbmdUeXBlPFRzPjo6VHlwZS4uLj4gVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUz
MGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MS4uODk5MDFiMGVmZWY4ZjY2MzJhYzRi
ZWY0NDY1NGI0YTY2MzcwMWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJDb3B5LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5o
IgogCkBAIC0zNywyNCArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQg
U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
dWludDY0X3QgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7Ci0g
ICAgZW5jb2Rlci5yZXNlcnZlKHNpemVvZihidWZmZXJTaXplKSArIGJ1ZmZlclNpemUpOwotICAg
IGVuY29kZXIgPDwgYnVmZmVyU2l6ZTsKLSAgICBpZiAoIWJ1ZmZlclNpemUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqbV9idWZmZXIpCi0gICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50
LnNlZ21lbnQtPnNpemUoKSwgMSk7CisgICAgZW5jb2RlciA8PCBtX2J1ZmZlcjsKIH0KIAogc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKLSAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCitjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJDb3B5OjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVm
ZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZG93bmNhc3Q8U2hhcmVk
QnVmZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXgg
NTdiMTQ2ZTU4ZTdhOWRhNzAyNmM5ZGVlNTIwMzk1NTFhZGFiNzFkOS4uYTdiMGRkZTJhZjY0ZGI5
YzhiZTM1OGZlYzRlZjdiZjg1YTllZWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjQsNyArMjQsNiBAQAogICovCiAKIC8vIEVuY29k
ZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9m
IHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLS8vIFRv
IGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBvbmNl
CiAKQEAgLTQwLDI5ICszOSwzMCBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoK
ICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCisgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9
Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9Ci0KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gb25seSBiZSB1c2Vk
IG9uIHRoZSByZWNlaXZlcidzIElQQyBzaWRlLC4KKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLmdldCgpKTsgfQorICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHNhZmVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IGJ1ZmZlcigpLnJlbGVhc2VO
b25OdWxsKCkgOiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgY29uc3Qg
dWludDhfdCogZGF0YSgpIGNvbnN0OworCiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc2NTg0MzJhZGI2YTYzODMx
NGUxMTg4ZmNlZmFiYWI1YTY1MmI2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkVuY29k
ZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7Ci0KLXZvaWQgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZGF0YS5lbXB0
eSgpKSB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShlbmNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghYnVmZmVyKCkpOwotICAgIGVuY29kZXIg
PDwgbV9kYXRhOwotfQotCi19IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcw
ZDNmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBFbmNvZGVzIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQg
YXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHku
aCIKLQotbmFtZXNwYWNlIElQQyB7Ci0KLWNsYXNzIEVuY29kZXI7Ci0KLWNsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgOiBwcml2YXRlIFNoYXJlZEJ1ZmZlckNvcHkgewotcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7Ci0gICAgdXNpbmcgU2hh
cmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weTsKLQotICAgIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UoRGF0YVJlZmVyZW5jZSBkYXRhKQotICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhLCBzaXplKSB7IH0KLQotICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAvLyBVc2UgSVBDOjpEYXRhUmVmZXJl
bmNlIHRvIGRlY29kZS4KLQotcHJpdmF0ZToKLSAgICBEYXRhUmVmZXJlbmNlIG1fZGF0YTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggNWMzZDJlZTEyNWI4YmNiOTllYmFlNDNhNThlOGFlNDhiZmEwMWI4ZC4uOGI1
MjFmNzcwMTU0OGIxYWY4YjQ0YjM1Mzc0NjM3NjljOTBkZjk4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0xNDAsMTQgKzE0MCw2IEBAIGRlZiBmdW5jdGlv
bl9wYXJhbWV0ZXJfdHlwZSh0eXBlLCBraW5kKToKICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSB0
eXBlCiAKIAotZGVmIHJlcGx5X3R5cGUodHlwZSk6Ci0gICAgaWYgdHlwZSA9PSAnSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJzoKLSAgICAgICAgcmV0dXJuICdJUEM6OkRhdGFSZWZlcmVu
Y2UnCi0gICAgaWYgdHlwZSA9PSAnc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+JzoKLSAgICAgICAgcmV0dXJuICdzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4nCi0gICAgcmV0dXJuIHR5cGUKLQotCiBkZWYgcmVwbHlfcGFyYW1ldGVyX3R5cGUodHlw
ZSk6CiAgICAgcmV0dXJuICclcyYnICUgdHlwZQogCkBAIC0xNjUsNyArMTU3LDcgQEAgZGVmIHJl
cGx5X3R1cGxlKG1lc3NhZ2UpOgogCiAKIGRlZiByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KToKLSAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocmVwbHlfdHlwZShw
YXJhbWV0ZXIudHlwZSkgZm9yIHBhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMp
KQorICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihwYXJhbWV0ZXIudHlw
ZSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpCiAKIAogZGVmIG1l
c3NhZ2VfdG9fcmVwbHlfZm9yd2FyZF9kZWNsYXJhdGlvbihtZXNzYWdlKToKQEAgLTIwNyw3ICsx
OTksNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3Nh
Z2UpOgogICAgICAgICBzZW5kX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFtZXRlcl90eXBl
KHgudHlwZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRl
cnNdCiAgICAgICAgIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzID0gJyVzJyAlICcsICcu
am9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkKICAgICAgICAgaWYg
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICBtb3Zl
X3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBlKHgudHlwZSkpIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAgICBtb3ZlX3BhcmFt
ZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVw
bHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZv
aWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYm
KTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
c3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYpO1xu
JyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0
aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6
Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2Uu
bmFtZSkpCkBAIC0xMDc3LDEwICsxMDY5LDEwIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4n
ICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAgICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9
IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgICAgIG1vdmVf
cGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBm
b3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBseShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVf
cGFyYW1ldGVycykKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGQ6Om9wdGlv
bmFsPCVzPiAlcztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4nICUg
KHgudHlwZSwgeC5uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGRlY29kZXIgPj4gJXM7XG4nICUgeC5uYW1lKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbiAg
ICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpO1xuICAgICAgICBy
ZXR1cm47XG4gICAgfVxuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgY29tcGxldGlvbkhhbmRsZXIoJykKQEAgLTEwODgsNyArMTA4MCw3IEBAIGRlZiBnZW5l
cmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3ZlKConLmpvaW4oeC5uYW1lIGZv
ciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9p
ZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlv
bkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAlIG1vdmVfcGFyYW1ldGVycykK
LSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQQzo6QXN5bmNSZXBs
eUVycm9yPCcgKyByZXBseV90eXBlKHgudHlwZSkgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHgudHlwZSArICc+OjpjcmVhdGUo
KScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmluZGV4
IDY4Y2VjNjYyMmI2MDhiNjdlOTliYjljMjk5YmExZjE2OGY1ZGJmMWYuLjU3YmM4MzhmOTc5MWRh
ZGI5ODUwOGVjMTQ4YzJlZTcyZGU5YzQwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtMzAsNyArMzAs
NiBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZWE1OWYwODkxNmRkNzNlNzI3NzhiNzhkZWU5NjcwNzExODU0ODVlYi4u
NDVlY2U1MWE1MDM2NmRhMzRmZjkwZTkxZDU3ZTVhODhlMmRiODg1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yNiwxMCArMjYsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oPgpAQCAtODUsNiArODMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZURhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9u
Lmg+CkBAIC0xMDMsNyArMTAyLDYgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25HZW9tZXRyeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCkBAIC0yOTgwLDcgKzI5NzgsNyBAQCBzdGQ6Om9w
dGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVj
b2RlKERlY29kZXImIGRlYwogCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhJiBkYXRhKQogewotICAgIGVuY29kZXIgPDwgZGF0YS5pZGVu
dGlmaWVyIDw8IGRhdGEubWltZVR5cGUgPDwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IHsgZGF0YS5kYXRhLmdldCgpIH07CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50aWZpZXIgPDwg
ZGF0YS5taW1lVHlwZSA8PCBkYXRhLmRhdGE7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT46OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTkzLDExICsyOTkx
LDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUo
aWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBidWZmZXIucmVsZWFzZU5vbk51bGwo
KSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggNjc5NjM3ODlmYTM0N2JmOGFkNTY0Zjk1ZDNhZjFjOWI5YTdmYzM5Ny4uNDQ1NzMx
MDlhZTMzMjNkNjllMDIyN2JkN2FhNDE1YTNjYjg3OTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yMDEs
NyArMjAxLDYgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwCiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuY3BwCiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKLVBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcAogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwCiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKIFBs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNTJkNjM5NWYwMDYzYjZh
OWNjYjA2MDRiYWIyZjhjNDEyOGNiYmU4Yy4uMjFjMDlhYzUyMjg1Yzk0MjUxMjE4ZWVhZjg5ZjBj
YjNkNGVmNzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0xNjQyLDEzICsxNjQyLDEzIEBAIC0gKHZvaWQpY3JlYXRlUERGV2l0aENv
bmZpZ3VyYXRpb246KFdLUERGQ29uZmlndXJhdGlvbiAqKXBkZkNvbmZpZ3VyYXRpb24gY29tcGxl
CiAgICAgaWYgKHBkZkNvbmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChwZGZDb25maWd1cmF0
aW9uLnJlY3QpKQogICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3JlOjpGbG9hdFJlY3QocGRmQ29u
ZmlndXJhdGlvbi5yZWN0KTsKIAotICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRS
ZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkgewotICAgICAgICBpZiAocGRmRGF0YS5lbXB0eSgp
KSB7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJlY3QsIFtoYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBwZGZEYXRhKSB7CisgICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tFcnJvclVua25vd24pLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBw
ZGZEYXRhLnNpemUoKSkpOworICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5j
cmVhdGVDRkRhdGEoKTsKICAgICAgICAgaGFuZGxlcigoTlNEYXRhICopZGF0YS5nZXQoKSwgbmls
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KaW5kZXggMjlmOTE3NzQ1OTZjZjAwNGNkMGQ1N2I1ZWEzODZiNWNi
MjMzYjMwYS4uYjBkZDE5YThmZTI4NGY0OGNlMDdlMmRhNjA0NjEyMDc3NjE5YTBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTQyLDcgKzQyLDYgQEAKICNpbXBvcnQgIlNhZmVCcm93c2luZ1NQSS5oIgogI2ltcG9ydCAi
U2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgotI2lt
cG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiU3luYXBzZVNQSS5o
IgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQppbmRleCA2ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5ZDUzMWJjOGFjMGE1NGMzLi4x
NzVkYzE0MTA4NzQ3ZjZmN2I2ZjA1M2FhZDI3YTFjNDZjZTI2ZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAt
MzIsNyArMzIsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiT2JqQ09iamVjdEdy
YXBoLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW1wb3J0
ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tUeXBlUmVmV3JhcHBlci5o
IgpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAwKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25z
KFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhZmIzNzQyZTky
MTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi42NDhiODVjNTMxNDk3OWY2ZWMxNjMwNjgx
MThkZGJiMTQ3ZDhhNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5j
bHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBAIC00Mzk1LDEw
ICs0Mzk0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KCksIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElEYXRhQ2FsbGJh
Y2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykKK3N0YXRp
YyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+
JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6RGF0YTo6Y3Jl
YXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIpOworICAgIHJl
dHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7CisgICAgICAgIGlmICghZGF0
YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpKTsKICAgICB9OwogfQogCkBAIC04OTkwLDcgKzg5OTMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94
eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKQEAgLTk4ODEsOCArOTg4NCw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGxvYWRJ
ZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExv
YWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0YSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29uRGF0YSkuZ2V0
KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdl
dExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBpY29uRGF0YSkg
bXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29uRGF0
YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkucHRyKCkpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KQEAgLTEwMTE1LDExICsxMDExOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRh
Y2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxldGlvCiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsK
LSAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkKLSAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKLQotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVu
dC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1l
bnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZl
cmVuY2UpKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVu
dGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29u
dGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBhdHRhY2htZW50LmVuY2xvc2luZ0lt
YWdlRGF0YSgpKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiAjaWYgSEFWRShRVUlDS0xPT0tf
VEhVTUJOQUlMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2
NmI0MTI2OTFjZjc0NDcxMTQ0ODAxNGQ1ODk5MzdmNjlmNjg5N2UwLi5mNGVhYTVhMGY0YzRjMzFh
NzIxMWMzNWIwNjU2OGVjNmNiMTI0NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTQwMCw5ICsxNDAwLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHVpbnQ2NF90IGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJp
bnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmKT4mJik7CiAgICAgdWludDY0X3QgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSos
IGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik7Ci0gICAgdm9pZCBkcmF3VG9QREYoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
PiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJ
bmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4m
Jik7CisgICAgc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZv
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
Jik7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclBy
aW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFQSTo6RXJyb3IqKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCmluZGV4IGQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIx
N2FhYzguLjJlY2U2MWUyYmNiZjQxNWM1N2Q1OGQ3MGViZDMzMzJmZDg0N2U5MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFzay5oIgogCiAjaW5jbHVkZSAiQVBJRnJhbWVJ
bmZvLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCmluZGV4IDkxZmRmYzg0MzdhYTU3NzBl
YmI5MjE2YjM3MWIzMmIyYmFkODJhMjUuLjY3YTNiYjMzNWY2N2NjYmQ2Y2IwYTgyNGJmODIxYjkx
ODAyNjE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0
ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQ
YXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTCiAgICAgY2xpcGJvYXJkLnJlYWRCdWZmZXIoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSwgWyZjbGlwYm9hcmQsIG9yaWdpbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKSBtdXRh
YmxlIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21UeXBlczsKICAgICAgICAgaWYg
KGF1dG8gZGF0YUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKSkgewotICAgICAgICAgICAgYXV0byBj
dXN0b21EYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoKmRhdGFC
dWZmZXIpOworICAgICAgICAgICAgYXV0byBjdXN0b21EYXRhID0gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZyb21TaGFyZWRCdWZmZXIoZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAg
ICAgICAgICBpZiAoY3VzdG9tRGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAg
ICAgICAgICAgICAgICBkb21UeXBlcy5hZGQodHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDRlNDFjNjU3Y2Y2MTgzZmFmZWZhMzcwNDBl
NzllODY3MDBiNWEyOWEuLmFkZDJhZDI0OTQyZGExNWFjNGJkNmNkNTJkZjk0OTI1ZGI0ZjQ4N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC04
OTcsMTIgKzg5NywxMiBAQCAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1h
dHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGbwogICAgIHByaW50SW5mby5h
dmFpbGFibGVQYXBlckhlaWdodCA9IENHUmVjdEdldEhlaWdodChwcmludGluZ1JlY3QpOwogCiAg
ICAgYXV0byByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZik7Ci0gICAgYXV0byBwYWlyID0g
X3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKGZyYW1lSUQsIHByaW50
SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKSB7
CisgICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBwZGZEYXRhKSB7CiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3BkZlByaW50Q2Fs
bGJhY2tJRCA9IDA7Ci0gICAgICAgIGlmIChwZGZEYXRhLmVtcHR5KCkpCisgICAgICAgIGlmIChw
ZGZEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRh
dGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZm
ZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOwogICAgICAgICBy
ZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVh
dGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA4Mjk4YmViODU3
YzJjNWE3YmY2NGMxODRmYWQ4YTBlZWNlMzIwYTEwLi4xNGM0YzhmMzUyMjNmMWUyODVmMGI4ZDNi
MGJjNTYyMTAwNWZlYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KQEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6
OlRhCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9u
Rm9yUG90ZW50aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmll
d3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwp
OwogfQogCi1zdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCitzdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRf
dD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBj
ZGE3ZWQxZmJmNzRmZTcwMi4uNjlkMzYxMmM2MWYwYmMyYmM1ZWFhNmI2YTNlMzA3YzU5OTczZTg2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhl
IGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4g
dGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291
bnQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlm
ICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFS
ZWZlcmVuY2UsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1l
SW5mb3MpLCAwKSkKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEo
bV9pZGVudGlmaWVyLCBkYXRhICwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNU
cmFjaywgZnJhbWVJbmZvcyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQWxsRGF0
YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggNDBk
MzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRiZjIzNDBm
ODdhMGJiOTczNDEzN2VhN2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04MCw3ICs4
MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6
OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9u
cyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcg
bG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNo
ZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApp
bmRleCAwODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi4wNGQ3Y2Q4OTli
NDQxNGMyMjVjZDU2ODhjNWIzYjI5NzY0MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJbWFnZURl
Y29kZXJBVkYuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDIsOCArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUlt
YWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAgIGlmICgh
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFSZWZlcmVu
Y2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVh
dGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFl
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YSwgbWltZVR5
cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6
OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcAppbmRleCBhNTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5j
ZmU0NmQ0ZWI1OGI0MDVmMWUwZjY1OGI5YjkyNjI1YTQ3MmQzZjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAg
ICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3NDkxOTBkMTli
MGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2Li43NGYzOTZmM2M2ZWE4MDU1ZTliMWU0NWRi
NDQ1YTA0M2FiYTZlZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMTgsOCArMjE4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiBkYXRhLCBpbnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRl
c1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZl
cigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRh
dGEuc2FmZUJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4
MTBiYzkxZWQ4YS4uNTg4ZDg1OTBhNGE5ZTIwNmIxZGVkOGNlMjc2ZjQ0ODNiY2VjNzI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRvd25sb2FkVGFz
a01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgi
Ci0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUw
ODJmNWRhMTg4YWJmOWJmNGMuLjRiNmIzNDg1N2U3OGU1NmY1MjZiY2Y2NDUzYzQ1MmI3ZTQzMjRi
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDIsNyArNDIsNiBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgog
I2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZjg5ZmY3MmEwZDMxYmVjMTFlZjgwMjk3ZWZiYTkyYzJhN2JjNjZiNS4uYmQ3ODUw
YmZiOWMxYjMyOWQzZWZlNDRkODAyZmUzODdiNTIxNDE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRl
ICJTZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCIKICNpbmNsdWRlICJVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmgiCkBAIC0zODA1LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRl
Q2hpbAogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsYmFjayh7IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9KTsKIH0KQEAgLTM4MjUsNyArMzgyNSw3IEBAIHN0
YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJl
bmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM4MzMsMTIgKzM4MzMsMTIgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3Qgc3RkOjpvcHQKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICNlbmRp
ZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRh
dGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQo
KSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9Owor
ICAgICAgICBkYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAj
ZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRhQnVm
ZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKQEAgLTM4
NTksNyArMzg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgY2FsbGJhY2socmVz
dWx0U3RyaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFj
aykKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4NzEsMTAgKzM4
NzEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgICAgICB9CiAgICAgfQogCi0gICAg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1
ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKHsgV1RGTW92ZShidWZmZXIpIH0pOwogfQog
CiBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZy
YW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKQEAgLTM4OTAsNyArMzg4
Nyw3IEBAIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+
ZGF0YSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4OTgsMTMgKzM4OTUs
MTAgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgfQogCi0g
ICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxi
YWNrKGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKHsgV1RGTW92ZShidWZmZXIpIH0pOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZl
T2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykK
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpA
QCAtMzkxNCwxMiArMzkwOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2bwogICAgIFVOVVNF
RF9QQVJBTShmcmFtZUlEKTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2U7CisgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENG
RGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0
TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAjZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNl
KTsKKyAgICBjYWxsYmFjayhkYXRhQnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJl
cGFpbnRXaXRob3V0Q2FsbGJhY2soKQpAQCAtNTQ3Miw3ICs1NDY2LDcgQEAgdm9pZCBXZWJQYWdl
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IFByaW50SW4KIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFp
bkZyYW1lKCkudmlldygpOwogICAgIEludFNpemUgc25hcHNob3RTaXplOwpAQCAtNTQ5Nyw3ICs1
NDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYKICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7
CiAgICAgZnJhbWVWaWV3LnNldFBhaW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsK
IAotICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRl
UHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTU1NTEsMTIgKzU1NDUsMTIgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2Uo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICBj
b21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1Rv
UERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpkcmF3
UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBQ
cmludENvbnRleHRBY2Nlc3NTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFt
ZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwotICAgIGNhbGxiYWNr
KHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVf
dD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSk7CisgICAgY2FsbGJhY2so
U2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0KCkpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFp
blB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCkBAIC02OTkyLDcgKzY5ODYsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
Z2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBs
b2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBkb2N1bWVudExv
YWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKQEAgLTcwNjIsNyArNzA1Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJCiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2No
ZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhh
bmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVy
LCBkYXRhLmJ1ZmZlcigpID8gKmRhdGEuYnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LmdldCgpKTsKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIs
IGRhdGEuc2FmZUJ1ZmZlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlk
Q29tcGxldGUoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC03Mjg3LDEyICs3MjgxLDEyIEBAIHZvaWQgV2ViUGFn
ZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+CiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1h
Z2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRl
bnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1v
dmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRhY2htZW50
LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6
ZSgpKSk7CisgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEo
Y29udGVudFR5cGUsIGVuY2xvc2luZ0ltYWdlRGF0YS5zYWZlQnVmZmVyKCkpOwogICAgIH0KICAg
ICBjYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkuLjBhODI3
MDlhYzNmYTM1N2IxNzQyMzg4ZTgyODZiMmMwMGU2NDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHB1YmxpYzoK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3UGFn
ZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQz
Ml90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291
bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAK
QEAgLTEwMjMsNyArMTAyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdUb1BERmlPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJik7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKIAogI2lm
IFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZv
aWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSYpPiYmKTsKKyAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgQ2FsbGJhY2tJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmKT4mJik7CiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0x
MzA4LDcgKzEzMDgsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAj
ZW5kaWYKIApAQCAtMTY4MywxNSArMTY4MywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q29u
dGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQot
ICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKKyAgICB2
b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lkIGdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CisgICAgdm9pZCBnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVu
dFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0
cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBiZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEy
Li4xNGQxYzY3MzRiMjJiMzJlOTI1NzQwN2Y1N2IxYzRhYmIwZmU0NDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTIxMiwxNSArMjEyLDE1IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVu
dHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJp
bmcgcmVzdWx0KSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRl
bnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEp
IEFzeW5jCisgICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0
UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBT
dHJpbmcgcmVzb3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBidWZmZXIpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVz
b3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVy
KSBBc3luYwogICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4gKFN0
cmluZyBzdHJpbmcpIEFzeW5jCiAgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKCkg
LT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAg
ICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJDb3B5PiBkYXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkg
LT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3lu
YworICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGFSZWZlcmVu
Y2UpIEFzeW5jCiAKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0
IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJl
bmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4g
ZGV0YWlscykgQXN5bmMKIApAQCAtNDEzLDEyICs0MTMsMTIgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9y
UHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBB
c3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5m
bywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkgLT4g
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJhd1Bh
Z2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4g
KElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAgIERyYXdQYWdlc1RvUERGKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1
dGVQYWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkg
U3luY2hyb25vdXMKLSAgICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291
bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREZpT1Mo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
ZGF0YSkgQXN5bmMKICNlbmRpZgotICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBy
ZWN0KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQ
TEFURk9STShHVEspCiAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKSBBc3luYwpAQCAtNTUwLDcgKzU1MCw3IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGljb25EYXRhKSBBc3luYworICAgIERpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJ
ZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGljb25EYXRhKSBBc3luYwogICAg
IFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTU3MSw3ICs1NzEsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2ht
ZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwg
U3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkg
QXN5bmMKKyAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3Ry
aW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhKSAt
PiAoKSBBc3luYwogICAgIFVwZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggMDZkNTVmMTA4N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uNzBj
ZDA2YzZlMTEwM2U2MzYzMDE3MGM0Y2ExZmNiMDBlODA2YTZmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJT
YW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIlNoYXJlZE1lbW9yeS5oIgog
I2ltcG9ydCAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW1wb3J0ICJUYXBIYW5k
bGluZ1Jlc3VsdC5oIgpAQCAtNDI0NCwxMyArNDI0NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdU
b1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcgogICAgICAgICBhdXRvIHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJl
Y3QsIHNuYXBzaG90U2l6ZSwgMCk7CiAKICAgICAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdw
b3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwotICAg
ICAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHJlcGx5KFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRhdGEuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBk
cmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBkZlBh
Z2VEYXRhKTsKLSAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihw
ZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpKTsK
KyAgICByZXBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkpOwogCiAg
ICAgZW5kUHJpbnRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDE0Y2RmNzUxNWM2MmM0NWRhYjlmOWRiODE2ZmRjYjJkODg1Y2YzM2MuLmIwMzJjYzczOGE0
MGZkMjk4ZjBlMDI2OGZhMjlkN2U1NGQ1MDI0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBPYmplY3Q7CiB9CiAKIG5hbWVzcGFj
ZSBJUEMgewotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtNTUxLDcgKzU1MSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgY29uc3VtZUF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVBy
b2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA3NDkzYzNmOGY0NjUxZGRmYmQ1MDQxMWU3ZTIwNTY2YWQ5MGQ5MmZlLi40MmQ3NWEzOTRhOWNk
MjdkNDQ4OTRkN2Y5NTlhMDIxMDAxZDc2MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTk5LDcgKzE5OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlv
bnMoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlZ2lzdHJhdGlvbkRhdGEpCisgICAg
Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkg
cmVnaXN0cmF0aW9uRGF0YSkKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
c3RydWN0IFdlYktpdDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liaWxpdHlQcmVm
ZXJlbmNlcykKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBkZjFmOGNmYjEwYjI3ZTYxMjk4NTdkY2E5ZDgxNmFi
ZTE4MTcwNDVhLi4xNTNkODllMTUzYTcwZGMxYzU2NmM5MTYzMTNmNDA5NzkxMzliOTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
QEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNpbXBvcnQg
IlNhbmRib3hFeHRlbnNpb24uaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQVBJQ2Fz
dC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCkBAIC0xMjQ4LDE2ICsxMjQ5LDE2IEBA
IHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtRGlkV2FrZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
cm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogICAgIGlmICghUEFMOjppc0F1ZGlvVG9vbGJveENvcmVG
cmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0F1ZGlvVG9vbGJveENvcmVfQXVk
aW9Db21wb25lbnRBcHBseVNlcnZlclJlZ2lzdHJhdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byByZWdpc3RyYXRpb25zID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFyZWdpc3Ry
YXRpb25zKQorICAgIGlmICghZGF0YS5idWZmZXIoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gcmVnaXN0cmF0aW9ucyA9IGRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAg
YXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEFwcGx5U2VydmVyUmVnaXN0cmF0aW9ucyhyZWdpc3Ry
YXRpb25zLmdldCgpKTsKICAgICBpZiAobm9FcnIgIT0gZXJyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448585</attachid>
            <date>2022-01-07 07:09:38 -0800</date>
            <delta_ts>2022-01-07 07:34:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108020935.patch</filename>
            <type>text/plain</type>
            <size>110765</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFk
NzEyMzU5YzE2MDI3OGYuLjRhY2ZjNjE3NjMyMTQ2NzkwZGYxYzM5NmJjOGZkODQ1NDc0OTUwMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDMx
LDggKzQzMSw4IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvCiAgICAgICAgIHJhd1BsYXRmb3Jt
RGVsdGEgPSB7IFdlYkNvcmU6OkZsb2F0U2l6ZSgtSU9ISURFdmVudEdldEZsb2F0VmFsdWUoaW9I
SURFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZFNjcm9sbFgpLCAtSU9ISURFdmVudEdldEZs
b2F0VmFsdWUoaW9ISURFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZFNjcm9sbFkpKSB9Owog
CiAjaWYgSEFWRShQTEFURk9STV9TQ1JPTExfTU9NRU5UVU1fSU5URVJSVVBUSU9OX1JFQVNPTikK
LSAgICAgICAgYm9vbCBtb21lbnR1bVdhc0ludGVycnVwdGVkID0gSU9ISURFdmVudEdldFNjcm9s
bE1vbWVudHVtKGlvSElERXZlbnQuZ2V0KCkpICYga0lPSElERXZlbnRTY3JvbGxNb21lbnR1bUlu
dGVycnVwdGVkOwotICAgICAgICBtb21lbnR1bUVuZFR5cGUgPSBtb21lbnR1bVdhc0ludGVycnVw
dGVkID8gV2ViV2hlZWxFdmVudDo6TW9tZW50dW1FbmRUeXBlOjpJbnRlcnJ1cHRlZCA6IFdlYldo
ZWVsRXZlbnQ6Ok1vbWVudHVtRW5kVHlwZTo6TmF0dXJhbDsKKy8vICAgICAgICBib29sIG1vbWVu
dHVtV2FzSW50ZXJydXB0ZWQgPSBJT0hJREV2ZW50R2V0U2Nyb2xsTW9tZW50dW0oaW9ISURFdmVu
dC5nZXQoKSkgJiBrSU9ISURFdmVudFNjcm9sbE1vbWVudHVtSW50ZXJydXB0ZWQ7CisvLyAgICAg
ICAgbW9tZW50dW1FbmRUeXBlID0gbW9tZW50dW1XYXNJbnRlcnJ1cHRlZCA/IFdlYldoZWVsRXZl
bnQ6Ok1vbWVudHVtRW5kVHlwZTo6SW50ZXJydXB0ZWQgOiBXZWJXaGVlbEV2ZW50OjpNb21lbnR1
bUVuZFR5cGU6Ok5hdHVyYWw7CiAjZW5kaWYKICAgICB9KSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2
Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2ZjMzk3Li40NDU3MzEwOWFlMzMyM2Q2
OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTIwMSw3ICsyMDEsNiBA
QCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5j
cHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAogUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJh
YjJmOGM0MTI4Y2JiZThjLi4yMWMwOWFjNTIyODVjOTQyNTEyMThlZWFmODlmMGNiM2Q0ZWY3NDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlv
bjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGUKICAgICBpZiAo
cGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBkZkNvbmZpZ3VyYXRpb24ucmVjdCkp
CiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChwZGZDb25maWd1cmF0aW9u
LnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJlY3QsIFtoYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZEYXRhLmVtcHR5KCkpIHsKKyAgICBf
cGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRh
dGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBoYW5k
bGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6
ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0
YSgpOwogICAgICAgICBoYW5kbGVyKChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCAyOWY5MTc3NDU5NmNmMDA0Y2QwZDU3YjVlYTM4NmI1Y2IyMzNiMzBhLi5i
MGRkMTlhOGZlMjg0ZjQ4Y2UwN2UyZGE2MDQ2MTIwNzc2MTlhMGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNDIsNyAr
NDIsNiBAQAogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3Np
bmdXYXJuaW5nLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0jaW1wb3J0ICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJTeW5hcHNlU1BJLmgiCiAjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDY4MzM3M2VhZTAwZjVkYjQyYjgxNDZjZTlkNTMxYmM4YWMwYTU0YzMuLjEwYzgwNGU3ZDFl
NmFhYzU1M2E4YTk1NGU1NjE4NDZlN2U4ZDIyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMiw3ICszMiw3
IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1R5cGVSZWZXcmFwcGVyLmgiCkBAIC0zMDcs
NyArMzA3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0
aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSkgfSksIDApOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpKSwgMCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYWZiMzc0MmU5MjEwYjE5ZGI0YjQxNDUyODEyNGE0YzFiZmE1NmViMy4uNGZmYWFjNjNkZDI4
NmUxNWU2MjVmNWIwOGQ4Njk2YjdlMWMyMTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2Fm
ZUJyb3dzaW5nV2FybmluZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5o
IgpAQCAtNDM5NSwxMCArNDM5NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZwogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgZGF0YSk+IHRv
QVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2Fs
bGJhY2spCitzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIHJldHVybiBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYgZGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKGRhdGEgPyBB
UEk6OkRhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkucHRyKCkgOiBudWxs
cHRyKTsKKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mIGRhdGEpIG11dGFibGUgeworICAg
ICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3Jl
YXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSk7CiAgICAgfTsKIH0KIApAQCAt
ODk5MCw3ICs4OTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5n
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CkBAIC05ODgx
LDggKzk4ODQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGZhbHNlLCBsb2FkSWRlbnRpZmllciksIFtdKGF1dG8pIHsgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaWNv
bkRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
aWNvbkRhdGEpLmdldCgpKTsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgaWNvbkRhdGEpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpj
cmVhdGUoaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpLnB0cigpKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CkBAIC0xMDExNSwxMSArMTAxMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIENv
bXBsZXRpbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
Y29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKGF1dG8gZGF0YSA9IGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1h
Z2VEYXRhKCkpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07Ci0KLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxh
eSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RG
TW92ZShkYXRhUmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0
dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBh
dHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NmI0MTI2OTFjZjc0NDcxMTQ0ODAx
NGQ1ODk5MzdmNjlmNjg5N2UwLi5mNGVhYTVhMGY0YzRjMzFhNzIxMWMzNWIwNjU2OGVjNmNiMTI0
NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQwMCw5ICsx
NDAwLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IGRyYXdS
ZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJik7CiAgICAgdWlu
dDY0X3QgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGEqKT4mJik7Ci0gICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RkOjpwYWly
PHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgc3RkOjpwYWlyPHNp
emVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RXJyb3IqKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzguLmVhNTg3NzJlYTFiYmQx
NTQwNDljYmUzYmFjOWMxYWNkMDk0Yzc4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViVVJM
U2NoZW1lVGFzay5oIgogCiAjaW5jbHVkZSAiQVBJRnJhbWVJbmZvLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCkBAIC0xOTEsNyArMTkwLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93
ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2No
ZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X3Jlc291cmNlTG9hZGVySUQsIElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpKSwgbV93ZWJQ
YWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCmlu
ZGV4IDkxZmRmYzg0MzdhYTU3NzBlYmI5MjE2YjM3MWIzMmIyYmFkODJhMjUuLjY3YTNiYjMzNWY2
N2NjYmQ2Y2IwYTgyNGJmODIxYjkxODAyNjE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTCiAgICAgY2xpcGJvYXJkLnJlYWRCdWZmZXIoUGFz
dGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSwgWyZjbGlwYm9hcmQsIG9yaWdpbiwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBk
b21UeXBlczsKICAgICAgICAgaWYgKGF1dG8gZGF0YUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKSkg
ewotICAgICAgICAgICAgYXV0byBjdXN0b21EYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoKmRhdGFCdWZmZXIpOworICAgICAgICAgICAgYXV0byBjdXN0b21EYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoZGF0YUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICBpZiAoY3VzdG9tRGF0YS5vcmlnaW4oKSA9PSBv
cmlnaW4pIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9y
ZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgICAgICBkb21UeXBlcy5hZGQodHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDRlNDFj
NjU3Y2Y2MTgzZmFmZWZhMzcwNDBlNzllODY3MDBiNWEyOWEuLmFkZDJhZDI0OTQyZGExNWFjNGJk
NmNkNTJkZjk0OTI1ZGI0ZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC04OTcsMTIgKzg5NywxMiBAQCAtIChOU1VJbnRlZ2VyKV93a19w
YWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJp
bnRGbwogICAgIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCA9IENHUmVjdEdldEhlaWdo
dChwcmludGluZ1JlY3QpOwogCiAgICAgYXV0byByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2Vs
Zik7Ci0gICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBwZGZEYXRhKSB7CisgICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2Vs
Zl0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBwZGZEYXRhKSB7CiAgICAgICAgIHJldGFp
bmVkU2VsZi0+X3BkZlByaW50Q2FsbGJhY2tJRCA9IDA7Ci0gICAgICAgIGlmIChwZGZEYXRhLmVt
cHR5KCkpCisgICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgICAgIGF1dG8g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9w
dENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRmYWQ4YTBlZWNlMzIwYTEwLi4xNGM0
YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwMDksNyArMTAwOSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZv
clBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFn
bmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVj
dCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNj
YWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4g
V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCitzdGQ6
OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGExM2U1MTQ2MGY2
YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYuLjc1ZDVlNWE3OTUxNGRiYzNhYWFjMDBiOTg4
NGE1N2RhYzE5OGY5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUo
Y2VydGlmaWNhdGUuZ2V0KCkpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2Vy
dGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoY2VydGlmaWNhdGUpKSksIFdU
Rk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVh
OGEzN2ZjYTQ1OWUuLjhiZWNkNTliNWViMzdlMGQzYTUxNDUzOGYzNzM4MWQ3Zjc3ZDhjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlw
ZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShpbml0RGF0YSkpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghbWVzc2FnZS5idWZmZXIoKSkgewogICAgICAgICAgICAgY2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0
eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAo
Ym9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBj
aGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpV
cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1v
dmUocmVzcG9uc2UpKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9u
YWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
IGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3Zl
KGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwCmluZGV4IDYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIuLjc3
YzRlNmFmOGEwYjRlZTc4ZTgxYTQzNmI2NjQ2N2RhNWY1OTBlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oPgpAQCAtMjAwLDE4ICsyMDAsMTYgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUK
IAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNv
ZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
CiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4K
LXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSB7IGRhdGEgfTsKLQogICAgIHNpemVfdCBmcmFtZUNvdW50OwogICAgIEludFNpemUgc2l6
ZTsKICAgICBib29sIGhhc1RyYWNrOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVj
b2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvczsKLSAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBkYXRhUmVmZXJlbmNlLCBhbGxEYXRhUmVj
ZWl2ZWQpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGE6OlJl
cGx5KGZyYW1lQ291bnQsIHNpemUsIGhhc1RyYWNrLCBmcmFtZUluZm9zKSwgMCkpCisgICAgaWYg
KCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhKG1faWRlbnRpZmllciwgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KGRhdGEpLCBhbGxEYXRhUmVjZWl2ZWQpLCBNZXNzYWdlczo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGE6OlJlcGx5KGZyYW1lQ291bnQsIHNpemUsIGhh
c1RyYWNrLCBmcmFtZUluZm9zKSwgMCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNBbGxE
YXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCA0
MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhLi45YzA4ODE2MWVkZGJmMjM0
MGY4N2EwYmI5NzM0MTM3ZWE3ZTNkNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29y
ZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9u
ZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
CmluZGV4IDA4MmIzMzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMuLmJlZGRlY2Ji
MDc0ZDM0MTJhOWJlOTNjYmNkNTlhZTE5MjQ3ZjJiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUltYWdl
RGVjb2RlckFWRi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00Miw4ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogUmVmUHRyPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRl
SW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPElt
YWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7Ci0gICAgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07Ci0gICAgaWYg
KCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YVJlZmVy
ZW5jZSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNy
ZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKKyAgICBpZiAo
IWVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2RlcihJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoZGF0YSksIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwg
MCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFpbWFnZURlY29kZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggYTUzZjE1N2JlZWJkN2RiMmU4
MWIyZjVlY2JkNjM4MTg2MmE2ODA4YS4uNjE1NWE4ZGE5ZjQ4ZmVjODQ2YTlhNDc4YjY1YzJlYjM1
NWI4NmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY29udmVy
dFRvQXJyYXlCdWZmZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogewogICAgIGlm
IChidWZmZXIuYnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZl
cigpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC02Miw3ICs2Miw3IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVydFRvU2hh
cmVkQnVmZmVyQ29weShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4gSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkp
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxl
Z2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZh
Y3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2Li5l
YWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4ZGRhY2RhODc2MDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yMDksNyArMjA5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICBpZiAoVU5MSUtF
TFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKSkpIHsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIp
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIxOCw4ICsyMTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0XwogICAgICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVj
ZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCkgPyBSZWYgeyAqZGF0YS5idWZmZXIoKSB9
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5zYWZlQnVmZmVyKCksIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAz
MTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhLi43ZWJmOTgwYTg5NGQ5MjYz
Mzc0MDE0MWFmOGMxNDhmZjJiNWVjNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODUsOSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVy
KSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBAIC0xNDIsOSAr
MTQyLDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggMjhjMTRiYTUzNjYzYzU1YjYxYjEwOTgxMmMwNDhhMDIwNTZiZDM4
ZC4uYzRkZjhhZjIyYjMzYWI4YWE5ZDc3NTJiZDU4YTI3ZTk2YzRlMTczZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hv
dWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6Ogog
CiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJl
ZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50
aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5KFdURk1vdmUoZGF0YSkpKSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
ckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGVkNGY1ZGU5ZDVlNTYx
OGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMuLjRiNmIzNDg1N2U3OGU1NmY1MjZiY2Y2NDUzYzQ1
MmI3ZTQzMjRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDIsNyAr
NDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZjg5ZmY3MmEwZDMxYmVjMTFlZjgwMjk3ZWZiYTkyYzJhN2JjNjZi
NS4uZmU3ZThkOTU1Y2FiNWUzN2U2ZjFmZWEzZDhjNjBhZDA4NGNjNTRlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCIKICNpbmNsdWRl
ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgiCkBAIC0zODA1LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
cyBpbmNsdWRlQ2hpbAogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsYmFjayh7IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9KTsKIH0KQEAgLTM4MjUsNyArMzgy
NSw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM4MzMsMTIgKzM4MzMs
MTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHQKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIo
ZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0
KCkpKSB9OworICAgICAgICBkYXRhQnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgotICAgIGNhbGxiYWNrKGRhdGFS
ZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZmZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQpAQCAtMzg1OSw3ICszODU5LDcgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgKICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4m
JiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKSkgewpAQCAtMzg3MSwxMCArMzg3MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJl
bmNlID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKQEAgLTM4OTAsNyArMzg4Nyw3IEBA
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJh
bWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJM
U3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4OTgsMTMgKzM4OTUsMTAgQEAg
dm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgfQogCi0gICAgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3Zl
KGJ1ZmZlcikpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+
JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gZGF0YTsKQEAgLTM5MTQsMTIgKzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJB
cmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm8KICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVm
ZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9
IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7
CiAjZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRh
QnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KQpAQCAtNTQ3Miw3ICs1NDY2LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW4KIH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwogICAg
IEludFNpemUgc25hcHNob3RTaXplOwpAQCAtNTQ5Nyw3ICs1NDkxLDcgQEAgdm9pZCBXZWJQYWdl
OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiYKICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qo
b3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7CiAgICAgZnJhbWVWaWV3LnNldFBh
aW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsKIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtNTU1MSwxMiArNTU0NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFn
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2Vz
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmRy
YXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAg
IFByaW50Q29udGV4dEFjY2Vzc1Njb3BlIHNjb3BlIHsgKnRoaXMgfTsKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZy
YW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgY2FsbGJh
Y2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9KTsKKyAgICBjYWxsYmFj
ayhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VE
YXRhKQpAQCAtNjk5MiwxNCArNjk4NiwxNCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVy
TG9jaygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9J
bnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoKmljb25EYXRhKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTcwNjIsNyArNzA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJCiAgICAgYXV0
byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldCho
YW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+
dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmJ1ZmZlcigpID8gKmRhdGEu
YnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICBoYW5kbGVyLT50
YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2FmZUJ1ZmZlcigpKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViVVJMU2NoZW1lSGFu
ZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBA
IC03Mjg3LDEyICs3MjgxLDEyIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+CiAgICAgY2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4m
JiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRh
Y2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewog
ICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBh
dHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlw
ZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdp
dGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURh
dGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF0dGFjaG1l
bnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29udGVudFR5cGUsIGVuY2xvc2luZ0lt
YWdlRGF0YS5zYWZlQnVmZmVyKCkpOwogICAgIH0KICAgICBjYWxsYmFjaygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ4ODY2NzA3YzQ2MTNk
OWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkuLjBhODI3MDlhYzNmYTM1N2IxNzQyMzg4ZTgyODZi
MmMwMGU2NDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
UHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7
CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPU0Fz
eW5jUmVwbHkmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAg
dm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJp
bnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik+JiYpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9z
ZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAgdm9p
ZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBwdWJsaWM6
CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdl
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFn
ZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApAQCAtMTY4MywxNSArMTY4
MywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+
JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01I
VE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
JiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAg
dm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2
b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4mKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYp
PiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYm
KTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7
CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAg
ICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3Rk
OjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiZGE1ZjUw
YWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyLi4xNGQxYzY3MzRiMjJiMzJlOTI1NzQw
N2Y1N2IxYzRhYmIwZmU0NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMiwxNSArMjEyLDE1IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAt
PiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwogI2VuZGlm
CiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgR2V0Q29udGVudHNB
c01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRp
ZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5j
ZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiBidWZmZXIpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYwogICAgIEdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAg
R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5j
Ci0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhKSBB
c3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFdlYkFyY2hpdmVPZkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAKICAgICBSdW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIApAQCAtNDEz
LDEyICs0MTMsMTIgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb21wdXRlUGFnZXNG
b3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdl
UmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RF
ZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
KSBBc3luYworICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwg
dWludDMyX3QgY291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKLSAgICBEcmF3VG9Q
REZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdl
Q291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgotICAg
IERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkg
QXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKSBBc3luYwpAQCAtNTUwLDcgKzU1MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAK
ICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikK
IAotICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpD
YWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGljb25EYXRhKSBBc3luYworICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBk
ZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50
KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTU3
MSw3ICs1NzEsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcg
Y29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
U3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJp
bmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0
dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDZkNTVmMTA4N2Nh
NDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uNzBjZDA2YzZlMTEwM2U2MzYzMDE3MGM0Y2Ex
ZmNiMDBlODA2YTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIlJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbXBvcnQgIlNoYXJlZE1lbW9yeS5oIgogI2ltcG9ydCAiU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlLmgiCiAjaW1wb3J0ICJUYXBIYW5kbGluZ1Jlc3VsdC5oIgpAQCAtNDI0NCwx
MyArNDI0NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcgogICAgICAgICBhdXRvIHBkZkRh
dGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CiAK
ICAgICAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFs
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwotICAgICAgICByZXBseShJUEM6OkRhdGFSZWZl
cmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBk
ZkRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHJlcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRh
dGEuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDRk11
dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJ
RCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICByZXBseShJUEM6
OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0
YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpKTsKKyAgICByZXBseShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQoKSkpOwogCiAgICAgZW5kUHJpbnRpbmcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE0Y2RmNzUxNWM2MmM0NWRhYjlm
OWRiODE2ZmRjYjJkODg1Y2YzM2MuLmIwMzJjYzczOGE0MGZkMjk4ZjBlMDI2OGZhMjlkN2U1NGQ1
MDI0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtODQsNyArODQs
NyBAQCBjbGFzcyBPYmplY3Q7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewotY2xhc3MgU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFj
ZSBQQUwgewpAQCAtNTUxLDcgKzU1MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZvaWQgY29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik7CiAjZW5kaWYKICAg
ICAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3NDkzYzNmOGY0NjUxZGRmYmQ1MDQx
MWU3ZTIwNTY2YWQ5MGQ5MmZlLi40MmQ3NWEzOTRhOWNkMjdkNDQ4OTRkN2Y5NTlhMDIxMDAxZDc2
MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMTk5LDcgKzE5OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIHJlZ2lzdHJhdGlvbkRhdGEpCisgICAgQ29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgcmVnaXN0cmF0aW9uRGF0YSkKICAgICBB
Y2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNEaWRDaGFuZ2Uoc3RydWN0IFdlYktpdDo6QWNjZXNzaWJp
bGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlcykKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRl
eCBkZjFmOGNmYjEwYjI3ZTYxMjk4NTdkY2E5ZDgxNmFiZTE4MTcwNDVhLi4xNTNkODllMTUzYTcw
ZGMxYzU2NmM5MTYzMTNmNDA5NzkxMzliOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBv
cnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIlNoYXJl
ZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NX
YXRjaGVyLmgiCkBAIC0xMjQ4LDE2ICsxMjQ5LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVt
RGlkV2FrZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQg
V2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAog
ICAgIGlmICghUEFMOjppc0F1ZGlvVG9vbGJveENvcmVGcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAh
UEFMOjpjYW5Mb2FkX0F1ZGlvVG9vbGJveENvcmVfQXVkaW9Db21wb25lbnRBcHBseVNlcnZlclJl
Z2lzdHJhdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWdpc3RyYXRpb25z
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFyZWdpc3RyYXRpb25zKQorICAgIGlmICghZGF0YS5i
dWZmZXIoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IGRhdGEu
YnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVu
dEFwcGx5U2VydmVyUmVnaXN0cmF0aW9ucyhyZWdpc3RyYXRpb25zLmdldCgpKTsKICAgICBpZiAo
bm9FcnIgIT0gZXJyKQo=
</data>
<flag name="commit-queue"
          id="474491"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448587</attachid>
            <date>2022-01-07 07:21:44 -0800</date>
            <delta_ts>2022-01-07 08:13:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108022141.patch</filename>
            <type>text/plain</type>
            <size>110811</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDkyMGRlMDBiYjY4NjIwMmI2YzFkNjRmYWFk
NzEyMzU5YzE2MDI3OGYuLjRhY2ZjNjE3NjMyMTQ2NzkwZGYxYzM5NmJjOGZkODQ1NDc0OTUwMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQpAQCAtNDMx
LDggKzQzMSw4IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvCiAgICAgICAgIHJhd1BsYXRmb3Jt
RGVsdGEgPSB7IFdlYkNvcmU6OkZsb2F0U2l6ZSgtSU9ISURFdmVudEdldEZsb2F0VmFsdWUoaW9I
SURFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZFNjcm9sbFgpLCAtSU9ISURFdmVudEdldEZs
b2F0VmFsdWUoaW9ISURFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZFNjcm9sbFkpKSB9Owog
CiAjaWYgSEFWRShQTEFURk9STV9TQ1JPTExfTU9NRU5UVU1fSU5URVJSVVBUSU9OX1JFQVNPTikK
LSAgICAgICAgYm9vbCBtb21lbnR1bVdhc0ludGVycnVwdGVkID0gSU9ISURFdmVudEdldFNjcm9s
bE1vbWVudHVtKGlvSElERXZlbnQuZ2V0KCkpICYga0lPSElERXZlbnRTY3JvbGxNb21lbnR1bUlu
dGVycnVwdGVkOwotICAgICAgICBtb21lbnR1bUVuZFR5cGUgPSBtb21lbnR1bVdhc0ludGVycnVw
dGVkID8gV2ViV2hlZWxFdmVudDo6TW9tZW50dW1FbmRUeXBlOjpJbnRlcnJ1cHRlZCA6IFdlYldo
ZWVsRXZlbnQ6Ok1vbWVudHVtRW5kVHlwZTo6TmF0dXJhbDsKKy8vICAgICAgICBib29sIG1vbWVu
dHVtV2FzSW50ZXJydXB0ZWQgPSBJT0hJREV2ZW50R2V0U2Nyb2xsTW9tZW50dW0oaW9ISURFdmVu
dC5nZXQoKSkgJiBrSU9ISURFdmVudFNjcm9sbE1vbWVudHVtSW50ZXJydXB0ZWQ7CisvLyAgICAg
ICAgbW9tZW50dW1FbmRUeXBlID0gbW9tZW50dW1XYXNJbnRlcnJ1cHRlZCA/IFdlYldoZWVsRXZl
bnQ6Ok1vbWVudHVtRW5kVHlwZTo6SW50ZXJydXB0ZWQgOiBXZWJXaGVlbEV2ZW50OjpNb21lbnR1
bUVuZFR5cGU6Ok5hdHVyYWw7CiAjZW5kaWYKICAgICB9KSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2
Nzk2Mzc4OWZhMzQ3YmY4YWQ1NjRmOTVkM2FmMWM5YjlhN2ZjMzk3Li40NDU3MzEwOWFlMzMyM2Q2
OWUwMjI3YmQ3YWE0MTVhM2NiODc5M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTIwMSw3ICsyMDEsNiBA
QCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAKIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAotUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwCiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5j
cHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAogUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1MmQ2Mzk1ZjAwNjNiNmE5Y2NiMDYwNGJh
YjJmOGM0MTI4Y2JiZThjLi4yMWMwOWFjNTIyODVjOTQyNTEyMThlZWFmODlmMGNiM2Q0ZWY3NDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTE2NDIsMTMgKzE2NDIsMTMgQEAgLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlv
bjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGUKICAgICBpZiAo
cGRmQ29uZmlndXJhdGlvbiAmJiAhQ0dSZWN0SXNOdWxsKHBkZkNvbmZpZ3VyYXRpb24ucmVjdCkp
CiAgICAgICAgIGZsb2F0UmVjdCA9IFdlYkNvcmU6OkZsb2F0UmVjdChwZGZDb25maWd1cmF0aW9u
LnJlY3QpOwogCi0gICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJlY3QsIFtoYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBwZGZEYXRhKSB7Ci0gICAgICAgIGlmIChwZGZEYXRhLmVtcHR5KCkpIHsKKyAgICBf
cGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRh
dGEpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBoYW5k
bGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6
ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0
YSgpOwogICAgICAgICBoYW5kbGVyKChOU0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCAyOWY5MTc3NDU5NmNmMDA0Y2QwZDU3YjVlYTM4NmI1Y2IyMzNiMzBhLi5i
MGRkMTlhOGZlMjg0ZjQ4Y2UwN2UyZGE2MDQ2MTIwNzc2MTlhMGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNDIsNyAr
NDIsNiBAQAogI2ltcG9ydCAiU2FmZUJyb3dzaW5nU1BJLmgiCiAjaW1wb3J0ICJTYWZlQnJvd3Np
bmdXYXJuaW5nLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0jaW1wb3J0ICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJTeW5hcHNlU1BJLmgiCiAjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDY4MzM3M2VhZTAwZjVkYjQyYjgxNDZjZTlkNTMxYmM4YWMwYTU0YzMuLjEwYzgwNGU3ZDFl
NmFhYzU1M2E4YTk1NGU1NjE4NDZlN2U4ZDIyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMiw3ICszMiw3
IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1R5cGVSZWZXcmFwcGVyLmgiCkBAIC0zMDcs
NyArMzA3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lz
dHJhdGlvbnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0
aW9ucy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSkgfSksIDApOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpKSwgMCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYWZiMzc0MmU5MjEwYjE5ZGI0YjQxNDUyODEyNGE0YzFiZmE1NmViMy4uNGZmYWFjNjNkZDI4
NmUxNWU2MjVmNWIwOGQ4Njk2YjdlMWMyMTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04NSw3ICs4NSw2IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2Fm
ZUJyb3dzaW5nV2FybmluZy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5o
IgpAQCAtNDM5NSwxMCArNDM5NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZwogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXN0YXRpYyBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgZGF0YSk+IHRv
QVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2Fs
bGJhY2spCitzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mIGRhdGEpPiB0b0FQSURhdGFDYWxsYmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmIGNhbGxiYWNrKQogewotICAgIHJldHVybiBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYgZGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKGRhdGEgPyBB
UEk6OkRhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkucHRyKCkgOiBudWxs
cHRyKTsKKyAgICByZXR1cm4gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mIGRhdGEpIG11dGFibGUgeworICAg
ICAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3Jl
YXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSk7CiAgICAgfTsKIH0KIApAQCAt
ODk5MCw3ICs4OTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5n
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2sp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CkBAIC05ODgx
LDggKzk4ODQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGZhbHNlLCBsb2FkSWRlbnRpZmllciksIFtdKGF1dG8pIHsgfSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaWNv
bkRhdGEpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
aWNvbkRhdGEpLmdldCgpKTsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgaWNvbkRhdGEpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpj
cmVhdGUoaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpLnB0cigpKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CkBAIC0xMDExNSwxMSArMTAxMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIENv
bXBsZXRpbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
Y29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2U7Ci0gICAgaWYgKGF1dG8gZGF0YSA9IGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1h
Z2VEYXRhKCkpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07Ci0KLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxh
eSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RG
TW92ZShkYXRhUmVmZXJlbmNlKSksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0
dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBh
dHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KGF0dGFjaG1lbnQuZW5jbG9zaW5nSW1hZ2VEYXRhKCkpKSwgV1RGTW92ZShj
YWxsYmFjaykpOwogfQogCiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NmI0MTI2OTFjZjc0NDcxMTQ0ODAx
NGQ1ODk5MzdmNjlmNjg5N2UwLi5mNGVhYTVhMGY0YzRjMzFhNzIxMWMzNWIwNjU2OGVjNmNiMTI0
NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQwMCw5ICsx
NDAwLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IGRyYXdS
ZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJik7CiAgICAgdWlu
dDY0X3QgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGEqKT4mJik7Ci0gICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdU
b1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RkOjpwYWly
PHNpemVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgc3RkOjpwYWlyPHNp
emVfdCwgdWludDY0X3Q+IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RXJyb3IqKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IGQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzguLmVhNTg3NzJlYTFiYmQx
NTQwNDljYmUzYmFjOWMxYWNkMDk0Yzc4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViVVJM
U2NoZW1lVGFzay5oIgogCiAjaW5jbHVkZSAiQVBJRnJhbWVJbmZvLmgiCi0jaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCkBAIC0xOTEsNyArMTkwLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93
ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2No
ZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X3Jlc291cmNlTG9hZGVySUQsIElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpKSwgbV93ZWJQ
YWdlSUQpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCmlu
ZGV4IDkxZmRmYzg0MzdhYTU3NzBlYmI5MjE2YjM3MWIzMmIyYmFkODJhMjUuLjY3YTNiYjMzNWY2
N2NjYmQ2Y2IwYTgyNGJmODIxYjkxODAyNjE5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTCiAgICAgY2xpcGJvYXJkLnJlYWRCdWZmZXIoUGFz
dGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSwgWyZjbGlwYm9hcmQsIG9yaWdpbiwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBk
b21UeXBlczsKICAgICAgICAgaWYgKGF1dG8gZGF0YUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKSkg
ewotICAgICAgICAgICAgYXV0byBjdXN0b21EYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoKmRhdGFCdWZmZXIpOworICAgICAgICAgICAgYXV0byBjdXN0b21EYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoZGF0YUJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICBpZiAoY3VzdG9tRGF0YS5vcmlnaW4oKSA9PSBv
cmlnaW4pIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9y
ZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgICAgICBkb21UeXBlcy5hZGQodHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDRlNDFj
NjU3Y2Y2MTgzZmFmZWZhMzcwNDBlNzllODY3MDBiNWEyOWEuLmFkZDJhZDI0OTQyZGExNWFjNGJk
NmNkNTJkZjk0OTI1ZGI0ZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC04OTcsMTIgKzg5NywxMiBAQCAtIChOU1VJbnRlZ2VyKV93a19w
YWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJp
bnRGbwogICAgIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCA9IENHUmVjdEdldEhlaWdo
dChwcmludGluZ1JlY3QpOwogCiAgICAgYXV0byByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2Vs
Zik7Ci0gICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2VsZl0oY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBwZGZEYXRhKSB7CisgICAgYXV0byBwYWlyID0gX3BhZ2UtPmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKGZyYW1lSUQsIHByaW50SW5mbywgW3JldGFpbmVkU2Vs
Zl0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBwZGZEYXRhKSB7CiAgICAgICAgIHJldGFp
bmVkU2VsZi0+X3BkZlByaW50Q2FsbGJhY2tJRCA9IDA7Ci0gICAgICAgIGlmIChwZGZEYXRhLmVt
cHR5KCkpCisgICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgICAgIGF1dG8g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YS5nZXQoKSkpOwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmludGVkRG9jdW1lbnQgPSBhZG9w
dENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA4Mjk4YmViODU3YzJjNWE3YmY2NGMxODRmYWQ4YTBlZWNlMzIwYTEwLi4xNGM0
YzhmMzUyMjNmMWUyODVmMGI4ZDNiMGJjNTYyMTAwNWZlYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEwMDksNyArMTAwOSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZv
clBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFn
bmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVj
dCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNj
YWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi1zdGQ6OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4g
V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCitzdGQ6
OnBhaXI8c2l6ZV90LCB1aW50NjRfdD4gV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZERyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CiAgICAgICAgIGNhbGxiYWNrKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGExM2U1MTQ2MGY2
YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYuLjc1ZDVlNWE3OTUxNGRiYzNhYWFjMDBiOTg4
NGE1N2RhYzE5OGY5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2VydGlmaWNhdGUo
Y2VydGlmaWNhdGUuZ2V0KCkpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6U2V0U2VydmVyQ2Vy
dGlmaWNhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoY2VydGlmaWNhdGUpKSksIFdU
Rk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVh
OGEzN2ZjYTQ1OWUuLjhiZWNkNTliNWViMzdlMGQzYTUxNDUzOGYzNzM4MWQ3Zjc3ZDhjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlw
ZSwgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShpbml0RGF0YSkpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghbWVzc2FnZS5idWZmZXIoKSkgewogICAgICAgICAgICAgY2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0
eXBlLCBXVEZNb3ZlKHJlc3BvbnNlKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAo
Ym9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBj
aGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpV
cGRhdGVMaWNlbnNlKHNlc3Npb25JZCwgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1v
dmUocmVzcG9uc2UpKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5
cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9u
YWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
IGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3Zl
KGNoYW5nZWRFeHBpcmF0aW9uKSwgV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2Vl
ZGVkIDogRmFpbGVkKTsKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwCmluZGV4IDYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIuLjc3
YzRlNmFmOGEwYjRlZTc4ZTgxYTQzNmI2NjQ2N2RhNWY1OTBlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oPgpAQCAtMjAwLDE4ICsyMDAsMTYgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUK
IAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNv
ZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
CiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4K
LXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSB7IGRhdGEgfTsKLQogICAgIHNpemVfdCBmcmFtZUNvdW50OwogICAgIEludFNpemUgc2l6
ZTsKICAgICBib29sIGhhc1RyYWNrOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVj
b2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvczsKLSAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBkYXRhUmVmZXJlbmNlLCBhbGxEYXRhUmVj
ZWl2ZWQpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGE6OlJl
cGx5KGZyYW1lQ291bnQsIHNpemUsIGhhc1RyYWNrLCBmcmFtZUluZm9zKSwgMCkpCisgICAgaWYg
KCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhKG1faWRlbnRpZmllciwgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KGRhdGEpLCBhbGxEYXRhUmVjZWl2ZWQpLCBNZXNzYWdlczo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGE6OlJlcGx5KGZyYW1lQ291bnQsIHNpemUsIGhh
c1RyYWNrLCBmcmFtZUluZm9zKSwgMCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNBbGxE
YXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCA0
MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhLi45YzA4ODE2MWVkZGJmMjM0
MGY4N2EwYmI5NzM0MTM3ZWE3ZTNkNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29y
ZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9u
ZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
CmluZGV4IDA4MmIzMzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMuLmJlZGRlY2Ji
MDc0ZDM0MTJhOWJlOTNjYmNkNTlhZTE5MjQ3ZjJiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUltYWdl
RGVjb2RlckFWRi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00Miw4ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogUmVmUHRyPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRl
SW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPElt
YWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7Ci0gICAgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07Ci0gICAgaWYg
KCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoZGF0YVJlZmVy
ZW5jZSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNy
ZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKKyAgICBpZiAo
IWVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2RlcihJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoZGF0YSksIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwg
MCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFpbWFnZURlY29kZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggYTUzZjE1N2JlZWJkN2RiMmU4
MWIyZjVlY2JkNjM4MTg2MmE2ODA4YS4uNjE1NWE4ZGE5ZjQ4ZmVjODQ2YTlhNDc4YjY1YzJlYjM1
NWI4NmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY29udmVy
dFRvQXJyYXlCdWZmZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgYnVmZmVyKQogewogICAgIGlm
IChidWZmZXIuYnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gYnVmZmVyLmJ1ZmZl
cigpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC02Miw3ICs2Miw3IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVydFRvU2hh
cmVkQnVmZmVyQ29weShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwg
YXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4gSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkp
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxl
Z2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZh
Y3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3NDkxOTBkMTliMGZhMWNlMGI1MTFlODQyMDcyNTYwMDY5MTE4NjA2Li5l
YWRkODQ3MzBmMTFiNzczYjAzNTJkYmFhZmU4ZGRhY2RhODc2MDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0yMDksNyArMjA5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICBpZiAoVU5MSUtF
TFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKSkpIHsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIp
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIxOCw4ICsyMTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0XwogICAgICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVj
ZWl2aW5nIGRhdGEiKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCkgPyBSZWYgeyAqZGF0YS5idWZmZXIoKSB9
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVE
YXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5zYWZlQnVmZmVyKCksIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCAz
MTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhLi43ZWJmOTgwYTg5NGQ5MjYz
Mzc0MDE0MWFmOGMxNDhmZjJiNWVjNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtODUsOSArODUsOSBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVm
ZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVy
KSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBAIC0xNDIsOSAr
MTQyLDkgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90
PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggMjhjMTRiYTUzNjYzYzU1YjYxYjEwOTgxMmMwNDhhMDIwNTZiZDM4
ZC4uYzRkZjhhZjIyYjMzYWI4YWE5ZDc3NTJiZDU4YTI3ZTk2YzRlMTczZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hv
dWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6Ogog
CiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJl
ZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50
aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5KFdURk1vdmUoZGF0YSkpKSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
ckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGVkNGY1ZGU5ZDVlNTYx
OGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMuLjRiNmIzNDg1N2U3OGU1NmY1MjZiY2Y2NDUzYzQ1
MmI3ZTQzMjRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDIsNyAr
NDIsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZjg5ZmY3MmEwZDMxYmVjMTFlZjgwMjk3ZWZiYTkyYzJhN2JjNjZi
NS4uZmU3ZThkOTU1Y2FiNWUzN2U2ZjFmZWEzZDhjNjBhZDA4NGNjNTRlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCIKICNpbmNsdWRl
ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgiCkBAIC0zODA1LDcgKzM4MDUsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
cyBpbmNsdWRlQ2hpbAogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsYmFjayh7IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKSB9KTsKIH0KQEAgLTM4MjUsNyArMzgy
NSw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM4MzMsMTIgKzM4MzMs
MTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHQKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24o
KTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIo
ZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0
KCkpKSB9OworICAgICAgICBkYXRhQnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgotICAgIGNhbGxiYWNrKGRhdGFS
ZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZmZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQpAQCAtMzg1OSw3ICszODU5LDcgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgKICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4m
JiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKSkgewpAQCAtMzg3MSwxMCArMzg3MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJl
bmNlID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2Fs
bGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKQEAgLTM4OTAsNyArMzg4Nyw3IEBA
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJh
bWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJM
U3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4OTgsMTMgKzM4OTUsMTAgQEAg
dm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgfQogCi0gICAgSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3Zl
KGJ1ZmZlcikpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+
JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gZGF0YTsKQEAgLTM5MTQsMTIgKzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJB
cmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm8KICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVm
ZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9
IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7
CiAjZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRh
QnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2so
KQpAQCAtNTQ3Miw3ICs1NDY2LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW4KIH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwogICAg
IEludFNpemUgc25hcHNob3RTaXplOwpAQCAtNTQ5Nyw3ICs1NDkxLDcgQEAgdm9pZCBXZWJQYWdl
OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiYKICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qo
b3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7CiAgICAgZnJhbWVWaWV3LnNldFBh
aW50QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsKIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtNTU1MSwxMiArNTU0NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFn
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2Vz
VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmRy
YXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAg
IFByaW50Q29udGV4dEFjY2Vzc1Njb3BlIHNjb3BlIHsgKnRoaXMgfTsKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZy
YW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgY2FsbGJh
Y2soeyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9KTsKKyAgICBjYWxsYmFj
ayhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VE
YXRhKQpAQCAtNjk5MiwxNCArNjk4NiwxNCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVy
TG9jaygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9J
bnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoKmljb25EYXRhKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTcwNjIsNyArNzA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJCiAgICAgYXV0
byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldCho
YW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+
dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmJ1ZmZlcigpID8gKmRhdGEu
YnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICBoYW5kbGVyLT50
YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2FmZUJ1ZmZlcigpKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViVVJMU2NoZW1lSGFu
ZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBA
IC03Mjg3LDEyICs3MjgxLDEyIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+CiAgICAgY2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4m
JiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byBhdHRh
Y2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewog
ICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBh
dHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlw
ZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdp
dGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURh
dGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF0dGFjaG1l
bnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29udGVudFR5cGUsIGVuY2xvc2luZ0lt
YWdlRGF0YS5zYWZlQnVmZmVyKCkpOwogICAgIH0KICAgICBjYWxsYmFjaygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ4ODY2NzA3YzQ2MTNk
OWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkuLjBhODI3MDlhYzNmYTM1N2IxNzQyMzg4ZTgyODZi
MmMwMGU2NDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
UHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7
CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAgdm9pZCBk
cmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPU0Fz
eW5jUmVwbHkmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAg
dm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJp
bnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik+JiYpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9z
ZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAgdm9p
ZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBwdWJsaWM6
CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdl
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF0dGFj
aG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFn
ZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRh
Y2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApAQCAtMTY4MywxNSArMTY4
MywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+
JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01I
VE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
JiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7Ci0gICAg
dm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAgICB2
b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4mKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYp
PiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYm
KTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJik7
CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmKTsKKyAg
ICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3Rk
OjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiZGE1ZjUw
YWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyLi4xNGQxYzY3MzRiMjJiMzJlOTI1NzQw
N2Y1N2IxYzRhYmIwZmU0NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMiwxNSArMjEyLDE1IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAt
PiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwogI2VuZGlm
CiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgR2V0Q29udGVudHNB
c01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRp
ZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5j
ZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiBidWZmZXIpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYwogICAgIEdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCiAgICAg
R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5j
Ci0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhKSBB
c3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFdlYkFyY2hpdmVPZkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAKICAgICBSdW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIApAQCAtNDEz
LDEyICs0MTMsMTIgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb21wdXRlUGFnZXNG
b3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdl
UmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RF
ZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
KSBBc3luYworICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwg
dWludDMyX3QgY291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKLSAgICBEcmF3VG9Q
REZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdl
Q291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRpZgotICAg
IERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkg
QXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKSBBc3luYwpAQCAtNTUwLDcgKzU1MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAK
ICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikK
IAotICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpD
YWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGljb25EYXRhKSBBc3luYworICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBk
ZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50
KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKQEAgLTU3
MSw3ICs1NzEsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcg
Y29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
U3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplLCBTdHJp
bmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVwZGF0ZUF0
dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDZkNTVmMTA4N2Nh
NDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uZmQ1NDhmYThmNmZlNzc1ZWI4MmNhOWIxNGQ4
NmZmOTRiYmFjNDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIlJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbXBvcnQgIlNoYXJlZE1lbW9yeS5oIgogI2ltcG9ydCAiU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlLmgiCiAjaW1wb3J0ICJUYXBIYW5kbGluZ1Jlc3VsdC5oIgpAQCAtNDI0NCwx
MyArNDI0NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcgogICAgICAgICBhdXRvIHBkZkRh
dGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwgMCk7CiAK
ICAgICAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFs
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwotICAgICAgICByZXBseShJUEM6OkRhdGFSZWZl
cmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBk
ZkRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHJlcGx5KElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRy
YXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIDAsIHBhZ2VDb3VudCwgcGRmUGFn
ZURhdGEpOwotICAgIHJlcGx5KElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBk
ZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkpOwor
ICAgIHJlcGx5KElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQ
YWdlRGF0YS5nZXQoKSkpKTsKIAogICAgIGVuZFByaW50aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAxNGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgxNmZkY2Iy
ZDg4NWNmMzNjLi5iMDMyY2M3MzhhNDBmZDI5OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3Mg
T2JqZWN0OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgUEFMIHsKQEAg
LTU1MSw3ICs1NTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRp
b25zKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogI2VuZGlmCiAgICAgCiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2UyMDU2NmFk
OTBkOTJmZS4uNDJkNzVhMzk0YTljZDI3ZDQ0ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5
OSw3ICsxOTksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJl
ZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDb25zdW1lQXVk
aW9Db21wb25lbnRSZWdpc3RyYXRpb25zKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBy
ZWdpc3RyYXRpb25EYXRhKQorICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAgQWNjZXNzaWJpbGl0
eVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQcmVmZXJl
bmNlcyBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZGYxZjhjZmIx
MGIyN2U2MTI5ODU3ZGNhOWQ4MTZhYmUxODE3MDQ1YS4uMTUzZDg5ZTE1M2E3MGRjMWM1NjZjOTE2
MzEzZjQwOTc5MTM5Yjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJQcm9jZXNz
QXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgpA
QCAtMTI0OCwxNiArMTI0OSwxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnN5c3RlbURpZFdha2UoKQog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlByb2Nlc3M6
OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiBkYXRhKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKICAgICBpZiAoIVBB
TDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6Y2FuTG9h
ZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3RyYXRpb25z
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkpOwotICAgIGlmICghcmVnaXN0cmF0aW9ucykKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCiAg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBkYXRhLmJ1ZmZlcigpLT5j
cmVhdGVDRkRhdGEoKTsKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25lbnRBcHBseVNlcnZl
clJlZ2lzdHJhdGlvbnMocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgaWYgKG5vRXJyICE9IGVy
cikK
</data>
<flag name="commit-queue"
          id="474495"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448591</attachid>
            <date>2022-01-07 07:59:48 -0800</date>
            <delta_ts>2022-01-07 17:01:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108025946.patch</filename>
            <type>text/plain</type>
            <size>113893</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY3OTYz
Nzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjQ0NTczMTA5YWUzMzIzZDY5ZTAy
MjdiZDdhYTQxNWEzY2I4NzkzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjAxLDcgKzIwMSw2IEBAIFBs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCi1QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAog
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUyZDYzOTVmMDA2M2I2YTljY2IwNjA0YmFiMmY4
YzQxMjhjYmJlOGMuLjIxYzA5YWM1MjI4NWM5NDI1MTIxOGVlYWY4OWYwY2IzZDRlZjc0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTY0MiwxMyArMTY0MiwxMyBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihX
S1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQogICAgIGlmIChwZGZD
b25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmlndXJhdGlvbi5yZWN0KSkKICAg
ICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBkZkNvbmZpZ3VyYXRpb24ucmVj
dCk7CiAKLSAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHBkZkRhdGEpIHsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgeworICAgIF9wYWdl
LT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkg
eworICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIo
bmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDI5ZjkxNzc0NTk2Y2YwMDRjZDBkNTdiNWVhMzg2YjVjYjIzM2IzMGEuLmIwZGQx
OWE4ZmUyODRmNDhjZTA3ZTJkYTYwNDYxMjA3NzYxOWEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC00Miw3ICs0Miw2
IEBACiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dh
cm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIlN5bmFwc2VTUEkuaCIKICNpbXBvcnQgIldl
YkNvbnRleHRNZW51UHJveHkuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
NjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMy4uMTBjODA0ZTdkMWU2YWFj
NTUzYThhOTU0ZTU2MTg0NmU3ZThkMjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVHlwZVJlZldyYXBwZXIuaCIKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSkpLCAwKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBh
ZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40ZmZhYWM2M2RkMjg2ZTE1
ZTYyNWY1YjA4ZDg2OTZiN2UxYzIxNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBA
IC00Mzk1LDEwICs0Mzk0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElE
YXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6
RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIp
OworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpKTsKICAgICB9OwogfQogCkBAIC04OTkw
LDcgKzg5OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKQEAgLTk4ODEsOCAr
OTg4NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGxvYWRJZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0
YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29u
RGF0YSkuZ2V0KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBp
Y29uRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0
ZShpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkucHRyKCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTEwMTE1LDExICsxMDExOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxl
dGlvCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURh
dGEoKSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKLQotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCks
IGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3Zl
KGRhdGFSZWZlcmVuY2UpKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uZWE1ODc3MmVhMWJiZDE1NDA0
OWNiZTNiYWM5YzFhY2QwOTRjNzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
QEAgLTE5MSw3ICsxOTAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlcikpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2Rl
MDE4NzBhOWE4NTIyLi5mMDYyM2YxYWI5OWJhZjNmMWI4NTMzZmE3YmRiMjUwNThkZmU0ZWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC01NSw3ICs1NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAgICAg
dm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZvaWQgY2xlYXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4
IDU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYuLmMyYmY1MTgzYjMwZjEw
ZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZvaWQgQ2xpcGJv
YXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5k
bGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAg
ewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFu
ZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1h
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZl
cihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZ3RrX2NsaXBi
b2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9ybWF0
LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uLCBn
cG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZlckFz
eW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4odXNlckRhdGEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRl
eCA1YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmLi4wN2FiYjcxMzE5ODg1
M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2b2lkIENsaXBi
b2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0Rh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFu
ZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAg
IHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhh
bmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3Jt
YXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZm
ZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbnN0IGNo
YXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBnZGtfY2xpcGJvYXJk
X3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklUWV9ERUZBVUxULCBu
dWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9p
bnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAppbmRleCA5MWZkZmM4NDM3YWE1NzcwZWJiOTIxNmIz
NzFiMzJiMmJhZDgyYTI1Li5mNzdhODRhN2JiOTIzMzVlODc4YTQ0NTVhNWExYjdmYzBkMTIwMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2Fy
ZFByb3h5R3RrLmNwcApAQCAtOTAsMTQgKzkwLDEyIEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpkaWREZXN0cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGNs
aXBib2FyZCA9IENsaXBib2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKTsKLSAgICBjbGlwYm9hcmQu
cmVhZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwg
b3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgeworICAgIGNsaXBib2FyZC5y
ZWFkQnVmZmVyKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIFsmY2xpcGJvYXJkLCBv
cmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVR5
cGVzOwotICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoY3VzdG9tRGF0YS5vcmln
aW4oKSA9PSBvcmlnaW4pIHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0
b21EYXRhLm9yZGVyZWRUeXBlcygpKQotICAgICAgICAgICAgICAgICAgICBkb21UeXBlcy5hZGQo
dHlwZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKGN1c3RvbURhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRUeXBlcygpKQorICAgICAgICAgICAgICAgIGRv
bVR5cGVzLmFkZCh0eXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIGNsaXBib2FyZC5mb3JtYXRz
KFtkb21UeXBlcyA9IFdURk1vdmUoZG9tVHlwZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8U3RyaW5nPiYmIGZvcm1hdHMpIG11dGFibGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCA0
ZTQxYzY1N2NmNjE4M2ZhZmVmYTM3MDQwZTc5ZTg2NzAwYjVhMjlhLi5hZGQyYWQyNDk0MmRhMTVh
YzRiZDZjZDUyZGY5NDkyNWRiNGY0ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbQpAQCAtODk3LDEyICs4OTcsMTIgQEAgLSAoTlNVSW50ZWdlcilf
d2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAq
KXByaW50Rm8KICAgICBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBDR1JlY3RHZXRI
ZWlnaHQocHJpbnRpbmdSZWN0KTsKIAogICAgIGF1dG8gcmV0YWluZWRTZWxmID0gcmV0YWluUHRy
KHNlbGYpOwotICAgIGF1dG8gcGFpciA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0Fu
ZERyYXdUb1BERihmcmFtZUlELCBwcmludEluZm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkgeworICAgIGF1dG8gcGFpciA9IF9wYWdlLT5jb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihmcmFtZUlELCBwcmludEluZm8sIFtyZXRhaW5l
ZFNlbGZdKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkgewogICAgICAgICBy
ZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQgPSAwOwotICAgICAgICBpZiAocGRmRGF0
YS5lbXB0eSgpKQorICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAg
IGF1dG8gZGF0YSA9IHBkZkRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgICAgICBh
dXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEuZ2V0KCkpKTsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcHJpbnRlZERvY3VtZW50ID0g
YWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQo
KSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggODI5OGJlYjg1N2MyYzVhN2JmNjRjMTg0ZmFkOGEwZWVjZTMyMGExMC4u
MTRjNGM4ZjM1MjIzZjFlMjg1ZjBiOGQzYjBiYzU2MjEwMDVmZWJkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMDA5LDcgKzEwMDks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRp
b25Gb3JQb3RlbnRpYWxUYXAoV2ViS2l0OjpUYQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChyZXF1ZXN0SUQsIHJlbmRl
clJlY3QsIGZpdEVudGlyZVJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGlt
dW1TY2FsZSwgbm9kZUlzUm9vdExldmVsKTsKIH0KIAotc3RkOjpwYWlyPHNpemVfdCwgdWludDY0
X3Q+IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQor
c3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBhMTNlNTE0
NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2Li43NWQ1ZTVhNzk1MTRkYmMzYWFhYzAw
Yjk4ODRhNTdkYWMxOThmOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZlckNlcnRpZmlj
YXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNlcnZl
ckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGNlcnRpZmljYXRlKSkp
LCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBjNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJj
MjA1YThhMzdmY2E0NTllLi44YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1MzhmMzczODFkN2Y3N2Q4Y2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNl
KHR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFdURk1vdmUoaW5pdERhdGEpKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWls
ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpVcGRhdGVMaWNlbnNlKHNlc3Npb25J
ZCwgdHlwZSwgV1RGTW92ZShyZXNwb25zZSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+
JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9u
LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFi
bGUgeworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShX
VEZNb3ZlKHJlc3BvbnNlKSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdl
ZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9w
dGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewogICAg
ICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RG
TW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1
Y2NlZWRlZCA6IEZhaWxlZCk7CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcAppbmRleCA2MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAy
Li43N2M0ZTZhZjhhMGI0ZWU3OGU4MWE0MzZiNjY0NjdkYTVmNTkwZTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaD4KQEAgLTIwMCwxOCArMjAwLDE2IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRT
aXplCiAKIC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMg
ZW5jb2RlZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWls
YWJsZQogLy8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9v
cCkuCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UgeyBkYXRhIH07Ci0KICAgICBzaXplX3QgZnJhbWVDb3VudDsKICAgICBJbnRTaXpl
IHNpemU7CiAgICAgYm9vbCBoYXNUcmFjazsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxJbWFn
ZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7Ci0gICAgaWYgKCFtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpTZXREYXRhKG1faWRlbnRpZmllciwgZGF0YVJlZmVyZW5jZSwgYWxsRGF0
YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRh
OjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZvcyksIDApKQorICAg
IGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKSwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXpl
LCBoYXNUcmFjaywgZnJhbWVJbmZvcyksIDApKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5k
ZXggNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4uOWMwODgxNjFlZGRi
ZjIzNDBmODdhMGJiOTczNDEzN2VhN2UzZDcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdl
YkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5n
T3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXRE
YXRhKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcAppbmRleCAwODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczLi5iZWRk
ZWNiYjA3NGQzNDEyYTliZTkzY2JjZDU5YWUxOTI0N2YyYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW1vdGVJ
bWFnZURlY29kZXJBVkYuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNDIsOCArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFJlZlB0
cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNy
ZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwotICAgIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotICAg
IGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKGRhdGFS
ZWZlcmVuY2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVyKSwgMCkpCisgICAg
aWYgKCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5KGRhdGEpLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRpZmll
ciksIDApKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghaW1hZ2VEZWNvZGVy
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IGE1M2YxNTdiZWViZDdk
YjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEuLjYxNTVhOGRhOWY0OGZlYzg0NmE5YTQ3OGI2NWMy
ZWIzNTViODZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtNDMsNyArNDMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IGNv
bnZlcnRUb0FycmF5QnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKIHsKICAg
ICBpZiAoYnVmZmVyLmJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0
ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5i
dWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGNvbnZlcnRU
b1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRh
KCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIElQQzo6U2hhcmVkQnVmZmVy
Q29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0
aCgpKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNzQ5MTkwZDE5YjBmYTFjZTBiNTExZTg0MjA3MjU2MDA2OTExODYw
Ni4uZWFkZDg0NzMwZjExYjc3M2IwMzUyZGJhYWZlOGRkYWNkYTg3NjA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfCiAgICAgaWYgKFVO
TElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlciht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAgICAgICAgICAgZGlk
UmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVm
ZmVyKSksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMTgsOCArMjE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF8KICAgICAg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVk
IHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgp
OwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVy
KCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuc2FmZUJ1ZmZlcigpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5k
ZXggMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4uN2ViZjk4MGE4OTRk
OTI2MzM3NDAxNDFhZjhjMTQ4ZmYyYjVlYzRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTg1LDkgKzg1LDkgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRp
ZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgp
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUo
KSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1
ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTQy
LDkgKzE0Miw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0
YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxv
YWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0
X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDI4YzE0YmE1MzY2M2M1NWI2MWIxMDk4MTJjMDQ4YTAyMDU2
YmQzOGQuLmM0ZGY4YWYyMmIzM2FiOGFhOWQ3NzUyYmQ1OGEyN2U5NmM0ZTE3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3Rk
OjoKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUs
IHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShp
ZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIElQQzo6U2hhcmVkQnVm
ZmVyQ29weShXVEZNb3ZlKGRhdGEpKSkpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVn
aXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlZDRmNWRlOWQ1
ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFiZjliZjRjLi40YjZiMzQ4NTdlNzhlNTZmNTI2YmNmNjQ1
M2M0NTJiN2U0MzI0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQy
LDcgKzQyLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
VXNlckRhdGEuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdi
YzY2YjUuLmZlN2U4ZDk1NWNhYjVlMzdlNmYxZmVhM2Q4YzYwYWQwODRjYzU0ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02Myw3ICs2Myw3
IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmgiCiAjaW5j
bHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgpAQCAtMzgwNSw3ICszODA1LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRG
cmFtZXMgaW5jbHVkZUNoaWwKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6
Z2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbGJhY2soeyBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkgfSk7CiB9CkBAIC0zODI1LDcg
KzM4MjUsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zODMzLDEyICsz
ODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0CiAgICAgICAgIGRhdGEgPSBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0
aW9uKCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwor
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVyOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJlbmNlID0geyBDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdldExlbmd0aChkYXRh
LmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAjZW5kaWYKLSAgICBjYWxsYmFjayhk
YXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRhQnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKQEAgLTM4NTksNyArMzg1OSw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgY2FsbGJhY2socmVzdWx0U3RyaW5nKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4NzEsMTAgKzM4NzEsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZAogICAgICAgICB9CiAgICAgfQogCi0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOworICAg
IGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAog
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFt
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCkBAIC0zODkwLDcgKzM4ODcs
NyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRh
dGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zODk4LDEzICszODk1LDEw
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlCiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0
YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgIH0KIAotICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChi
dWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFj
ayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RG
TW92ZShidWZmZXIpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGE7CkBAIC0zOTE0LDEyICszOTA4LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0
V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogI2VuZGlmCiAKLSAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0
YUJ1ZmZlcjsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpIH07CisgICAgICAgIGRhdGFCdWZm
ZXIgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJhY2so
ZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91dENhbGxi
YWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKTsK
ICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0OTcsNyArNTQ5MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwogICAgIGZyYW1lVmlldy5z
ZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhhdmlvcik7CiAKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRhdGEuZ2V0
KCkpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTU1NTEsMTIgKzU1NDUsMTIgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRv
SW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmYK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRyYXdQ
YWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdl
OjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsK
ICAgICBQcmludENvbnRleHRBY2Nlc3NTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1w
bChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwotICAgIGNh
bGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIHN0YXRpY19jYXN0
PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSkgfSk7CisgICAgY2Fs
bGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VE
YXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbChGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQ
YWdlRGF0YSkKQEAgLTY5OTIsMTQgKzY5ODYsMTQgQEAgdm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9p
bnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIp
CiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCiAgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxl
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCppY29uRGF0YSkpOwogICAgIH0p
OwogfQogCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tE
aWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySQogICAg
IGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5n
ZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRs
ZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpk
YXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CisgICAgaGFuZGxl
ci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNhZmVCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVt
ZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PgogICAgIGNh
bGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVT
aXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VEYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8g
YXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikp
IHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAg
ICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplKSwgY29udGVu
dFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5nSW1h
Z2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jbG9zaW5nSW1h
Z2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkpOworICAgICAgICBhdHRh
Y2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBlbmNsb3Np
bmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9CiAgICAgY2FsbGJhY2soKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0ODg2NjcwN2M0
NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4wYTgyNzA5YWMzZmEzNTdiMTc0MjM4OGU4
Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+
JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogICAgIHZv
aWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0xMDIzLDcgKzEwMjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZp
T1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwor
ICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAg
dm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0
IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZEdldExvYWREZWNpc2lv
bkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9pZCBk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogICAg
IHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgcHVi
bGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3NpbmdJ
bWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5n
SW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBkYXRl
QXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlmCiAKQEAgLTE2ODMsMTUg
KzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3Ry
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
ZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2b2lkIGdldENvbnRlbnRz
QXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhU
TUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYpOwot
ICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7Cisg
ICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4m
KT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+
JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdl
dFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJik7
CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0
IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZv
cmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYmRh
NWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMi4uMTRkMWM2NzM0YjIyYjMyZTky
NTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTIsMTUgKzIxMiwxNSBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5n
KCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5bmMKICNl
bmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKCkgLT4g
KElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAgIEdldENvbnRl
bnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAj
ZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFSZWZl
cmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3RkOjpv
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5bmMKICAgICBHZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3luYwog
ICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChTdHJpbmcgc3RyaW5nKSBB
c3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAoc3RkOjpvcHRpb25h
bDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCisgICAgR2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZGF0
YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0V2ViQXJjaGl2ZU9mRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRXZWJBcmNoaXZl
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVmZXJlbmNlKSBBc3luYwogCiAgICAgUnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmll
ciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKQEAg
LTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3JlOjpS
ZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3Qg
cmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5j
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ2lP
UyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJ
bmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAgRHJh
d1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3Qg
cGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYK
LSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6U2hhcmVk
QnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIERy
YXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktp
dDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6
U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMKICAgICBTZXRVc2VJY29uTG9hZGluZ0Ns
aWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCkBA
IC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwgU3Ry
aW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwg
U3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCisgICAgVXBkYXRlQXR0
YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKICAgICBVcGRh
dGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDA2ZDU1ZjEw
ODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLmZkNTQ4ZmE4ZjZmZTc3NWViODJjYTli
MTRkODZmZjk0YmJhYzQyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgog
I2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIKICNpbXBvcnQgIlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFwSGFuZGxpbmdSZXN1bHQuaCIKQEAgLTQy
NDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHIKICAgICAgICAgYXV0byBw
ZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBzbmFwc2hvdFNpemUsIDAp
OwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmln
aW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKLSAgICAgICAgcmVwbHkoSVBDOjpEYXRh
UmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBseShJUEM6OlNoYXJlZEJ1ZmZlckNvcHko
U2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAg
ICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQsIHBk
ZlBhZ2VEYXRhKTsKLSAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0
cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkp
KTsKKyAgICByZXBseShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cGRmUGFnZURhdGEuZ2V0KCkpKSk7CiAKICAgICBlbmRQcmludGluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMTRjZGY3NTE1YzYyYzQ1ZGFiOWY5ZGI4MTZm
ZGNiMmQ4ODVjZjMzYy4uYjAzMmNjNzM4YTQwZmQyOThmMGUwMjY4ZmEyOWQ3ZTU0ZDUwMjQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw3IEBAIGNs
YXNzIE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFBBTCB7
CkBAIC01NTEsNyArNTUxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgY29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICNlbmRpZgogICAgIAogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDc0OTNjM2Y4ZjQ2NTFkZGZiZDUwNDExZTdlMjA1
NjZhZDkwZDkyZmUuLjQyZDc1YTM5NGE5Y2QyN2Q0NDg5NGQ3Zjk1OWEwMjEwMDFkNzYwM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0xOTksNyArMTk5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciBO
b3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ29uc3Vt
ZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgcmVnaXN0cmF0aW9uRGF0YSkKKyAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRp
b25zKElQQzo6U2hhcmVkQnVmZmVyQ29weSByZWdpc3RyYXRpb25EYXRhKQogICAgIEFjY2Vzc2li
aWxpdHlQcmVmZXJlbmNlc0RpZENoYW5nZShzdHJ1Y3QgV2ViS2l0OjpBY2Nlc3NpYmlsaXR5UHJl
ZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRmMWY4
Y2ZiMTBiMjdlNjEyOTg1N2RjYTlkODE2YWJlMTgxNzA0NWEuLjE1M2Q4OWUxNTNhNzBkYzFjNTY2
YzkxNjMxM2Y0MDk3OTEzOWI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiUHJv
Y2Vzc0Fzc2VydGlvbi5oIgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAi
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVy
Q29weS5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIu
aCIKQEAgLTEyNDgsMTYgKzEyNDksMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzeXN0ZW1EaWRXYWtl
KCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJl
Z2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQcm9j
ZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYgZGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiAgICAgaWYg
KCFQQUw6OmlzQXVkaW9Ub29sYm94Q29yZUZyYW1ld29ya0F2YWlsYWJsZSgpIHx8ICFQQUw6OmNh
bkxvYWRfQXVkaW9Ub29sYm94Q29yZV9BdWRpb0NvbXBvbmVudEFwcGx5U2VydmVyUmVnaXN0cmF0
aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpKTsKLSAgICBpZiAoIXJlZ2lzdHJhdGlvbnMpCisgICAgaWYgKCFkYXRhLmJ1ZmZlcigp
KQogICAgICAgICByZXR1cm47CisgICAgYXV0byByZWdpc3RyYXRpb25zID0gZGF0YS5idWZmZXIo
KS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBwbHlT
ZXJ2ZXJSZWdpc3RyYXRpb25zKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0VyciAh
PSBlcnIpCg==
</data>
<flag name="commit-queue"
          id="474569"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448641</attachid>
            <date>2022-01-07 15:57:43 -0800</date>
            <delta_ts>2022-01-07 16:50:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108105740.patch</filename>
            <type>text/plain</type>
            <size>114180</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY3OTYz
Nzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjQ0NTczMTA5YWUzMzIzZDY5ZTAy
MjdiZDdhYTQxNWEzY2I4NzkzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjAxLDcgKzIwMSw2IEBAIFBs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCi1QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAog
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUyZDYzOTVmMDA2M2I2YTljY2IwNjA0YmFiMmY4
YzQxMjhjYmJlOGMuLjIxYzA5YWM1MjI4NWM5NDI1MTIxOGVlYWY4OWYwY2IzZDRlZjc0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTY0MiwxMyArMTY0MiwxMyBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihX
S1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQogICAgIGlmIChwZGZD
b25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmlndXJhdGlvbi5yZWN0KSkKICAg
ICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBkZkNvbmZpZ3VyYXRpb24ucmVj
dCk7CiAKLSAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHBkZkRhdGEpIHsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgeworICAgIF9wYWdl
LT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkg
eworICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIo
bmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDI5ZjkxNzc0NTk2Y2YwMDRjZDBkNTdiNWVhMzg2YjVjYjIzM2IzMGEuLmIwZGQx
OWE4ZmUyODRmNDhjZTA3ZTJkYTYwNDYxMjA3NzYxOWEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC00Miw3ICs0Miw2
IEBACiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dh
cm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIlN5bmFwc2VTUEkuaCIKICNpbXBvcnQgIldl
YkNvbnRleHRNZW51UHJveHkuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
NjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMy4uMTBjODA0ZTdkMWU2YWFj
NTUzYThhOTU0ZTU2MTg0NmU3ZThkMjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVHlwZVJlZldyYXBwZXIuaCIKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSkpLCAwKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBh
ZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40ZmZhYWM2M2RkMjg2ZTE1
ZTYyNWY1YjA4ZDg2OTZiN2UxYzIxNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBA
IC00Mzk1LDEwICs0Mzk0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElE
YXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6
RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIp
OworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpKTsKICAgICB9OwogfQogCkBAIC04OTkw
LDcgKzg5OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKQEAgLTk4ODEsOCAr
OTg4NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGxvYWRJZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0
YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29u
RGF0YSkuZ2V0KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBp
Y29uRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0
ZShpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkucHRyKCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTEwMTE1LDExICsxMDExOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxl
dGlvCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURh
dGEoKSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKLQotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCks
IGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3Zl
KGRhdGFSZWZlcmVuY2UpKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uZWE1ODc3MmVhMWJiZDE1NDA0
OWNiZTNiYWM5YzFhY2QwOTRjNzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
QEAgLTE5MSw3ICsxOTAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlcikpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2Rl
MDE4NzBhOWE4NTIyLi43ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBA
IHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZv
aWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwCmluZGV4IDU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYuLmMy
YmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1
ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJB
c3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBj
b21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2Fy
ZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9p
bnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRh
Kj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcAppbmRleCA1YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmLi4w
N2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVy
QXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9h
cmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBn
ZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklU
WV9ERUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAppbmRleCA5MWZkZmM4NDM3YWE1
NzcwZWJiOTIxNmIzNzFiMzJiMmJhZDgyYTI1Li5mNzdhODRhN2JiOTIzMzVlODc4YTQ0NTVhNWEx
YjdmYzBkMTIwMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UGFzdGVib2FyZFByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcApAQCAtOTAsMTQgKzkwLDEyIEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpkaWREZXN0cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGF1dG8mIGNsaXBib2FyZCA9IENsaXBib2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKTsKLSAg
ICBjbGlwYm9hcmQucmVhZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBb
JmNsaXBib2FyZCwgb3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgeworICAg
IGNsaXBib2FyZC5yZWFkQnVmZmVyKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIFsm
Y2xpcGJvYXJkLCBvcmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNldDxT
dHJpbmc+IGRvbVR5cGVzOwotICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVyLmJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoY3Vz
dG9tRGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRUeXBlcygpKQotICAgICAgICAgICAgICAgICAgICBk
b21UeXBlcy5hZGQodHlwZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGF1dG8gY3VzdG9tRGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVy
KTsKKyAgICAgICAgaWYgKGN1c3RvbURhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRUeXBlcygpKQorICAgICAg
ICAgICAgICAgIGRvbVR5cGVzLmFkZCh0eXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIGNsaXBi
b2FyZC5mb3JtYXRzKFtkb21UeXBlcyA9IFdURk1vdmUoZG9tVHlwZXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShWZWN0b3I8U3RyaW5nPiYmIGZvcm1h
dHMpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbQppbmRleCA0ZTQxYzY1N2NmNjE4M2ZhZmVmYTM3MDQwZTc5ZTg2NzAwYjVhMjlhLi5hZGQy
YWQyNDk0MmRhMTVhYzRiZDZjZDUyZGY5NDkyNWRiNGY0ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtODk3LDEyICs4OTcsMTIgQEAgLSAo
TlNVSW50ZWdlcilfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6KF9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlciAqKXByaW50Rm8KICAgICBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQg
PSBDR1JlY3RHZXRIZWlnaHQocHJpbnRpbmdSZWN0KTsKIAogICAgIGF1dG8gcmV0YWluZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpOwotICAgIGF1dG8gcGFpciA9IF9wYWdlLT5jb21wdXRlUGFnZXNG
b3JQcmludGluZ0FuZERyYXdUb1BERihmcmFtZUlELCBwcmludEluZm8sIFtyZXRhaW5lZFNlbGZd
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkgeworICAgIGF1dG8gcGFpciA9IF9w
YWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihmcmFtZUlELCBwcmludElu
Zm8sIFtyZXRhaW5lZFNlbGZdKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkg
ewogICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENhbGxiYWNrSUQgPSAwOwotICAgICAg
ICBpZiAocGRmRGF0YS5lbXB0eSgpKQorICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgp
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHBkZkRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgp
OwogICAgICAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcHJpbnRl
ZERvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQ
cm92aWRlci5nZXQoKSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODI5OGJlYjg1N2MyYzVhN2JmNjRjMTg0ZmFkOGEw
ZWVjZTMyMGExMC4uMTRjNGM4ZjM1MjIzZjFlMjg1ZjBiOGQzYjBiYzU2MjEwMDVmZWJkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0x
MDA5LDcgKzEwMDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU21hcnRNYWduaWZpY2F0
aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAoV2ViS2l0OjpUYQogICAgIHBhZ2VDbGllbnQo
KS5oYW5kbGVTbWFydE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChyZXF1
ZXN0SUQsIHJlbmRlclJlY3QsIGZpdEVudGlyZVJlY3QsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2
aWV3cG9ydE1heGltdW1TY2FsZSwgbm9kZUlzUm9vdExldmVsKTsKIH0KIAotc3RkOjpwYWlyPHNp
emVfdCwgdWludDY0X3Q+IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRE
cmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNhbGxiYWNrKQorc3RkOjpwYWlyPHNpemVfdCwgdWludDY0X3Q+IFdlYlBhZ2VQcm94eTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApp
bmRleCBhMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2Li43NWQ1ZTVhNzk1
MTRkYmMzYWFhYzAwYjk4ODRhNTdkYWMxOThmOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtODUs
NyArODUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OlNldFNl
cnZlckNlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdldCgpKSwgV1RGTW92ZShjYWxsYmFjayksIG1f
aWRlbnRpZmllcik7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OlNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGNl
cnRpZmljYXRlKSkpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBjNzQwYzA0NTA2ZmRl
ZGFjOWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllLi44YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1MzhmMzcz
ODFkN2Y3N2Q4Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJl
cXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24s
IGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlw
ZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoaW5pdERhdGEpKSksIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBz
dWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKICAg
ICAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpVcGRhdGVMaWNl
bnNlKHNlc3Npb25JZCwgdHlwZSwgV1RGTW92ZShyZXNwb25zZSkpLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlT
dGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5n
ZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIElQQzo6U2hhcmVk
QnVmZmVyQ29weShXVEZNb3ZlKHJlc3BvbnNlKSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0
b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0
aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5n
ZWRLZXlzKSwgV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIFdURk1vdmUobWVzc2FnZSksIHN1
Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA2MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdl
ZDFmYmY3NGZlNzAyLi43N2M0ZTZhZjhhMGI0ZWU3OGU4MWE0MzZiNjY0NjdkYTVmNTkwZTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KQEAgLTIwMCwxOCArMjAwLDE2IEBAIHZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBl
Y3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2Fs
bGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1
czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUg
c2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07Ci0KICAgICBzaXplX3QgZnJhbWVDb3VudDsK
ICAgICBJbnRTaXplIHNpemU7CiAgICAgYm9vbCBoYXNUcmFjazsKICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3M7Ci0gICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhKG1faWRlbnRpZmllciwgZGF0YVJlZmVy
ZW5jZSwgYWxsRGF0YVJlY2VpdmVkKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpTZXREYXRhOjpSZXBseShmcmFtZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZv
cyksIDApKQorICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lk
ZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKSwgYWxsRGF0YVJlY2VpdmVkKSwg
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpTZXREYXRhOjpSZXBseShmcmFt
ZUNvdW50LCBzaXplLCBoYXNUcmFjaywgZnJhbWVJbmZvcyksIDApKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKaW5kZXggNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYS4u
OWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2VhN2UzZDcxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxp
bmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNv
cmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3Rl
ZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7Cisg
ICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcAppbmRleCAwODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODky
YWQ4ZjczLi5iZWRkZWNiYjA3NGQzNDEyYTliZTkzY2JjZDU5YWUxOTI0N2YyYjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkYuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsOCArNDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlm
aWVyOwotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsg
ZGF0YSB9OwotICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVE
ZWNvZGVyKGRhdGFSZWZlcmVuY2UsIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyOjpSZXBseShpbWFnZURlY29kZXJJZGVudGlmaWVy
KSwgMCkpCisgICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURl
Y29kZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEpLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNv
ZGVySWRlbnRpZmllciksIDApKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICgh
aW1hZ2VEZWNvZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IGE1
M2YxNTdiZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEuLjYxNTVhOGRhOWY0OGZlYzg0
NmE5YTQ3OGI2NWMyZWIzNTViODZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAt
NDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBSZWZQdHI8QXJy
YXlCdWZmZXI+IGNvbnZlcnRUb0FycmF5QnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gQXJyYXlC
dWZmZXI6OmNyZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIElQQzo6
U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJh
eS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYm
IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzQ5MTkwZDE5YjBmYTFjZTBiNTExZTg0MjA3
MjU2MDA2OTExODYwNi4uZWFkZDg0NzMwZjExYjc3M2IwMzUyZGJhYWZlOGRkYWNkYTg3NjA5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRf
CiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJv
bGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpLCBlbmNvZGVkRGF0YUxl
bmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCi0gICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KFdURk1vdmUoYnVmZmVyKSksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMTgsOCArMjE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBp
bnQ2NF8KICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9
IGRhdGEuc2l6ZSgpOwogCi0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsg
KmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbV9jb3JlTG9h
ZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEuc2FmZUJ1ZmZl
cigpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKaW5kZXggMzE0ODJlYjNiMzY4ZDc4YTYxYTdlYzFkMjRjNTk4MTBiYzkxZWQ4YS4u
N2ViZjk4MGE4OTRkOTI2MzM3NDAxNDFhZjhjMTQ4ZmYyYjVlYzRhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckRvd25sb2FkVGFza01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHku
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTg1LDkgKzg1LDkg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9pc0Rvd25sb2Fk
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pihi
dWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkg
fSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRC
dWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1E
YXRhKQpAQCAtMTQyLDkgKzE0Miw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGJ1CiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyICwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9h
ZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDI4YzE0YmE1MzY2M2M1NWI2MWIxMDk4
MTJjMDQ4YTAyMDU2YmQzOGQuLmM0ZGY4YWYyMmIzM2FiOGFhOWQ3NzUyYmQ1OGEyN2U5NmM0ZTE3
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHls
ZSwgY29uc3Qgc3RkOjoKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwg
Y29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGRhdGEpKSkpOwogfQogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBlZDRmNWRlOWQ1ZTU2MThkNDMyNDU1MDgyZjVkYTE4OGFiZjliZjRjLi40YjZiMzQ4NTdlNzhl
NTZmNTI2YmNmNjQ1M2M0NTJiN2U0MzI0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4OWZmNzJhMGQzMWJlYzExZWY4MDI5
N2VmYmE5MmMyYTdiYzY2YjUuLjAwMDk5OGEwYmEzNTg1YjA5M2Y2YTJiMTJkMWQxYTU4NDYxZjg3
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC02Myw3ICs2Myw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcFV0aWxp
dGllcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uVXBkYXRlUmVz
dWx0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgpAQCAtMzgwNSw5ICszODA1
LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXMgaW5jbHVkZUNoaWwKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZv
aWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKQordm9p
ZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgY2FsbGJh
Y2soeyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkgfSk7Cisg
ICAgY2FsbGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVN
SFRNTERhdGEobV9wYWdlLmdldCgpKSk7CiB9CiAjZW5kaWYKIApAQCAtMzgyNSw3ICszODI1LDcg
QEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzgzMywxMiArMzgzMywxMiBA
QCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdAogICAgICAgICBkYXRhID0gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihmcmFtZSktPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwog
I2VuZGlmCiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YUJ1ZmZlcjsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
ZiAoZGF0YSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
LmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkp
IH07CisgICAgICAgIGRhdGFCdWZmZXIgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJlZmVy
ZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY2FsbGJhY2spCkBAIC0zODU5LDcgKzM4NTksNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKAogICAgIGNhbGxiYWNrKHJlc3VsdFN0cmluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNh
bGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpKSB7CkBAIC0zODcxLDEwICszODcxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmQKICAgICAgICAgfQogICAgIH0KIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSB7ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFj
ayhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIHN0YXRpYyBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQpAQCAtMzg5MCw3ICszODg3LDcgQEAgc3Rh
dGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShG
cmFtZSogZnJhbWUsIGNvbnN0IFUKICAgICByZXR1cm4gJnN1YnJlc291cmNlLT5kYXRhKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMzg5OCwxMyArMzg5NSwxMCBAQCB2b2lk
IFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiByZQogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFt
ZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKICAgICB9CiAKLSAgICBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQot
ICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSk7CisgICAgY2FsbGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVm
ZmVyKSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBj
YWxsYmFjaykKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhOwpAQCAtMzkxNCwxMiArMzkwOCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hp
dmVPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2bwog
ICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2U7CisgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVu
Y2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
Q0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKSB9OworICAgICAgICBkYXRhQnVmZmVyID0gSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICNl
bmRpZgotICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZm
ZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCkBA
IC01NDcyLDcgKzU0NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
SW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbgogfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmRyYXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvJiBmcmFtZVZpZXcgPSAqbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCk7CiAgICAgSW50
U2l6ZSBzbmFwc2hvdFNpemU7CkBAIC01NDk3LDcgKzU0OTEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRy
YXdUb1BERihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+JgogICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChvcmln
aW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKICAgICBmcmFtZVZpZXcuc2V0UGFpbnRC
ZWhhdmlvcihvcmlnaW5hbFBhaW50QmVoYXZpb3IpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIo
SVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0
YUdldExlbmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC01NTUxLDEyICs1NTQ1LDEyIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoaGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BE
RihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzVG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUHJp
bnRDb250ZXh0QWNjZXNzU2NvcGUgc2NvcGUgeyAqdGhpcyB9OwogICAgIFJldGFpblB0cjxDRk11
dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJ
RCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKLSAgICBjYWxsYmFjayh7
IENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpIH0pOworICAgIGNhbGxiYWNrKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZQYWdlRGF0YS5nZXQo
KSkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwg
dWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEp
CkBAIC02OTkyLDE0ICs2OTg2LDE0IEBAIHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJMb2Nr
KCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAogICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVn
ZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weShSZWZQdHIgeyBpY29uRGF0YSB9KSk7CiAgICAg
fSk7CiB9CiAKQEAgLTcwNjIsNyArNzA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFz
a0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJCiAg
ICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFw
LmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFu
ZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLmJ1ZmZlcigpID8g
KmRhdGEuYnVmZmVyKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLmdldCgpKTsKKyAgICBoYW5k
bGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2FmZUJ1ZmZlcigp
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViVVJMU2No
ZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCkBAIC03Mjg3LDEyICs3MjgxLDEyIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+CiAgICAg
Y2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmls
ZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3NpbmdJbWFnZURh
dGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0
byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVy
KSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAg
ICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKFdURk1vdmUoZmlsZVNpemUpLCBjb250
ZW50VHlwZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJ
bWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF0
dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29udGVudFR5cGUsIGVuY2xv
c2luZ0ltYWdlRGF0YS5zYWZlQnVmZmVyKCkpOwogICAgIH0KICAgICBjYWxsYmFjaygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ4ODY2NzA3
YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkuLjBhODI3MDlhYzNmYTM1N2IxNzQyMzg4
ZTgyODZiMmMwMGU2NDk3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmKT4mJik7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
KT4mJik7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAgICAg
dm9pZCBkcmF3UGFnZXNUb1BERkltcGwoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQ
cmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11
dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2VuZGlmCiAKQEAgLTEwMjMsNyArMTAyMyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BE
RmlPU0FzeW5jUmVwbHkmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7
CisgICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgUHJpbnRJbmZvJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik+JiYpOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lk
IGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAg
ICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBw
dWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGlu
c2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2lu
Z0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBlbmNsb3Np
bmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRh
dGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBxbFRodW1ibmFpbEhhbmRsZSk7CiAjZW5kaWYKIApAQCAtMTY4Mywx
NSArMTY4MywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRT
dHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3Ry
aW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVu
dHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmKT4mJiBjYWxsYmFjayk7CiAjZW5kaWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7
Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmKTsK
KyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mKT4mJik7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYpPiYmKTsKICAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgZ2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNl
PiYpPiYmKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4m
KT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwotICAgIHZvaWQg
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYpPiYm
KTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2Vi
Q29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29u
c3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBi
ZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyLi4xNGQxYzY3MzRiMjJiMzJl
OTI1NzQwN2Y1N2IxYzRhYmIwZmU0NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMiwxNSArMjEyLDE1IEBA
IEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwog
I2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoKSAt
PiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgR2V0Q29u
dGVudHNBc01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMK
ICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwp
IC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJl
ZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJDb3B5PiBidWZmZXIpIEFzeW5jCisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwpIC0+IChzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gYnVmZmVyKSBBc3luYwogICAgIEdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5j
CiAgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKCkgLT4gKFN0cmluZyBzdHJpbmcp
IEFzeW5jCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgQXN5bmMKKyAgICBHZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBk
YXRhKSBBc3luYwogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlEKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldFdlYkFyY2hp
dmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGFSZWZlcmVuY2UpIEFzeW5jCiAKICAgICBS
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIApA
QCAtNDEzLDEyICs0MTMsMTIgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDb21wdXRl
UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6
OlJlY3RFZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFyZ2luKSBBc3luYwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIERyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVj
dCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaW1hZ2UpIEFzeW5jCi0gICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhKSBBc3luYworICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5
bmMKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5n
aU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkgU3luY2hyb25vdXMKLSAgICBE
cmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQpIC0+IChJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHNpemVf
dCBwYWdlQ291bnQpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMKICNlbmRp
ZgotICAgIERyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YSkgQXN5bmMKKyAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKSBBc3luYwpAQCAtNTUwLDcgKzU1MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAKICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVj
dGlvbikKIAotICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2Vi
S2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGljb25EYXRhKSBBc3luYworICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkK
QEAgLTU3MSw3ICs1NzEsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGZpbGVOYW1lLCBT
dHJpbmcgY29udGVudFR5cGUpIC0+ICgpIEFzeW5jCi0gICAgVXBkYXRlQXR0YWNobWVudEF0dHJp
YnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
LCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKKyAgICBVcGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIGZpbGVOYW1lLCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkgZW5jbG9zaW5nSW1hZ2VEYXRhKSAtPiAoKSBBc3luYwogICAgIFVw
ZGF0ZUF0dGFjaG1lbnRJY29uKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIHFsVGh1bWJuYWlsSGFuZGxlKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDZkNTVm
MTA4N2NhNDAyYzk1NWVhNWI1ODIxNDczNDAyMTE0MDBmMC4uZmQ1NDhmYThmNmZlNzc1ZWI4MmNh
OWIxNGQ4NmZmOTRiYmFjNDJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIlJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1
ZmZlckNvcHkuaCIKICNpbXBvcnQgIlNoYXJlZE1lbW9yeS5oIgogI2ltcG9ydCAiU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW1wb3J0ICJUYXBIYW5kbGluZ1Jlc3VsdC5oIgpAQCAt
NDI0NCwxMyArNDI0NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERmlPUyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcgogICAgICAgICBhdXRv
IHBkZkRhdGEgPSBwZGZTbmFwc2hvdEF0U2l6ZShzbmFwc2hvdFJlY3QsIHNuYXBzaG90U2l6ZSwg
MCk7CiAKICAgICAgICAgZnJhbWVWaWV3LnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9y
aWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpOwotICAgICAgICByZXBseShJUEM6OkRh
dGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKHBkZkRhdGEuZ2V0KCkpKSk7CisgICAgICAgIHJlcGx5KElQQzo6U2hhcmVkQnVmZmVyQ29w
eShTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhLmdldCgpKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwog
ICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIDAsIHBhZ2VDb3VudCwg
cGRmUGFnZURhdGEpOwotICAgIHJlcGx5KElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRl
UHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgp
KSkpOworICAgIHJlcGx5KElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShwZGZQYWdlRGF0YS5nZXQoKSkpKTsKIAogICAgIGVuZFByaW50aW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAxNGNkZjc1MTVjNjJjNDVkYWI5ZjlkYjgx
NmZkY2IyZDg4NWNmMzNjLi5iMDMyY2M3MzhhNDBmZDI5OGYwZTAyNjhmYTI5ZDdlNTRkNTAyNDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAg
Y2xhc3MgT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgSVBDIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgUEFM
IHsKQEAgLTU1MSw3ICs1NTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdp
c3RyYXRpb25zKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogI2VuZGlmCiAgICAgCiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5M2MzZjhmNDY1MWRkZmJkNTA0MTFlN2Uy
MDU2NmFkOTBkOTJmZS4uNDJkNzVhMzk0YTljZDI3ZDQ0ODk0ZDdmOTU5YTAyMTAwMWQ3NjAzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTE5OSw3ICsxOTksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDb25z
dW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSByZWdpc3RyYXRpb25EYXRhKQorICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJh
dGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAgQWNjZXNz
aWJpbGl0eVByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJLaXQ6OkFjY2Vzc2liaWxpdHlQ
cmVmZXJlbmNlcyBhY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXMpCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZGYx
ZjhjZmIxMGIyN2U2MTI5ODU3ZGNhOWQ4MTZhYmUxODE3MDQ1YS4uMTUzZDg5ZTE1M2E3MGRjMWM1
NjZjOTE2MzEzZjQwOTc5MTM5Yjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJQ
cm9jZXNzQXNzZXJ0aW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0
ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJTaGFyZWRCdWZm
ZXJDb3B5LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hl
ci5oIgpAQCAtMTI0OCwxNiArMTI0OSwxNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnN5c3RlbURpZFdh
a2UoKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBy
b2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiBkYXRhKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKICAgICBp
ZiAoIVBBTDo6aXNBdWRpb1Rvb2xib3hDb3JlRnJhbWV3b3JrQXZhaWxhYmxlKCkgfHwgIVBBTDo6
Y2FuTG9hZF9BdWRpb1Rvb2xib3hDb3JlX0F1ZGlvQ29tcG9uZW50QXBwbHlTZXJ2ZXJSZWdpc3Ry
YXRpb25zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9ucyA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkpOwotICAgIGlmICghcmVnaXN0cmF0aW9ucykKKyAgICBpZiAoIWRhdGEuYnVmZmVy
KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBkYXRhLmJ1ZmZl
cigpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIGF1dG8gZXJyID0gQXVkaW9Db21wb25lbnRBcHBs
eVNlcnZlclJlZ2lzdHJhdGlvbnMocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgaWYgKG5vRXJy
ICE9IGVycikK
</data>
<flag name="commit-queue"
          id="474567"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448646</attachid>
            <date>2022-01-07 16:31:04 -0800</date>
            <delta_ts>2022-01-07 19:50:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108113101.patch</filename>
            <type>text/plain</type>
            <size>114181</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY3OTYz
Nzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjQ0NTczMTA5YWUzMzIzZDY5ZTAy
MjdiZDdhYTQxNWEzY2I4NzkzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjAxLDcgKzIwMSw2IEBAIFBs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCi1QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAog
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUyZDYzOTVmMDA2M2I2YTljY2IwNjA0YmFiMmY4
YzQxMjhjYmJlOGMuLjIxYzA5YWM1MjI4NWM5NDI1MTIxOGVlYWY4OWYwY2IzZDRlZjc0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTY0MiwxMyArMTY0MiwxMyBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihX
S1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQogICAgIGlmIChwZGZD
b25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmlndXJhdGlvbi5yZWN0KSkKICAg
ICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBkZkNvbmZpZ3VyYXRpb24ucmVj
dCk7CiAKLSAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHBkZkRhdGEpIHsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgeworICAgIF9wYWdl
LT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkg
eworICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIo
bmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDI5ZjkxNzc0NTk2Y2YwMDRjZDBkNTdiNWVhMzg2YjVjYjIzM2IzMGEuLmIwZGQx
OWE4ZmUyODRmNDhjZTA3ZTJkYTYwNDYxMjA3NzYxOWEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC00Miw3ICs0Miw2
IEBACiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dh
cm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIlN5bmFwc2VTUEkuaCIKICNpbXBvcnQgIldl
YkNvbnRleHRNZW51UHJveHkuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
NjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMy4uMTBjODA0ZTdkMWU2YWFj
NTUzYThhOTU0ZTU2MTg0NmU3ZThkMjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVHlwZVJlZldyYXBwZXIuaCIKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSkpLCAwKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBh
ZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40ZmZhYWM2M2RkMjg2ZTE1
ZTYyNWY1YjA4ZDg2OTZiN2UxYzIxNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBA
IC00Mzk1LDEwICs0Mzk0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElE
YXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6
RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIp
OworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpKTsKICAgICB9OwogfQogCkBAIC04OTkw
LDcgKzg5OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKQEAgLTk4ODEsOCAr
OTg4NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGxvYWRJZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0
YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29u
RGF0YSkuZ2V0KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBp
Y29uRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0
ZShpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkucHRyKCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTEwMTE1LDExICsxMDExOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxl
dGlvCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURh
dGEoKSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKLQotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCks
IGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3Zl
KGRhdGFSZWZlcmVuY2UpKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uZWE1ODc3MmVhMWJiZDE1NDA0
OWNiZTNiYWM5YzFhY2QwOTRjNzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
QEAgLTE5MSw3ICsxOTAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlcikpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2Rl
MDE4NzBhOWE4NTIyLi43ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBA
IHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZv
aWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwCmluZGV4IDU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYuLmMy
YmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1
ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJB
c3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBj
b21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2Fy
ZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9p
bnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRh
Kj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcAppbmRleCA1YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmLi4w
N2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVy
QXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9h
cmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBn
ZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklU
WV9ERUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAppbmRleCA5MWZkZmM4NDM3YWE1
NzcwZWJiOTIxNmIzNzFiMzJiMmJhZDgyYTI1Li42Y2UzYmRkZGZmNzYwYzUwOWYyYjg1ODU5NzVi
ZTA3N2U3OTZiNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UGFzdGVib2FyZFByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcApAQCAtOTAsMTQgKzkwLDEyIEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpkaWREZXN0cm95RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGF1dG8mIGNsaXBib2FyZCA9IENsaXBib2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKTsKLSAg
ICBjbGlwYm9hcmQucmVhZEJ1ZmZlcihQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBb
JmNsaXBib2FyZCwgb3JpZ2luLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpIG11dGFibGUgeworICAg
IGNsaXBib2FyZC5yZWFkQnVmZmVyKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIFsm
Y2xpcGJvYXJkLCBvcmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBMaXN0SGFzaFNldDxT
dHJpbmc+IGRvbVR5cGVzOwotICAgICAgICBpZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVyLmJ1
ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRvIGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0YUJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoY3Vz
dG9tRGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRUeXBlcygpKQotICAgICAgICAgICAgICAgICAgICBk
b21UeXBlcy5hZGQodHlwZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGF1dG8gY3VzdG9tRGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGlmIChjdXN0b21EYXRhLm9yaWdpbigpID09IG9yaWdpbikgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiB0eXBlIDogY3VzdG9tRGF0YS5vcmRlcmVkVHlwZXMoKSkKKyAgICAg
ICAgICAgICAgICBkb21UeXBlcy5hZGQodHlwZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjbGlw
Ym9hcmQuZm9ybWF0cyhbZG9tVHlwZXMgPSBXVEZNb3ZlKGRvbVR5cGVzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oVmVjdG9yPFN0cmluZz4mJiBmb3Jt
YXRzKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggNGU0MWM2NTdjZjYxODNmYWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uYWRk
MmFkMjQ5NDJkYTE1YWM0YmQ2Y2Q1MmRmOTQ5MjVkYjRmNDg3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0g
KE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0
ID0gQ0dSZWN0R2V0SGVpZ2h0KHByaW50aW5nUmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKTsKLSAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxm
XShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBf
cGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJ
bmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEp
IHsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAg
ICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkKKyAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUo
KSkpOworICAgICAgICBhdXRvIGRhdGEgPSBwZGZEYXRhLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEo
KTsKICAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7CiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3ByaW50
ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRh
UHJvdmlkZXIuZ2V0KCkpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDgyOThiZWI4NTdjMmM1YTdiZjY0YzE4NGZhZDhh
MGVlY2UzMjBhMTAuLjE0YzRjOGYzNTIyM2YxZTI4NWYwYjhkM2IwYmM1NjIxMDA1ZmViZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAt
MTAwOSw3ICsxMDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVNtYXJ0TWFnbmlmaWNh
dGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKFdlYktpdDo6VGEKICAgICBwYWdlQ2xpZW50
KCkuaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAocmVx
dWVzdElELCByZW5kZXJSZWN0LCBmaXRFbnRpcmVSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwg
dmlld3BvcnRNYXhpbXVtU2NhbGUsIG5vZGVJc1Jvb3RMZXZlbCk7CiB9CiAKLXN0ZDo6cGFpcjxz
aXplX3QsIHVpbnQ2NF90PiBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4m
JiBjYWxsYmFjaykKK3N0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2NF90PiBXZWJQYWdlUHJveHk6OmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAK
aW5kZXggYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBjNi4uNzVkNWU1YTc5
NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFjMTk4ZjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShj
ZXJ0aWZpY2F0ZSkpKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYzc0MGMwNDUwNmZk
ZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5ZS4uOGJlY2Q1OWI1ZWIzN2UwZDNhNTE0NTM4ZjM3
MzgxZDdmNzdkOGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNTYsNyAr
NTYsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpS
ZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CiAg
ICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6VXBkYXRlTGlj
ZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1vdmUocmVzcG9uc2UpKSwgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5
U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFu
Z2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vuc2Uoc2Vzc2lvbklkLCB0eXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoV1RGTW92ZShyZXNwb25zZSkpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVj
dG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJh
dGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFu
Z2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3
ZWQxZmJmNzRmZTcwMi4uNzdjNGU2YWY4YTBiNGVlNzhlODFhNDM2YjY2NDY3ZGE1ZjU5MGU5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNh
bGxlciBleHBlY3RzIGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0
dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhl
IHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7
CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGJvb2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZl
cmVuY2UsIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5m
b3MpLCAwKSkKKyAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9p
ZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoZGF0YSksIGFsbERhdGFSZWNlaXZlZCks
IE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJh
bWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCmluZGV4IDQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEu
LjljMDg4MTYxZWRkYmYyMzQwZjg3YTBiYjk3MzQxMzdlYTdlM2Q3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBs
aW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJD
b3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6
OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5
MmFkOGY3My4uYmVkZGVjYmIwNzRkMzQxMmE5YmU5M2NiY2Q1OWFlMTkyNDdmMmI0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQyLDggKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRp
ZmllcjsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7
IGRhdGEgfTsKLSAgICBpZiAoIWVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRl
RGVjb2RlcihkYXRhUmVmZXJlbmNlLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRpZmll
ciksIDApKQorICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVE
ZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKSwgbWltZVR5cGUpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVj
b2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBh
NTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi42MTU1YThkYTlmNDhmZWM4
NDZhOWE0NzhiNjVjMmViMzU1Yjg2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFy
cmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBjb252ZXJ0VG9TaGFyZWRCdWZmZXJDb3B5KFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJh
eSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIm
JiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIw
NzI1NjAwNjkxMTg2MDYuLmVhZGQ4NDczMGYxMWI3NzNiMDM1MmRiYWFmZThkZGFjZGE4NzYwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0
XwogICAgIGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmco
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewogICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFM
ZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29w
eShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDggKzIxOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwg
aW50NjRfCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCAr
PSBkYXRhLnNpemUoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7
ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIG1fY29yZUxv
YWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShkYXRhLnNhZmVCdWZm
ZXIoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCmluZGV4IDMxNDgyZWIzYjM2OGQ3OGE2MWE3ZWMxZDI0YzU5ODEwYmM5MWVkOGEu
LjdlYmY5ODBhODk0ZDkyNjMzNzQwMTQxYWY4YzE0OGZmMmI1ZWM0YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2tNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC04NSw5ICs4NSw5
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1faXNEb3dubG9h
ZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVE
YXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkp
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3Jt
RGF0YSkKQEAgLTE0Miw5ICsxNDIsOSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBidQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRh
IHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciAsIHN0
YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxv
YWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyOGMxNGJhNTM2NjNjNTViNjFiMTA5
ODEyYzA0OGEwMjA1NmJkMzhkLi5jNGRmOGFmMjJiMzNhYjhhYTlkNzc1MmJkNThhMjdlOTZjNGUx
NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5
bGUsIGNvbnN0IHN0ZDo6CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIs
IGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShkYXRhKSkpKTsKIH0KIAogdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggZWQ0ZjVkZTlkNWU1NjE4ZDQzMjQ1NTA4MmY1ZGExODhhYmY5YmY0Yy4uNGI2YjM0ODU3ZTc4
ZTU2ZjUyNmJjZjY0NTNjNDUyYjdlNDMyNGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNs
dWRlICJQbHVnaW5WaWV3LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmODlmZjcyYTBkMzFiZWMxMWVmODAy
OTdlZmJhOTJjMmE3YmM2NmI1Li4wMDA5OThhMGJhMzU4NWIwOTNmNmEyYjEyZDFkMWE1ODQ2MWY4
N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNjMsNyArNjMsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXBVdGls
aXRpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2luY2x1ZGUgIlRleHRSZWNvZ25pdGlvblVwZGF0ZVJl
c3VsdC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgog
I2luY2x1ZGUgIlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCIKQEAgLTM4MDUsOSArMzgw
NSw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJ
bmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsCiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCi12
b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewotICAgIGNhbGxi
YWNrKHsgTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpIH0pOwor
ICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkpOwogfQogI2VuZGlmCiAKQEAgLTM4MjUsNyArMzgyNSw3
IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTM4MzMsMTIgKzM4MzMsMTIg
QEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHQKICAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsK
ICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGRhdGFCdWZmZXI7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
aWYgKGRhdGEpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7IENGRGF0YUdldEJ5dGVQdHIoZGF0
YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkp
KSB9OworICAgICAgICBkYXRhQnVmZmVyID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgotICAgIGNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UpOworICAgIGNhbGxiYWNrKGRhdGFCdWZmZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNhbGxiYWNrKQpAQCAtMzg1OSw3ICszODU5LDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgKICAgICBjYWxsYmFjayhyZXN1bHRTdHJpbmcpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBj
YWxsYmFjaykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKSkgewpAQCAtMzg3MSwxMCArMzg3MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBkYXRhUmVmZXJlbmNl
ID0geyAqYnVmZmVyIH07Ci0gICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CisgICAgY2FsbGJh
Y2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiBzdGF0aWMg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKQEAgLTM4OTAsNyArMzg4Nyw3IEBAIHN0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3Ry
aW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4OTgsMTMgKzM4OTUsMTAgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgcmUKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJh
bWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgfQogCi0gICAgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYgKGJ1ZmZlcikK
LSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxiYWNrKGRhdGFS
ZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1
ZmZlcikpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0
V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYg
Y2FsbGJhY2spCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gZGF0YTsKQEAgLTM5MTQsMTIgKzM5MDgsMTIgQEAgdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNo
aXZlT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm8K
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVmZmVy
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVmZXJl
bmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAj
ZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRhQnVm
ZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQpA
QCAtNTQ3Miw3ICs1NDY2LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0ltcGwoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW4KIH0KIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byYgZnJhbWVWaWV3ID0gKm1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIElu
dFNpemUgc25hcHNob3RTaXplOwpAQCAtNTQ5Nyw3ICs1NDkxLDcgQEAgdm9pZCBXZWJQYWdlOjpk
cmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiYKICAgICBmcmFtZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3Jp
Z2luYWxMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk7CiAgICAgZnJhbWVWaWV3LnNldFBhaW50
QmVoYXZpb3Iob3JpZ2luYWxQYWludEJlaGF2aW9yKTsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRh
dGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtNTU1MSwxMiArNTU0NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9Q
REYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1
aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmRyYXdQ
YWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKQogewogICAgIFBy
aW50Q29udGV4dEFjY2Vzc1Njb3BlIHNjb3BlIHsgKnRoaXMgfTsKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1l
SUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgY2FsbGJhY2so
eyBDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihDRkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSB9KTsKKyAgICBjYWxsYmFjayhJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmUGFnZURhdGEuZ2V0
KCkpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRh
KQpAQCAtNjk5MiwxNCArNjk4NiwxNCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9j
aygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9v
bCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRl
Z2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyIHsgaWNvbkRhdGEgfSkpOwogICAg
IH0pOwogfQogCkBAIC03MDYyLDcgKzcwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySQog
ICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1h
cC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhh
bmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/
ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CisgICAgaGFu
ZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNhZmVCdWZmZXIo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQpAQCAtNzI4NywxMiArNzI4MSwxMiBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PgogICAg
IGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZp
bGVTaXplLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjp1cGRhdGVBdHRhY2ht
ZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9zaW5nSW1hZ2VE
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1
dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoaWRlbnRpZmll
cikpIHsKICAgICAgICAgYXR0YWNobWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAg
ICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhXVEZNb3ZlKGZpbGVTaXplKSwgY29u
dGVudFR5cGUsIGZpbGVOYW1lKTsKLSAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5n
SW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jbG9zaW5n
SW1hZ2VEYXRhLmRhdGEoKSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNpemUoKSkpOworICAgICAgICBh
dHRhY2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBlbmNs
b3NpbmdJbWFnZURhdGEuc2FmZUJ1ZmZlcigpKTsKICAgICB9CiAgICAgY2FsbGJhY2soKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0ODg2Njcw
N2M0NjEzZDlhN2NkMzUyMTVkZmNhOTIzYzY5NzliZWI5Li4wYTgyNzA5YWMzZmEzNTdiMTc0MjM4
OGU4Mjg2YjJjMDBlNjQ5NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJik+JiYpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogICAg
IHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qg
UHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNlbmRpZgogCkBAIC0xMDIzLDcgKzEwMjMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9Q
REZpT1NBc3luY1JlcGx5JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYp
OworICAgIHZvaWQgZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAg
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpPiYmKTsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJik7CisgICAgdm9p
ZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwog
ICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTMwOCw3ICsxMzA4LDcgQEAg
cHVibGljOgogICAgIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBp
bnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVw
ZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbmNsb3Np
bmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCB1cGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZW5jbG9z
aW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdXBk
YXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgcWxUaHVtYm5haWxIYW5kbGUpOwogI2VuZGlmCiAKQEAgLTE2ODMs
MTUgKzE2ODMsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0
cmluZyYpPiYmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2b2lkIGdldENvbnRl
bnRzQXNNSFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5Jik+JiYgY2FsbGJhY2spOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYp
OwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJik7
CisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+Jik+JiYpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mKT4mJik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4mKT4mJik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
Jik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKLSAgICB2b2lk
IGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4m
Jik7CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
YmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUxMi4uMTRkMWM2NzM0YjIyYjMy
ZTkyNTc0MDdmNTdiMWM0YWJiMGZlNDQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTIsMTUgKzIxMiwxNSBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3Ry
aW5nKCkgLT4gKHN0cnVjdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkgQXN5bmMK
ICNlbmRpZgogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKCkg
LT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAgIEdldENv
bnRlbnRzQXNNSFRNTERhdGEoKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5j
CiAjZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYwotICAgIEdldFJlc291cmNlRGF0YUZyb21G
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJM
KSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGRhdGFS
ZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4gYnVmZmVyKSBBc3luYworICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMKSAtPiAoc3Rk
OjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5bmMKICAgICBHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIC0+IChTdHJpbmcgc3RyaW5nKSBBc3lu
YwogICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZygpIC0+IChTdHJpbmcgc3RyaW5n
KSBBc3luYwotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAoc3RkOjpvcHRp
b25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIEFzeW5jCisgICAgR2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YSgpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4g
ZGF0YSkgQXN5bmMKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkgLT4gKFN0cmluZyBzdHJpbmcpIEFzeW5jCi0gICAgR2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFs
PElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKKyAgICBHZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkgLT4gKHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBkYXRhUmVmZXJlbmNlKSBBc3luYwogCiAgICAg
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAK
QEAgLTQxMywxMiArNDEzLDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJDb3Jl
OjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbikgQXN5bmMKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUpIC0+IChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlIGltYWdlKSBBc3luYwotICAgIERyYXdQYWdlc1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+IChJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSkgQXN5bmMKKyAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFz
eW5jCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGlu
Z2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbykgLT4gKHNpemVfdCBwYWdlQ291bnQpIFN5bmNocm9ub3VzCi0gICAg
RHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBzaXpl
X3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpIEFzeW5jCiAjZW5k
aWYKLSAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEpIEFzeW5jCisgICAgRHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IERyYXdQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBz
dHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvcikgQXN5bmMKQEAgLTU1MCw3ICs1NTAsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJl
Y3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdl
YktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5bmMKKyAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikgLT4gKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBpY29uRGF0YSkgQXN5bmMKICAgICBTZXRVc2VJY29uTG9hZGlu
Z0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQp
CkBAIC01NzEsNyArNTcxLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBmaWxlTmFtZSwg
U3RyaW5nIGNvbnRlbnRUeXBlKSAtPiAoKSBBc3luYwotICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKFN0cmluZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6
ZSwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBlbmNsb3NpbmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCisgICAgVXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZpbGVTaXplLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlTmFtZSwgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGVuY2xvc2luZ0ltYWdlRGF0YSkgLT4gKCkgQXN5bmMKICAgICBV
cGRhdGVBdHRhY2htZW50SWNvbihTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBxbFRodW1ibmFpbEhhbmRsZSkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDA2ZDU1
ZjEwODdjYTQwMmM5NTVlYTViNTgyMTQ3MzQwMjExNDAwZjAuLmZkNTQ4ZmE4ZjZmZTc3NWViODJj
YTliMTRkODZmZjk0YmJhYzQyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5o
IgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTaGFyZWRC
dWZmZXJDb3B5LmgiCiAjaW1wb3J0ICJTaGFyZWRNZW1vcnkuaCIKICNpbXBvcnQgIlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2ltcG9ydCAiVGFwSGFuZGxpbmdSZXN1bHQuaCIKQEAg
LTQyNDQsMTMgKzQyNDUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkcmF3VG9QREZpT1MoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHIKICAgICAgICAgYXV0
byBwZGZEYXRhID0gcGRmU25hcHNob3RBdFNpemUoc25hcHNob3RSZWN0LCBzbmFwc2hvdFNpemUs
IDApOwogCiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChv
cmlnaW5hbExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KTsKLSAgICAgICAgcmVwbHkoSVBDOjpE
YXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmRGF0YS5nZXQoKSksIENGRGF0YUdldExl
bmd0aChwZGZEYXRhLmdldCgpKSkpOworICAgICAgICByZXBseShJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUocGRmRGF0YS5nZXQoKSkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsK
ICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCAwLCBwYWdlQ291bnQs
IHBkZlBhZ2VEYXRhKTsKLSAgICByZXBseShJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0
ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQo
KSkpKTsKKyAgICByZXBseShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVh
dGUocGRmUGFnZURhdGEuZ2V0KCkpKSk7CiAKICAgICBlbmRQcmludGluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMTRjZGY3NTE1YzYyYzQ1ZGFiOWY5ZGI4
MTZmZGNiMmQ4ODVjZjMzYy4uYjAzMmNjNzM4YTQwZmQyOThmMGUwMjY4ZmEyOWQ3ZTU0ZDUwMjQ3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw3IEBA
IGNsYXNzIE9iamVjdDsKIH0KIAogbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFBB
TCB7CkBAIC01NTEsNyArNTUxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdm9pZCBjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgY29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICNlbmRpZgogICAgIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDc0OTNjM2Y4ZjQ2NTFkZGZiZDUwNDExZTdl
MjA1NjZhZDkwZDkyZmUuLjQyZDc1YTM5NGE5Y2QyN2Q0NDg5NGQ3Zjk1OWEwMjEwMDFkNzYwM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0xOTksNyArMTk5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ29u
c3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgcmVnaXN0cmF0aW9uRGF0YSkKKyAgICBDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKElQQzo6U2hhcmVkQnVmZmVyQ29weSByZWdpc3RyYXRpb25EYXRhKQogICAgIEFjY2Vz
c2liaWxpdHlQcmVmZXJlbmNlc0RpZENoYW5nZShzdHJ1Y3QgV2ViS2l0OjpBY2Nlc3NpYmlsaXR5
UHJlZmVyZW5jZXMgYWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzKQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGRm
MWY4Y2ZiMTBiMjdlNjEyOTg1N2RjYTlkODE2YWJlMTgxNzA0NWEuLjE1M2Q4OWUxNTNhNzBkYzFj
NTY2YzkxNjMxM2Y0MDk3OTEzOWI5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAi
UHJvY2Vzc0Fzc2VydGlvbi5oIgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9y
dCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiU2hhcmVkQnVm
ZmVyQ29weS5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29u
dGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNo
ZXIuaCIKQEAgLTEyNDgsMTYgKzEyNDksMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzeXN0ZW1EaWRX
YWtlKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OmNvbnN1bWVBdWRpb0NvbXBvbmVu
dFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQ
cm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYgZGF0YSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwogCiAgICAg
aWYgKCFQQUw6OmlzQXVkaW9Ub29sYm94Q29yZUZyYW1ld29ya0F2YWlsYWJsZSgpIHx8ICFQQUw6
OmNhbkxvYWRfQXVkaW9Ub29sYm94Q29yZV9BdWRpb0NvbXBvbmVudEFwcGx5U2VydmVyUmVnaXN0
cmF0aW9ucygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbnMgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpKTsKLSAgICBpZiAoIXJlZ2lzdHJhdGlvbnMpCisgICAgaWYgKCFkYXRhLmJ1ZmZl
cigpKQogICAgICAgICByZXR1cm47CisgICAgYXV0byByZWdpc3RyYXRpb25zID0gZGF0YS5idWZm
ZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICBhdXRvIGVyciA9IEF1ZGlvQ29tcG9uZW50QXBw
bHlTZXJ2ZXJSZWdpc3RyYXRpb25zKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAgIGlmIChub0Vy
ciAhPSBlcnIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448663</attachid>
            <date>2022-01-07 19:50:30 -0800</date>
            <delta_ts>2022-01-07 22:25:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234921-20220108145028.patch</filename>
            <type>text/plain</type>
            <size>114896</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDMwMTBkZDUxNTVjZTE2
OGE2MWRkMzBmNWUyMWMyYmRkNTE0YjYyYS4uYjExMTQzNDBhZjMzZmU5YTM0ZGIwY2YyZGQyOTFi
YjQ3OTEyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTA2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVyQ29weSBpbnN0
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5
MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFBhc3MgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UgdG8gYXZvaWQKKyAgICAgICAgaGF2aW5nIHRvIGNv
bnN0X2Nhc3QgdGhlIGFyZ3VtZW50IGluIFdlYktpdC4KKworICAgICAgICBObyBjaGFuZ2UgaW4g
b2JzZXJ2YWJsZSBiZWhhdmlvdXIsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
SUZJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnRlbnQgRmlsdGVyaW5nIHNob3VsZCBiZSB1c2luZyBT
aGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ3MjQ5
MGQ4MmQxMmM3N2JjNjY5OGQ4NzhkODBjM2VkY2JjZWFhNjguLjc4MzA3MzJjNzZkYmYxYWI1YzYz
NTk3MDY2M2FjYWFkYzZiMmY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5IEBACisyMDIyLTAx
LTA2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBhbmQgdXNlIElQQzo6U2hhcmVkQnVmZmVy
Q29weSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ5MjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODcxOTYyODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlckNvcHkgZGlk
bid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgY29weSBp
dHMgY29udGVudDsgaXRzIElQQyBkZWNvZGVyIGNhbiBpbnN0ZWFkIHdyYXAgdGhlIHVuZGVybHlp
bmcKKyAgICAgICAgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFyZWRCdWZmZXIuCisgICAgICAgIEhh
dmluZyByZW1vdmVkIHRob3NlIGNvcGllcyBhbmQgZXh0cmEgYWxsb2NhdGlvbnMgdGhlcmUncyBu
byBsb25nZXIgYQorICAgICAgICB0ZWNobmljYWwgbmVlZCB0byBoYXZlIGJvdGggU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBhbmQgU2hhcmVkQnVmZmVyQ29weS4KKworICAgICAgICBUaGUgYmln
Z2VzdCB3aW5uZXJzIG9mIHRoaXMgY2hhbmdlIGFyZSB0aGUgaW1hZ2VzIHRyYW5zZmVycmVkIG92
ZXIgSVBDLgorICAgICAgICBXZSByZW1vdmUgdHdvIG1lbW9yeSBhbGxvY2F0aW9uL2NvcHkgdGhl
IHdhcyBvY2N1cnJpbmcgYXQgYm90aCBJUEMKKyAgICAgICAgYm91bmRhcmllcy4KKworICAgICAg
ICBXZSBhbHNvIHJlbW92ZSB0aGUgbmVlZCBmb3IgU2hhcmVkQnVmZmVyQ29weSB0byB1c2UgYSBj
b250aWd1b3VzCisgICAgICAgIFNoYXJlZEJ1ZmZlci4gVGhpcyBtYWtlcyB0aGUgSVBDIGVuY29k
aW5nIG11Y2ggbW9yZSBlZmZpY2llbnQuCisgICAgICAgIE9uY2UgdHJhbnNmZXJyZWQgb3ZlciBJ
UEMsIHdpdGggdGhlIGN1cnJlbnQgZW5jb2RpbmcgaW1wbGVtZW50YXRpb24sCisgICAgICAgIHRo
ZSBTaGFyZWRCdWZmZXJDb3B5IGF1dG9tYXRpY2FsbHkgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyLAorICAgICAgICBzbyBjYWxsaW5nIG1ha2VDb250aWd1b3VzKCkgb24gdGhlIFNo
YXJlZEJ1ZmZlckNvcHkgaXMgYSBuby1vcDsKKyAgICAgICAgdGhpcyBhbGxvd3MgZm9yIHplcm8g
cmVncmVzc2lvbiBzcGVlZC13aXNlIGZyb20gdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgRmx5LWJ5
IGNoYW5nZXM6IHRoZSBQREYgY29kZSB1c2VzIElQQzo6RGF0YVJlZmVyZW5jZSBvYmplY3Q7IHRo
ZSBkYXRhCisgICAgICAgIHdhcyBjb3BpZWQgaW50byBhIENGRGF0YSBvciBhIFNoYXJlZEJ1ZmZl
ci4gQnkgdXNpbmcgSVBDOjpTaGFyZWRCdWZmZXJDb3B5CisgICAgICAgIHdhcyBjYW4gcmVtb3Zl
IHRob3NlIGNvcGllcyBhcyBhIFNoYXJlZEJ1ZmZlciBjYW4gYmUgd3JhcHBlZCBpbiBhIENGRGF0
YS4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaXQncyBsaWtlbHkgd2hlcmUgc3VjaCBjb2RlIHBh
dHRlcm4gd2FzIHVzZWQ7IG1vcmUKKyAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNhbiBiZSBy
ZXBsYWNlZCBicm9hZGx5IHdpdGggSVBDOjpTaGFyZWRCdWZmZXJDb3B5LgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9y
S2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVm
ZmVyQ29weTo6c2FmZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmNvbnRpZ3VvdXNCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoZnVuY3Rpb25f
cGFyYW1ldGVyX3R5cGUpOgorICAgICAgICAocmVwbHlfYXJndW1lbnRzX3R5cGUpOgorICAgICAg
ICAobWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24pOgorICAgICAgICAoZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VD
b3VudEZvclByaW50Rm9ybWF0dGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3VG9QREYpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdUb1BERmlPUyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKToKKwogMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0
ZWQgbmV0d29ya2luZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTM4NSwzICszODYsNyBAQCBwcml2YXRlOgogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcikKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSB7IHJldHVybiBidWZmZXIuaXNDb250aWd1b3VzKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OC4uMTk1
MzM5MmU2ZmU4ZWQ0ZWE5ZWI1ZTE4YzIxZWQ4ZDdiMWJmNzkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA2
MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1Li4wMjRkZWUwYzA5MDQ3MTJj
ZjMxMTNiYzc5ODU0ZDUzYjM3NmZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7
CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0KaW5kZXggMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1
ZWNiNTA1Ny4uNTYzYWYxOTI0ZDlhZjM1OWU5MzBlZjY0YmFlMzIzZmMwNDFkZTg3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyAr
Mjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBt
YXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQo
KS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3Bw
CmluZGV4IGI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUuLjkwYjFlZGQw
MWI2MzkzZGZjOTljMWI4N2Q5MGY1NGE1ZjIzMjg5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTU2Miw3
ICs1NjIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQg
PSBhbGxEYXRhUmVjZWl2ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IGEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcuLjE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2Rm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0
OWMyYmI2NTNhYzQuLjcwZmE4ZDNmNzc2MWMwZTMxNTUwYzhlNWM1NWY0Njk5OWE4OWJmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRh
KGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IGQzZWY2
YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkuLjI2MWRhZmYyNjE1OGUxN2EyYTQy
MjFmZmIyNDM1NDY3NzE2ZGJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA3NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhLi42NTE4NTYxMWIzNWY5MmU3Y2E3MjdlZWI3NmEyMDVkMGE2
MzFlNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CkBAIC0yODIs
NyArMjgyLDggQEAgdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWMKICAgICBpZiAoIVNVQ0NFRURFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNo
YXIqPihkYXRhLmRhdGEoKSk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZGF0YS5t
YWtlQ29udGlndW91cygpOworICAgIGNoYXIqIGRhdGFQdHIgPSBjb25zdF9jYXN0PGNoYXIqPihi
dWZmZXItPmRhdGEoKSk7CiAgICAgaHIgPSBzdHJlYW0tPkluaXRpYWxpemVGcm9tTWVtb3J5KHJl
aW50ZXJwcmV0X2Nhc3Q8QllURSo+KGRhdGFQdHIpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4
IGMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEuLjJjZjkwOTU3MGNhNDFl
OWYxZmUzZTg0MWY0M2E5Mzg4MDJkZmViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IGIyODk2
YWUzMGExYjhjYzNkZjEyYTA3NDEyY2Y1MDIyMTdmYzY4MzYuLmYwNThiNWRjOGVlMWNlNjNkOWU2
YzlkYmM2ZTVhYmJjZDhlMDQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlCisgICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6RXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IGY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQuLmU4Mjg3NDlmNjE2M2RjMzJj
NDgwNzU0MjYwMjVlNDVjMDUwMzg3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5k
ZXggNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3Mi4uZWI4NGM1YmYzZGNj
ZTQ3OGE2NzllNmUyMDYwZDgxNDE4N2ZhOWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rlcgog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAi
X3M7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsK
ICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVm
dWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkg
d2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMS4uNTU4ZGIzNzUw
NzFjOWIzZjc1ODZmY2ViZWFlYTU0YjdjYjI4M2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1h
Z2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGM3
NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIuLmJmYjJlODZmYzk3NGI1MThj
OTZmMGI3N2I2ZmVhZTg4ZDU5YjQxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEuLjEwZWIwNzkxMWMxY2NlMWVmYmViMWU5ZDM5YmQ4ZTYw
NmM2NTQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVj
b2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAxMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4Li4wMzZjMTNlOTI5YWI1YzczM2JhN2M4YjVkOTJiZGI4Y2RjMzZjMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NzJlODMyNjZlMjMwZWI2ZGZmN2RjMWVmN2RiNTUyMzk2
M2JmYjBkLi4xZDhhODJmMmU0OGU5ZjRlOGE0MTQwNjE1YjlhYWVhODc3NjM4OTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZS4uMjc0Y2Q0ZDVmMmY1ODY0Njc3MWM1OWViNzVmMjQyYmE5NzJlMzIzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MuLjUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYKICAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZTo6VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZCh0eXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIG1faWRlbnRpZmllcik7Cisg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGluaXREYXRhKSkpLCBtX2lkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBkZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVk
ZTAyMDFlZWYxZWQ4NjJkLi43YmExNjY0ZGYxNDhmMmQ0ZjY1NDM2MTRlMzE0MDQwYWI5MjI3OWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgIH0KIAogICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Np
b25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2VlZGVkKTsKKyAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
c3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0K
IApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVuCiAgICAgaWYgKCFn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBl
LCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSkpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9uSWRDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5k
ZXggNzMyYTE5NDkyYWQ3NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uY2M1YjhiNjY1OTUw
YjZlNTliOWMyZTJmNGY3ODI3MDdmOGMxMjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4K
QEAgLTQ1LDkgKzQ2LDkgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKIHsKIH0KIAotdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZURlY29k
ZXIoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBpbWFnZURlY29k
ZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7CisgICAgYXV0byBpbWFn
ZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoZGF0YS5zYWZlQnVmZmVyKCks
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpA
QCAtOTMsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaQogICAgIG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPnNldEV4cGVjdGVkQ29udGVudFNpemUoZXhwZWN0ZWRDb250
ZW50U2l6ZSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCBmcmFtZUNvdW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6
ZV90IGZyYW1lQ291bnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsK
QEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAg
ICBpbWFnZURlY29kZXItPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERh
dGEoZGF0YS5zYWZlQnVmZmVyKCksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICBhdXRvIGZyYW1l
Q291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAyNzBlMWViZTMxMjM1Zjc3ODZkZjA3YjkwMDBhMWM4N2E1N2QyN2I3Li5mOGVjZGU3
MjRhMWQ4MjVjZGQ3ZTZjNDFjODQwOTYyNThiZThjY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFW
QVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTM3LDYgKzM2
LDEwIEBACiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIApA
QCAtNTMsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyPiYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7Ci0gICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBm
cmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYp
PiYmKTsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwogICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTk4
YjJiMjNjZTZmYzBmNGZmMzIzODM2NTM4NmE4NmZjOTRkYWNhNy4uNTAxZTY3ZmFjY2JiZTc2ZGM0
YzdmZTE1NTYxOWZlMzYzMzljYzU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZURlY29kZXIoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIFN0cmluZyBtaW1lVHlwZSkgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhLCBTdHJpbmcgbWlt
ZVR5cGUpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQotICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50
U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCisgICAgU2V0
RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFt
ZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykg
U3luY2hyb25vdXMKICAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
aXplX3QgaW5kZXgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmM4ZTc0NjNkZTY3ODMyOTE3NjM1NWJm
MWExMGEyM2Y0ZDg4NjlhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC01OSwx
NyArNTksMTggQEAgc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5idWZmZXIo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBi
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7CisgICAgYXV0byBhcnJh
eUJ1ZmZlciA9IGJ1ZmZlci5idWZmZXIoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBp
ZiAoIWFycmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIDAsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
KyAgICByZXR1cm4geyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKSB9OwogfQog
CiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBH
ZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEMKIAogICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0
IHN0cmluZyJfczsKIAotICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKGtleVJlcXVlc3QpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hhcmVkQnVmZmVyKGtleVJlcXVlc3Qp
LCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAogdm9pZCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKQEAgLTExMCw3ICsxMTEsNyBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmIHVwZGF0ZSwgVXBkYXRlQwogCiAgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Np
b24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lz
dGVtQ29kZSk7CiAKLSAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxE
YXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKyAgICBj
b21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxTaGFyZWRCdWZmZXIobmV4dE1l
c3NhZ2UpLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJiBrZXlJZCkKQEAgLTEyMCw3ICsxMjEsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3Ry
aQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQo
U3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRL
ZXlGb3JLZXlJZChrZXlJZCkpKTsKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsU2hh
cmVkQnVmZmVyKGdldENhY2hlZEtleUZvcktleUlkKGtleUlkKSkpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKQpAQCAtMTMyLDcgKzEzMyw3IEBAIHZvaWQgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJp
bmcgZGVzdGluCiAgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRv
T3B0aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRp
Zmllcik7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09w
dGlvbmFsU2hhcmVkQnVmZmVyKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IGU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAuLjI5ODQzODY1
OGMzNjcyYTI2MmJlZWJlOWQ5YmFkNjc0Y2YyNTRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwLDcg
KzQwLDYgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0
cmF0ZWd5LmgiCkBAIC0xMjY3LDcgKzEyNjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KCptX2J1ZmZlcmVkRGF0
YS5nZXQoKSksIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAogICAgIG1fYnVm
ZmVyZWREYXRhLmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9
IDA7CkBAIC0xMjc3LDcgKzEyNzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2Vu
ZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpegogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlciB9LCBlbmNvZGVkRGF0YUxlbmd0aCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA0Zjc4YjlkZjU0ZTVlNjc3
ODc4NDEzNWEyN2EwM2RiYzYyOWJmZDc2Li5jZDJkNmEyMDczZmI5N2FiYTAxNmQzYzdlZjMxYzc3
MWExMjcwMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZy
b21QcmVsb2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2Fk
ZXItPm5ldHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBkaWRSZWNlaXZlRGF0YShSZWYgeyBjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImPigqY2h1bmspKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkzODgxMzI0YmIwOWI4
OWE4NjhkOGE5ZDgxMWM4YjYyYTIwMWE5ZjEuLjYwNDFiZGNkMmQyZGJjNzJmMzNiNGI4ZjJiYjUx
ZTgwYjI0Yjk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTE4MCwxMSArMTgwLDYgQEAgc3RydWN0IENvZGluZ1R5cGUgewogICAgIHR5cGVkZWYg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4gVHlwZTsKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RpbmdUeXBlPGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmPiB7Ci0gICAgdXNpbmcg
VHlwZSA9IERhdGFSZWZlcmVuY2U7Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KIHN0
cnVjdCBDb2RpbmdUeXBlPHN0ZDo6dHVwbGU8VHMuLi4+PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPHR5cGVuYW1lIENvZGluZ1R5cGU8VHM+OjpUeXBlLi4uPiBUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi40OTEyMDQ4NWU3ZmU5Yjc4NDA5ZDM3MjYz
NTQ2ODQ2NjZkYzdjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ckNvcHkuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
QEAgLTM3LDI0ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBTaGFy
ZWRCdWZmZXJDb3B5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICB1aW50
NjRfdCBidWZmZXJTaXplID0gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsKLSAgICBl
bmNvZGVyLnJlc2VydmUoc2l6ZW9mKGJ1ZmZlclNpemUpICsgYnVmZmVyU2l6ZSk7Ci0gICAgZW5j
b2RlciA8PCBidWZmZXJTaXplOwotICAgIGlmICghYnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2Vn
bWVudC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IG1fYnVmZmVyOwogfQogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
LSAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKK30KKworY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyQ29weTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDU3YjE0
NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkuLjM3MGI4MzI4ZDc2YzljM2Y3NzAw
NDczNWFkMzU5YWU2ZDNlZDYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0vLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERl
Y29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVm
ZXJlbmNlIGluc3RlYWQuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHRvIGJlIHNlbnQgb3ZlciBJUEMKKy8vIFdBUk5JTkc6IGEgU2hhcmVkQnVmZmVyQ29weSBz
aG91bGQgb25seSBiZSBhY2Nlc3NlZCBvbiB0aGUgSVBDJ3MgcmVjZWl2ZXIgc2lkZS4KIAogI3By
YWdtYSBvbmNlCiAKQEAgLTQwLDI5ICs0MCwzMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsK
IHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGln
dW91cygpKSB7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQogCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
bXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCisgICAgLy8gSXQg
cmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJl
Y29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgIC8vIG9uY2UgaXQncyBkZXNlcmlh
bGlzZWQgb3ZlciBJUEMuCisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSk7IH0KKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKKwogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFi
NWE2NTJiNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgotCi0j
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCi0KLW5hbWVz
cGFjZSBJUEMgewotCi12b2lkIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGlmIChtX2RhdGEuZW1wdHkoKSkgewotICAgICAg
ICBTaGFyZWRCdWZmZXJDb3B5OjplbmNvZGUoZW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIWJ1ZmZlcigpKTsKLSAgICBlbmNvZGVyIDw8IG1fZGF0YTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVy
ZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCi0KLW5hbWVzcGFj
ZSBJUEMgewotCi1jbGFzcyBFbmNvZGVyOwotCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIDogcHJpdmF0ZSBTaGFyZWRCdWZmZXJDb3B5IHsKLXB1YmxpYzoKLSAgICBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlKCkgPSBkZWZhdWx0OwotICAgIHVzaW5nIFNoYXJlZEJ1ZmZlckNvcHk6
OlNoYXJlZEJ1ZmZlckNvcHk7Ci0KLSAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKERhdGFS
ZWZlcmVuY2UgZGF0YSkKLSAgICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLSAgICAgICAgOiBtX2RhdGEoZGF0YSwgc2l6ZSkgeyB9Ci0KLSAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7Ci0gICAgLy8gVXNlIElQQzo6RGF0YVJlZmVyZW5jZSB0byBkZWNvZGUu
Ci0KLXByaXZhdGU6Ci0gICAgRGF0YVJlZmVyZW5jZSBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDVj
M2QyZWUxMjViOGJjYjk5ZWJhZTQzYTU4ZThhZTQ4YmZhMDFiOGQuLjhiNTIxZjc3MDE1NDhiMWFm
OGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMTQwLDE0ICsxNDAsNiBAQCBkZWYgZnVuY3Rpb25fcGFyYW1ldGVyX3R5
cGUodHlwZSwga2luZCk6CiAgICAgcmV0dXJuICdjb25zdCAlcyYnICUgdHlwZQogCiAKLWRlZiBy
ZXBseV90eXBlKHR5cGUpOgotICAgIGlmIHR5cGUgPT0gJ0lQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSc6Ci0gICAgICAgIHJldHVybiAnSVBDOjpEYXRhUmVmZXJlbmNlJwotICAgIGlmIHR5
cGUgPT0gJ3N0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPic6Ci0g
ICAgICAgIHJldHVybiAnc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JwotICAgIHJl
dHVybiB0eXBlCi0KLQogZGVmIHJlcGx5X3BhcmFtZXRlcl90eXBlKHR5cGUpOgogICAgIHJldHVy
biAnJXMmJyAlIHR5cGUKIApAQCAtMTY1LDcgKzE1Nyw3IEBAIGRlZiByZXBseV90dXBsZShtZXNz
YWdlKToKIAogCiBkZWYgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJu
ICdzdGQ6OnR1cGxlPCVzPicgJSAoJywgJy5qb2luKHJlcGx5X3R5cGUocGFyYW1ldGVyLnR5cGUp
IGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
J3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRl
ciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5
X2ZvcndhcmRfZGVjbGFyYXRpb24obWVzc2FnZSk6CkBAIC0yMDcsNyArMTk5LDcgQEAgZGVmIG1l
c3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAg
c2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4LnR5cGUsIHgua2lu
ZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpvaW4oWycgJy5qb2lu
KHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0g
JywgJy5qb2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShJ
UEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7XG4nICUgbW92ZV9w
YXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIGNh
bmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFt
ZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQpAQCAtMTA3
NywxMCArMTA2OSwxMCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29u
ZGl0aW9uKQogCiAgICAgICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKLSAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUs
ICcsICcuam9pbihbbW92ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAgICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBt
ZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2Fn
ZS5yZXBseV9wYXJhbWV0ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpjYWxsUmVwbHkoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAg
ICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RkOjpvcHRpb25hbDwlcz4gJXM7XG4n
ICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0ZDo6b3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC0xMDg4LDcgKzEwODAsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgcmVw
bHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQ
Qzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCA2OGNlYzY2MjJiNjA4
YjY3ZTk5YmI5YzI5OWJhMWYxNjhmNWRiZjFmLi41N2JjODM4Zjk3OTFkYWRiOTg1MDhlYzE0OGMy
ZWU3MmRlOWM0MDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGVhNTlmMDg5MTZkZDczZTcyNzc4Yjc4ZGVlOTY3MDcxMTg1NDg1ZWIuLjQ1ZWNlNTFhNTAzNjZk
YTM0ZmY5MGU5MWQ1N2U1YTg4ZTJkYjg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjYsMTAgKzI2LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVSZXNvdXJjZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTg1LDYg
KzgzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5k
aWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTAzLDcg
KzEwMiw2IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPFdlYkNvcmUv
U2VsZWN0aW9uR2VvbWV0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQpAQCAtMjk4MCw3ICsyOTc4LDcgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0
cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYgZGF0YSkKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRh
Lm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5n
ZXQoKSB9OworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8IGRhdGEubWltZVR5cGUg
PDwgZGF0YS5kYXRhOwogfQogCiBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk5MywxMSArMjk5MSwxMSBAQCBzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY3OTYz
Nzg5ZmEzNDdiZjhhZDU2NGY5NWQzYWYxYzliOWE3ZmMzOTcuLjQ0NTczMTA5YWUzMzIzZDY5ZTAy
MjdiZDdhYTQxNWEzY2I4NzkzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjAxLDcgKzIwMSw2IEBAIFBs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcAogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCi1QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5jcHAKIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcAog
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUyZDYzOTVmMDA2M2I2YTljY2IwNjA0YmFiMmY4
YzQxMjhjYmJlOGMuLjIxYzA5YWM1MjI4NWM5NDI1MTIxOGVlYWY4OWYwY2IzZDRlZjc0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
MTY0MiwxMyArMTY0MiwxMyBAQCAtICh2b2lkKWNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOihX
S1BERkNvbmZpZ3VyYXRpb24gKilwZGZDb25maWd1cmF0aW9uIGNvbXBsZQogICAgIGlmIChwZGZD
b25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmlndXJhdGlvbi5yZWN0KSkKICAg
ICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBkZkNvbmZpZ3VyYXRpb24ucmVj
dCk7CiAKLSAgICBfcGFnZS0+ZHJhd1RvUERGKGZyYW1lSUQsIGZsb2F0UmVjdCwgW2hhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHBkZkRhdGEpIHsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgeworICAgIF9wYWdl
LT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgcGRmRGF0YSkg
eworICAgICAgICBpZiAocGRmRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGhhbmRsZXIo
bmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gcGRmRGF0YS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgICAgIGhhbmRsZXIoKE5TRGF0YSAqKWRhdGEuZ2V0KCksIG5pbCk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDI5ZjkxNzc0NTk2Y2YwMDRjZDBkNTdiNWVhMzg2YjVjYjIzM2IzMGEuLmIwZGQx
OWE4ZmUyODRmNDhjZTA3ZTJkYTYwNDYxMjA3NzYxOWEwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC00Miw3ICs0Miw2
IEBACiAjaW1wb3J0ICJTYWZlQnJvd3NpbmdTUEkuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dh
cm5pbmcuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIlN5bmFwc2VTUEkuaCIKICNpbXBvcnQgIldl
YkNvbnRleHRNZW51UHJveHkuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
NjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMy4uMTBjODA0ZTdkMWU2YWFj
NTUzYThhOTU0ZTU2MTg0NmU3ZThkMjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgotI2ltcG9ydCAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVHlwZVJlZldyYXBwZXIuaCIKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSkpLCAwKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBh
ZmIzNzQyZTkyMTBiMTlkYjRiNDE0NTI4MTI0YTRjMWJmYTU2ZWIzLi40ZmZhYWM2M2RkMjg2ZTE1
ZTYyNWY1YjA4ZDg2OTZiN2UxYzIxNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJv
d3NpbmdXYXJuaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBA
IC00Mzk1LDEwICs0Mzk0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2Zp
bGVyT3V0cHV0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBkYXRhKT4gdG9BUElE
YXRhQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFj
aykKK3N0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSk+IHRvQVBJRGF0YUNhbGxiYWNrKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFS
ZWZlcmVuY2U+JiBkYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soZGF0YSA/IEFQSTo6
RGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKS5wdHIoKSA6IG51bGxwdHIp
OworICAgIHJldHVybiBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYgZGF0YSkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghZGF0YSkgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUo
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpLnB0cigpKTsKICAgICB9OwogfQogCkBAIC04OTkw
LDcgKzg5OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREYoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKQEAgLTk4ODEsOCAr
OTg4NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGxvYWRJZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0
YSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0ZShpY29u
RGF0YSkuZ2V0KCkpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgbG9hZElkZW50aWZpZXIpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBp
Y29uRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhBUEk6OkRhdGE6OmNyZWF0
ZShpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkucHRyKCkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTEwMTE1LDExICsxMDExOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgQ29tcGxl
dGlvCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25z
dCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZTsKLSAgICBpZiAoYXV0byBkYXRhID0gYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURh
dGEoKSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKLQotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMo
YXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCks
IGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZNb3Zl
KGRhdGFSZWZlcmVuY2UpKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNo
bWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFj
aG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkoYXR0YWNobWVudC5lbmNsb3NpbmdJbWFnZURhdGEoKSkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4
OTkzN2Y2OWY2ODk3ZTAuLmY0ZWFhNWEwZjRjNGMzMWE3MjExYzM1YjA2NTY4ZWM2Y2IxMjQ2MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDAwLDkgKzE0MDAs
OSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdWludDY0X3QgZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKICAgICB1aW50NjRf
dCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0
YSopPiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZHJhd1RvUERG
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnBhaXI8c2l6
ZV90LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICBzdGQ6OnBhaXI8c2l6ZV90
LCB1aW50NjRfdD4gY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpFcnJvciopPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZDc2
N2ZjMDZiMzZmMTU2ZmYzMWMzODNlNjQzZDQzNDRjMjE3YWFjOC4uZWE1ODc3MmVhMWJiZDE1NDA0
OWNiZTNiYWM5YzFhY2QwOTRjNzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVUYXNrLmgiCiAKICNpbmNsdWRlICJBUElGcmFtZUluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
QEAgLTE5MSw3ICsxOTAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KGJ1ZmZlcikpLCBtX3dlYlBhZ2VJ
RCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2Rl
MDE4NzBhOWE4NTIyLi43ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBA
IHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZv
aWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwCmluZGV4IDU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYuLmMy
YmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1
ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJB
c3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFu
ZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBj
b21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2Fy
ZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9p
bnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRh
Kj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcAppbmRleCA1YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmLi4w
N2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVy
QXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9h
cmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBn
ZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklU
WV9ERUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAppbmRleCA5MWZkZmM4NDM3YWE1
NzcwZWJiOTIxNmIzNzFiMzJiMmJhZDgyYTI1Li5mNzJhMmJmZmE1NDFiM2NmODg1Y2RlNGRkNjhl
YzE1NDAwNzJjNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UGFzdGVib2FyZFByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcApAQCAtNTcsNyArNTcsOSBAQCB2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6cmVhZEZpbGVQYXRocyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBD
b21wbGV0aW9uSAogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBDbGlwYm9hcmQ6OmdldChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZl
cihwYXN0ZWJvYXJkVHlwZS51dGY4KCkuZGF0YSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgQ2xpcGJvYXJkOjpnZXQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIocGFzdGVi
b2FyZFR5cGUudXRmOCgpLmRhdGEoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mJiBidWZmZXIpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQpA
QCAtOTAsMTQgKzkyLDEyIEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpkaWREZXN0cm95RnJh
bWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNT
YWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGNsaXBib2FyZCA9IENsaXBi
b2FyZDo6Z2V0KHBhc3RlYm9hcmROYW1lKTsKLSAgICBjbGlwYm9hcmQucmVhZEJ1ZmZlcihQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBbJmNsaXBib2FyZCwgb3JpZ2luLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmJiBidWZmZXIpIG11dGFibGUgeworICAgIGNsaXBib2FyZC5yZWFkQnVmZmVyKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIFsmY2xpcGJvYXJkLCBvcmlnaW4sIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBidWZmZXIpIG11
dGFibGUgewogICAgICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVR5cGVzOwotICAgICAgICBp
ZiAoYXV0byBkYXRhQnVmZmVyID0gYnVmZmVyLmJ1ZmZlcigpKSB7Ci0gICAgICAgICAgICBhdXRv
IGN1c3RvbURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcigqZGF0
YUJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoY3VzdG9tRGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4p
IHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBjdXN0b21EYXRhLm9yZGVyZWRU
eXBlcygpKQotICAgICAgICAgICAgICAgICAgICBkb21UeXBlcy5hZGQodHlwZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmIChjdXN0b21EYXRh
Lm9yaWdpbigpID09IG9yaWdpbikgeworICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogY3Vz
dG9tRGF0YS5vcmRlcmVkVHlwZXMoKSkKKyAgICAgICAgICAgICAgICBkb21UeXBlcy5hZGQodHlw
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBjbGlwYm9hcmQuZm9ybWF0cyhbZG9tVHlwZXMgPSBX
VEZNb3ZlKGRvbVR5cGVzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oVmVjdG9yPFN0cmluZz4mJiBmb3JtYXRzKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNGU0MWM2NTdjZjYxODNm
YWZlZmEzNzA0MGU3OWU4NjcwMGI1YTI5YS4uYWRkMmFkMjQ5NDJkYTE1YWM0YmQ2Y2Q1MmRmOTQ5
MjVkYjRmNDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KQEAgLTg5NywxMiArODk3LDEyIEBAIC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZv
clByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvCiAgICAg
cHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0ID0gQ0dSZWN0R2V0SGVpZ2h0KHByaW50aW5n
UmVjdCk7CiAKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKTsKLSAgICBh
dXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYoZnJh
bWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHBkZkRhdGEpIHsKKyAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRhdGEpIHsKICAgICAgICAgcmV0YWluZWRTZWxmLT5f
cGRmUHJpbnRDYWxsYmFja0lEID0gMDsKLSAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkKKyAg
ICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOworICAgICAgICBhdXRvIGRhdGEgPSBw
ZGZEYXRhLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAgICAgYXV0byBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmdldCgpKSk7
CiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3ByaW50ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZE
b2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4
IDgyOThiZWI4NTdjMmM1YTdiZjY0YzE4NGZhZDhhMGVlY2UzMjBhMTAuLjE0YzRjOGYzNTIyM2Yx
ZTI4NWYwYjhkM2IwYmM1NjIxMDA1ZmViZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFs
VGFwKFdlYktpdDo6VGEKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlU21hcnRNYWduaWZpY2F0aW9u
SW5mb3JtYXRpb25Gb3JQb3RlbnRpYWxUYXAocmVxdWVzdElELCByZW5kZXJSZWN0LCBmaXRFbnRp
cmVSZWN0LCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIG5vZGVJ
c1Jvb3RMZXZlbCk7CiB9CiAKLXN0ZDo6cGFpcjxzaXplX3QsIHVpbnQ2NF90PiBXZWJQYWdlUHJv
eHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3N0ZDo6cGFpcjxzaXpl
X3QsIHVpbnQ2NF90PiBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAg
Y2FsbGJhY2soeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYTEzZTUxNDYwZjZiYjlmODBlZjNk
MWE4NDJlZmMwYjlmNDQ1OTBjNi4uNzVkNWU1YTc5NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFjMTk4
ZjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0
ZS5nZXQoKSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOworICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpTZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShjZXJ0aWZpY2F0ZSkpKSwgV1RGTW92ZShjYWxs
YmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAKaW5kZXggYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5
ZS4uOGJlY2Q1OWI1ZWIzN2UwZDNhNTE0NTM4ZjM3MzgxZDdmNzdkOGNjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0
YVR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpS
ZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weShX
VEZNb3ZlKGluaXREYXRhKSkpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKElQQzo6
U2hhcmVkQnVmZmVyQ29weSYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29s
IG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFtZXNzYWdlLmJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6VXBkYXRlTGljZW5zZShzZXNzaW9uSWQsIHR5cGUsIFdURk1v
dmUocmVzcG9uc2UpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Np
b25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlz
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25h
bDxNZXNzYWdlPiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlVwZGF0ZUxpY2Vu
c2Uoc2Vzc2lvbklkLCB0eXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShyZXNwb25z
ZSkpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2so
c2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUoY2hhbmdlZEV4
cGlyYXRpb24pLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWls
ZWQpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5k
ZXggNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMi4uNzdjNGU2YWY4YTBi
NGVlNzhlODFhNDM2YjY2NDY3ZGE1ZjU5MGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApA
QCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+
CkBAIC0yMDAsMTggKzIwMCwxNiBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBh
bGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3Rh
dHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVy
IHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0
YSB9OwotCiAgICAgc2l6ZV90IGZyYW1lQ291bnQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGJv
b2wgaGFzVHJhY2s7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+PiBmcmFtZUluZm9zOwotICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6
U2V0RGF0YShtX2lkZW50aWZpZXIsIGRhdGFSZWZlcmVuY2UsIGFsbERhdGFSZWNlaXZlZCksIE1l
c3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVD
b3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZyYW1lSW5mb3MpLCAwKSkKKyAgICBpZiAoIW1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHk6OlNldERhdGEobV9pZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkoZGF0YSksIGFsbERhdGFSZWNlaXZlZCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eTo6U2V0RGF0YTo6UmVwbHkoZnJhbWVDb3VudCwgc2l6ZSwgaGFzVHJhY2ssIGZy
YW1lSW5mb3MpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IGFsbERhdGFSZWNlaXZlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IDQwZDM3MzRmN2Ez
MjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEuLjljMDg4MTYxZWRkYmYyMzQwZjg3YTBiYjk3
MzQxMzdlYTdlM2Q3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2Vi
Q29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggMDgy
YjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3My4uYmVkZGVjYmIwNzRkMzQxMmE5
YmU5M2NiY2Q1OWFlMTkyNDdmMmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFn
ZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQy
LDggKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBSZWZQdHI8UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29k
ZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVy
SWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKLSAgICBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKLSAgICBpZiAoIWVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2RlcihkYXRhUmVmZXJlbmNlLCBtaW1l
VHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2Rl
cjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRpZmllciksIDApKQorICAgIGlmICghZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29w
eShkYXRhKSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWltYWdlRGVjb2RlcklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBhNTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2
MzgxODYyYTY4MDhhLi42MTU1YThkYTlmNDhmZWM4NDZhOWE0NzhiNjVjMmViMzU1Yjg2ZDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1
ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5i
dWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHJldHVybiBidWZmZXIuYnVmZmVyKCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTYyLDcgKzYy
LDcgQEAgc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyQ29weSBjb252ZXJ0VG9TaGFyZWRCdWZmZXJD
b3B5KFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0
ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYuLmVhZGQ4NDczMGYx
MWI3NzNiMDM1MmRiYWFmZThkZGFjZGE4NzYwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIwOSw3ICsy
MDksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0XwogICAgIGlmIChVTkxJS0VMWShtX2ludGVy
Y2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkp
KSkgewogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVy
ID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4
LDggKzIxOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfCiAgICAgICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIGF1dG8g
YnVmZmVyID0gZGF0YS5idWZmZXIoKSA/IFJlZiB7ICpkYXRhLmJ1ZmZlcigpIH0gOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgbV9jb3JlTG9hZGVy
LT5kaWRSZWNlaXZlRGF0YShkYXRhLnNhZmVCdWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDMxNDgyZWIzYjM2
OGQ3OGE2MWE3ZWMxZDI0YzU5ODEwYmM5MWVkOGEuLjdlYmY5ODBhODk0ZDkyNjMzNzQwMTQxYWY4
YzE0OGZmMmI1ZWM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
CkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CkBAIC04NSw5ICs4NSw5IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgfQogCiAgICAgaWYgKG1faXNEb3dubG9hZCkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KGJ1ZmZlciksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRh
QW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTE0Miw5ICsxNDIsOSBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmso
Y29uc3QgU2hhcmVkQnVmZmVyJiBidQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rv
d25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgYnVmZmVyLCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciAsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5z
aXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weShidWZmZXIpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6
ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAppbmRleCAyOGMxNGJhNTM2NjNjNTViNjFiMTA5ODEyYzA0OGEwMjA1NmJkMzhkLi5jNGRmOGFm
MjJiMzNhYjhhYTlkNzc1MmJkNThhMjdlOTZjNGUxNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0
eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxl
TmFtZSwgZGF0YS5nZXQoKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29u
dGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92
ZShkYXRhKSkpKTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVu
dHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZWQ0ZjVkZTlkNWU1NjE4ZDQzMjQ1NTA4
MmY1ZGExODhhYmY5YmY0Yy4uNGI2YjM0ODU3ZTc4ZTU2ZjUyNmJjZjY0NTNjNDUyYjdlNDMyNGI4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAj
aW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBmODlmZjcyYTBkMzFiZWMxMWVmODAyOTdlZmJhOTJjMmE3YmM2NmI1Li5mNjU0M2Zl
ZDQwNTU4ZmZhZmU1ZmVmOTg1ZDhiMDY4YTkyZTI5NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjMsNyArNjMsNyBAQAogI2luY2x1ZGUg
IlNlc3Npb25TdGF0ZUNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lu
Y2x1ZGUgIlRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5oIgogI2luY2x1ZGUgIlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIlZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaCIKQEAgLTM4MDUsOSArMzgwNSw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29u
dGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVD
aGlsCiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNN
SFRNTERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01I
VE1MRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYpPiYmIGNhbGxiYWNrKQogewotICAgIGNhbGxiYWNrKHsgTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpIH0pOworICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVm
ZmVyQ29weShNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSkpKTsK
IH0KICNlbmRpZgogCkBAIC0zODI1LDcgKzM4MjUsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0
aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFdl
YlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykK
K3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYm
IGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGE7CkBAIC0zODMzLDEyICszODMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0
CiAgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZy
YW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhQnVm
ZmVyOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkYXRhKQotICAgICAgICBkYXRhUmVm
ZXJlbmNlID0geyBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSkgfTsKKyAgICAgICAgZGF0YUJ1ZmZlciA9
IElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7
CiAjZW5kaWYKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhkYXRh
QnVmZmVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKQEAg
LTM4NTksNyArMzg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgY2FsbGJhY2so
cmVzdWx0U3RyaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxs
YmFjaykKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTM4NzEsMTAg
KzM4NzEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmJ1ZmZlciB9OwotICAgIGNhbGxi
YWNrKGRhdGFSZWZlcmVuY2UpOworICAgIGNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyQ29weShX
VEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAogc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCkBAIC0zODkwLDcgKzM4ODcsNyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogICAg
IHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCit2b2lk
IFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFj
aykKIHsKICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
KSB7CkBAIC0zODk4LDEzICszODk1LDEwIEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlCiAgICAg
ICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVz
b3VyY2VVUkwpOwogICAgIH0KIAotICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwotICAgIGlmIChidWZmZXIpCi0gICAgICAgIGRhdGFSZWZlcmVuY2UgPSB7
ICpidWZmZXIgfTsKLSAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKKyAgICBjYWxsYmFjayhJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+
JiYgY2FsbGJhY2spCit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmIGNhbGxiYWNrKQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0zOTE0LDEyICszOTA4
LDEyIEBAIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwogI2VuZGlmCiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YUJ1ZmZlcjsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQo
KSkpIH07CisgICAgICAgIGRhdGFCdWZmZXIgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogI2VuZGlmCi0gICAgY2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSk7CisgICAgY2FsbGJhY2soZGF0YUJ1ZmZlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKQEAgLTU0NzIsNyArNTQ2Niw3IEBAIHZvaWQg
V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFn
ZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mIHJlY3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OmRyYXdUb1BE
RihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
JiByZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lVmlldyA9ICptX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBJbnRTaXplIHNuYXBzaG90U2l6ZTsKQEAgLTU0
OTcsNyArNTQ5MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mCiAgICAgZnJhbWVWaWV3LnNl
dExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KG9yaWdpbmFsTGF5b3V0Vmlld3BvcnRPdmVycmlk
ZVJlY3QpOwogICAgIGZyYW1lVmlldy5zZXRQYWludEJlaGF2aW9yKG9yaWdpbmFsUGFpbnRCZWhh
dmlvcik7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRh
R2V0Qnl0ZVB0cihwZGZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZkRhdGEuZ2V0KCkp
KSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHBkZkRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZHJhd1Jl
Y3RUb0ltYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VT
aXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU1NTEsMTIgKzU1NDUsMTIgQEAg
dm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGUpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERihGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmKT4mJiBjYWxsYmFjaykKIHsKICAgICBQcmludENvbnRleHRBY2Nlc3NTY29wZSBzY29w
ZSB7ICp0aGlzIH07CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRh
OwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3Vu
dCwgcGRmUGFnZURhdGEpOwotICAgIGNhbGxiYWNrKHsgQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdl
RGF0YS5nZXQoKSksIHN0YXRpY19jYXN0PHNpemVfdD4oQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VE
YXRhLmdldCgpKSkgfSk7CisgICAgY2FsbGJhY2soSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmRyYXdQYWdlc1RvUERGSW1wbChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKQEAgLTY5OTIsMTQgKzY5ODYsMTQgQEAg
dm9pZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
UGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lE
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdl
OjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogZG9jdW1lbnRMb2Fk
ZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwog
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwogCiAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
ZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBp
Y29uRGF0YSB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5KFJlZlB0ciB7IGljb25EYXRhIH0pKTsKICAgICB9KTsKIH0KIApAQCAtNzA2Miw3ICs3MDU2
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2No
ZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxlckkKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVu
dGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsK
ICAgICBBU1NFUlQoaGFuZGxlcik7CiAKLSAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEo
dGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVyKCkgPyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0
YXNrSWRlbnRpZmllciwgZGF0YS5zYWZlQnVmZmVyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnVy
bFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTcyODcsMTIgKzcyODEsMTIg
QEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4KICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBlbmNsb3NpbmdJbWFnZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
aykKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50
RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0
dHJpYnV0ZXMoV1RGTW92ZShmaWxlU2l6ZSksIGNvbnRlbnRUeXBlLCBmaWxlTmFtZSk7Ci0gICAg
ICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29udGVudFR5cGUs
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY2xvc2luZ0ltYWdlRGF0YS5kYXRhKCksIGVuY2xvc2lu
Z0ltYWdlRGF0YS5zaXplKCkpKTsKKyAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5n
SW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwgZW5jbG9zaW5nSW1hZ2VEYXRhLnNhZmVCdWZmZXIo
KSk7CiAgICAgfQogICAgIGNhbGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDg4NjY3MDdjNDYxM2Q5YTdjZDM1MjE1ZGZjYTkyM2M2
OTc5YmViOS4uMGE4MjcwOWFjM2ZhMzU3YjE3NDIzODhlODI4NmIyYzAwZTY0OTc0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxNCw3ICsxMDE0
LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRv
SW1hZ2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpPiYmKTsKLSAg
ICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdQYWdl
c1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbChX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0
YSk7CiAjZW5kaWYKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJh
d1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgc2l6
ZV90LCBNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9TQXN5bmNSZXBseSYmKTsKICNlbmRp
ZgogCi0gICAgdm9pZCBkcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKKyAgICB2b2lkIGRyYXdUb1BERihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
Jik+JiYpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRp
bmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4mJik7CkBAIC0xMjU4
LDcgKzEyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNl
bmRpZgogCi0gICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24s
IENhbGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlJik+JiYpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKQEAgLTEzMDgsNyArMTMwOCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNp
emUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZW5jbG9zaW5nSW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXpl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGVuY2xvc2luZ0ltYWdlRGF0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIHFsVGh1bWJu
YWlsSGFuZGxlKTsKICNlbmRpZgogCkBAIC0xNjgzLDE1ICsxNjgzLDE1IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmKT4mJik7CiAjZW5kaWYKICNpZiBF
TkFCTEUoTUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY2Fs
bGJhY2spOworICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmIGNhbGxiYWNrKTsKICNlbmRp
ZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmKTsKLSAgICB2b2lkIGdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmKTsKKyAg
ICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYpOwogICAgIHZvaWQgZ2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmKTsKICAgICB2b2lkIGdldFNvdXJj
ZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+Jik+JiYpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2
ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYpPiYmKTsKICAgICB2
b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxk
SWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGJkYTVmNTBhZGQyM2E5Njc0MGU4OWQ3MzNk
NzljMTg3ZjA1MmJlMTIuLjE0ZDFjNjczNGIyMmIzMmU5MjU3NDA3ZjU3YjFjNGFiYjBmZTQ0MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMjEyLDE1ICsyMTIsMTUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZyByZXN1bHQpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoTUhUTUwp
Ci0gICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSgpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgZGF0YSkgQXN5bmMKKyAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKCkgLT4gKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCi0gICAgR2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZSkg
QXN5bmMKLSAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBkYXRhUmVmZXJlbmNlKSBBc3luYworICAgIEdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKSAt
PiAoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGJ1ZmZlcikgQXN5bmMKKyAg
ICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFN0cmluZyByZXNvdXJjZVVSTCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJDb3B5PiBidWZmZXIpIEFzeW5jCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24oKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKICAgICBHZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoKSAtPiAoU3RyaW5nIHN0cmluZykgQXN5bmMKLSAgICBHZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBk
YXRhKSBBc3luYworICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoKSAtPiAoc3RkOjpv
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGRhdGEpIEFzeW5jCiAgICAgR2V0U291cmNl
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpIC0+IChTdHJpbmcgc3Ry
aW5nKSBBc3luYwotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKSAtPiAoc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGFS
ZWZlcmVuY2UpIEFzeW5jCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQpIC0+IChzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4gZGF0YVJlZmVyZW5jZSkgQXN5bmMKIAogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3Jp
cHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVy
cywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6
cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJ
UEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCkBAIC00MTMsMTIgKzQxMywxMiBAQCBHZW5l
cmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJ
bmZvKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFs
U2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBjb21wdXRl
ZFBhZ2VNYXJnaW4pIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgRHJhd1JlY3RUb0lt
YWdlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUg
aW1hZ2VTaXplKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBpbWFnZSkgQXN5
bmMKLSAgICBEcmF3UGFnZXNUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQz
Ml90IGNvdW50KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIEFzeW5jCisgICAgRHJhd1Bh
Z2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCkgLT4g
KElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChzaXpl
X3QgcGFnZUNvdW50KSBTeW5jaHJvbm91cwotICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
c2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAg
IERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBhZ2VDb3VudCkgLT4gKElQQzo6U2hh
cmVkQnVmZmVyQ29weSBkYXRhKSBBc3luYwogI2VuZGlmCi0gICAgRHJhd1RvUERGKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gcmVjdCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKSBBc3luYworICAgIERyYXdUb1BE
RihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHJlY3QpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkgQXN5bmMK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmludGluZyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbykgLT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpIEFzeW5jCkBAIC01NTAs
NyArNTUwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgIFNldFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQogCi0gICAgRGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50
aWZpZXIpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaWNvbkRhdGEpIEFzeW5j
CisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIpIC0+IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgaWNvbkRh
dGEpIEFzeW5jCiAgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGlu
Z0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpAQCAtNTcxLDcgKzU3MSw3IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBjb250ZW50VHlwZSkgLT4gKCkg
QXN5bmMKLSAgICBVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhTdHJpbmcgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUsIFN0cmluZyBjb250ZW50VHlwZSwgU3Ry
aW5nIGZpbGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZW5jbG9zaW5nSW1h
Z2VEYXRhKSAtPiAoKSBBc3luYworICAgIFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKFN0cmlu
ZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZSwgU3RyaW5nIGNv
bnRlbnRUeXBlLCBTdHJpbmcgZmlsZU5hbWUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBlbmNsb3Np
bmdJbWFnZURhdGEpIC0+ICgpIEFzeW5jCiAgICAgVXBkYXRlQXR0YWNobWVudEljb24oU3RyaW5n
IGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgcWxUaHVtYm5haWxI
YW5kbGUpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNmQ1NWYxMDg3Y2E0MDJjOTU1ZWE1YjU4MjE0NzM0
MDIxMTQwMGYwLi5mZDU0OGZhOGY2ZmU3NzVlYjgyY2E5YjE0ZDg2ZmY5NGJiYWM0MmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNoYXJlYWJsZUJpdG1h
cFV0aWxpdGllcy5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2ltcG9ydCAiU2hh
cmVkTWVtb3J5LmgiCiAjaW1wb3J0ICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKICNp
bXBvcnQgIlRhcEhhbmRsaW5nUmVzdWx0LmgiCkBAIC00MjQ0LDEzICs0MjQ1LDEzIEBAIHZvaWQg
V2ViUGFnZTo6ZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByCiAgICAgICAgIGF1dG8gcGRmRGF0YSA9IHBkZlNuYXBzaG90QXRT
aXplKHNuYXBzaG90UmVjdCwgc25hcHNob3RTaXplLCAwKTsKIAogICAgICAgICBmcmFtZVZpZXcu
c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qob3JpZ2luYWxMYXlvdXRWaWV3cG9ydE92ZXJy
aWRlUmVjdCk7Ci0gICAgICAgIHJlcGx5KElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRl
UHRyKHBkZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgocGRmRGF0YS5nZXQoKSkpKTsKKyAg
ICAgICAgcmVwbHkoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBk
ZkRhdGEuZ2V0KCkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZy
YW1lSUQsIHByaW50SW5mbywgMCwgcGFnZUNvdW50LCBwZGZQYWdlRGF0YSk7Ci0gICAgcmVwbHko
SVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSk7CisgICAgcmVwbHkoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZlBhZ2VEYXRhLmdldCgpKSkpOwog
CiAgICAgZW5kUHJpbnRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDE0Y2RmNzUxNWM2MmM0NWRhYjlmOWRiODE2ZmRjYjJkODg1Y2YzM2MuLmIwMzJjYzcz
OGE0MGZkMjk4ZjBlMDI2OGZhMjlkN2U1NGQ1MDI0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBPYmplY3Q7CiB9CiAKIG5hbWVz
cGFjZSBJUEMgewotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtNTUxLDcgKzU1MSw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgY29uc3VtZUF1
ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAg
ICB2b2lkIGNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5Jik7CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCA3NDkzYzNmOGY0NjUxZGRmYmQ1MDQxMWU3ZTIwNTY2YWQ5MGQ5MmZlLi40MmQ3NWEzOTRh
OWNkMjdkNDQ4OTRkN2Y5NTlhMDIxMDAxZDc2MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTk5LDcgKzE5OSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJh
dGlvbnMoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHJlZ2lzdHJhdGlvbkRhdGEpCisg
ICAgQ29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyhJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgcmVnaXN0cmF0aW9uRGF0YSkKICAgICBBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNEaWRDaGFu
Z2Uoc3RydWN0IFdlYktpdDo6QWNjZXNzaWJpbGl0eVByZWZlcmVuY2VzIGFjY2Vzc2liaWxpdHlQ
cmVmZXJlbmNlcykKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBkZjFmOGNmYjEwYjI3ZTYxMjk4NTdkY2E5ZDgx
NmFiZTE4MTcwNDVhLi4xNTNkODllMTUzYTcwZGMxYzU2NmM5MTYzMTNmNDA5NzkxMzliOTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNpbXBv
cnQgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbXBvcnQgIldLQVBJ
Q2FzdC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCkBAIC0xMjQ4LDE2ICsxMjQ5LDE2
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c3lzdGVtRGlkV2FrZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQcm9jZXNzOjpjb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUHJvY2Vzczo6Y29uc3VtZUF1ZGlvQ29tcG9u
ZW50UmVnaXN0cmF0aW9ucyhjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogICAgIGlmICghUEFMOjppc0F1ZGlvVG9vbGJveENv
cmVGcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0F1ZGlvVG9vbGJveENvcmVf
QXVkaW9Db21wb25lbnRBcHBseVNlcnZlclJlZ2lzdHJhdGlvbnMoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byByZWdpc3RyYXRpb25zID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7Ci0gICAgaWYgKCFyZWdp
c3RyYXRpb25zKQorICAgIGlmICghZGF0YS5idWZmZXIoKSkKICAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gcmVnaXN0cmF0aW9ucyA9IGRhdGEuYnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAg
ICAgYXV0byBlcnIgPSBBdWRpb0NvbXBvbmVudEFwcGx5U2VydmVyUmVnaXN0cmF0aW9ucyhyZWdp
c3RyYXRpb25zLmdldCgpKTsKICAgICBpZiAobm9FcnIgIT0gZXJyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>