<?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>217242</bug_id>
          
          <creation_ts>2020-10-02 12:08:22 -0700</creation_ts>
          <short_desc>Update Worklet.addModule() to actually fetch and evaluate the module script</short_desc>
          <delta_ts>2020-10-06 10:19:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217194</dependson>
          <blocked>217058</blocked>
    
    <blocked>217251</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694178</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 12:08:22 -0700</bug_when>
    <thetext>Update WorkletGlobalScope.addModule() to actually fetch the module script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694198</commentid>
    <comment_count>1</comment_count>
      <attachid>410357</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 13:07:53 -0700</bug_when>
    <thetext>Created attachment 410357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694209</commentid>
    <comment_count>2</comment_count>
      <attachid>410360</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 13:42:17 -0700</bug_when>
    <thetext>Created attachment 410360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694222</commentid>
    <comment_count>3</comment_count>
      <attachid>410365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 13:56:10 -0700</bug_when>
    <thetext>Created attachment 410365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694302</commentid>
    <comment_count>4</comment_count>
      <attachid>410392</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-02 17:42:05 -0700</bug_when>
    <thetext>Created attachment 410392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694416</commentid>
    <comment_count>5</comment_count>
      <attachid>410392</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-03 09:57:26 -0700</bug_when>
    <thetext>Comment on attachment 410392
Patch

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

&gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; +    if (is&lt;WorkerGlobalScope&gt;(context) || (is&lt;WorkletGlobalScope&gt;(context) &amp;&amp; downcast&lt;WorkletGlobalScope&gt;(context).workerOrWorkletThread()))
&gt; +        return WorkerThreadableLoader::create(static_cast&lt;WorkerOrWorkletGlobalScope&amp;&gt;(context), client, WorkerRunLoop::defaultMode(), WTFMove(request), options, WTFMove(referrer));
&gt; +
&gt; +    Document* document = nullptr;
&gt; +    if (is&lt;WorkletGlobalScope&gt;(context))
&gt; +        document = downcast&lt;WorkletGlobalScope&gt;(context).responsibleDocument();
&gt; +    else
&gt; +        document = &amp;downcast&lt;Document&gt;(context);
&gt;  
&gt; -    return DocumentThreadableLoader::create(downcast&lt;Document&gt;(context), client, WTFMove(request), options, WTFMove(referrer));
&gt; +    return DocumentThreadableLoader::create(*document, client, WTFMove(request), options, WTFMove(referrer));

I don&apos;t quite understand this logic. When do you have a WorkletGlobalScope but not a workerOrWorkletThread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694683</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 08:18:10 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 410392 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410392&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; &gt; +    if (is&lt;WorkerGlobalScope&gt;(context) || (is&lt;WorkletGlobalScope&gt;(context) &amp;&amp; downcast&lt;WorkletGlobalScope&gt;(context).workerOrWorkletThread()))
&gt; &gt; +        return WorkerThreadableLoader::create(static_cast&lt;WorkerOrWorkletGlobalScope&amp;&gt;(context), client, WorkerRunLoop::defaultMode(), WTFMove(request), options, WTFMove(referrer));
&gt; &gt; +
&gt; &gt; +    Document* document = nullptr;
&gt; &gt; +    if (is&lt;WorkletGlobalScope&gt;(context))
&gt; &gt; +        document = downcast&lt;WorkletGlobalScope&gt;(context).responsibleDocument();
&gt; &gt; +    else
&gt; &gt; +        document = &amp;downcast&lt;Document&gt;(context);
&gt; &gt;  
&gt; &gt; -    return DocumentThreadableLoader::create(downcast&lt;Document&gt;(context), client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; +    return DocumentThreadableLoader::create(*document, client, WTFMove(request), options, WTFMove(referrer));
&gt; 
&gt; I don&apos;t quite understand this logic. When do you have a WorkletGlobalScope
&gt; but not a workerOrWorkletThread?

A Worklet does not necessarily use threading. PaintWorklets do not use threading, AudioWorklets do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694704</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-05 08:45:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; Comment on attachment 410392 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410392&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; &gt; &gt; +    if (is&lt;WorkerGlobalScope&gt;(context) || (is&lt;WorkletGlobalScope&gt;(context) &amp;&amp; downcast&lt;WorkletGlobalScope&gt;(context).workerOrWorkletThread()))
&gt; &gt; &gt; +        return WorkerThreadableLoader::create(static_cast&lt;WorkerOrWorkletGlobalScope&amp;&gt;(context), client, WorkerRunLoop::defaultMode(), WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; +
&gt; &gt; &gt; +    Document* document = nullptr;
&gt; &gt; &gt; +    if (is&lt;WorkletGlobalScope&gt;(context))
&gt; &gt; &gt; +        document = downcast&lt;WorkletGlobalScope&gt;(context).responsibleDocument();
&gt; &gt; &gt; +    else
&gt; &gt; &gt; +        document = &amp;downcast&lt;Document&gt;(context);
&gt; &gt; &gt;  
&gt; &gt; &gt; -    return DocumentThreadableLoader::create(downcast&lt;Document&gt;(context), client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; +    return DocumentThreadableLoader::create(*document, client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; 
&gt; &gt; I don&apos;t quite understand this logic. When do you have a WorkletGlobalScope
&gt; &gt; but not a workerOrWorkletThread?
&gt; 
&gt; A Worklet does not necessarily use threading. PaintWorklets do not use
&gt; threading, AudioWorklets do.

Oh, that&apos;s not confusing at all!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694705</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 08:49:53 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #7)
&gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; &gt; Comment on attachment 410392 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410392&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; &gt; &gt; &gt; +    if (is&lt;WorkerGlobalScope&gt;(context) || (is&lt;WorkletGlobalScope&gt;(context) &amp;&amp; downcast&lt;WorkletGlobalScope&gt;(context).workerOrWorkletThread()))
&gt; &gt; &gt; &gt; +        return WorkerThreadableLoader::create(static_cast&lt;WorkerOrWorkletGlobalScope&amp;&gt;(context), client, WorkerRunLoop::defaultMode(), WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    Document* document = nullptr;
&gt; &gt; &gt; &gt; +    if (is&lt;WorkletGlobalScope&gt;(context))
&gt; &gt; &gt; &gt; +        document = downcast&lt;WorkletGlobalScope&gt;(context).responsibleDocument();
&gt; &gt; &gt; &gt; +    else
&gt; &gt; &gt; &gt; +        document = &amp;downcast&lt;Document&gt;(context);
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt; -    return DocumentThreadableLoader::create(downcast&lt;Document&gt;(context), client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; &gt; +    return DocumentThreadableLoader::create(*document, client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t quite understand this logic. When do you have a WorkletGlobalScope
&gt; &gt; &gt; but not a workerOrWorkletThread?
&gt; &gt; 
&gt; &gt; A Worklet does not necessarily use threading. PaintWorklets do not use
&gt; &gt; threading, AudioWorklets do.
&gt; 
&gt; Oh, that&apos;s not confusing at all!

:) Per spec, Workets are completely thread-agnostic [1] and our current implementation of paint Worklets does not use threading at all. I am trying to add support for threading for AudioWorklets without breaking support for using the main thread so that I don&apos;t break our paint Worklets.

[1] https://drafts.css-houdini.org/worklets/#motivations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694711</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-05 08:56:50 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Sam Weinig from comment #7)
&gt; &gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; &gt; &gt; Comment on attachment 410392 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; View in context:
&gt; &gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410392&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; &gt; &gt; &gt; &gt; +    if (is&lt;WorkerGlobalScope&gt;(context) || (is&lt;WorkletGlobalScope&gt;(context) &amp;&amp; downcast&lt;WorkletGlobalScope&gt;(context).workerOrWorkletThread()))
&gt; &gt; &gt; &gt; &gt; +        return WorkerThreadableLoader::create(static_cast&lt;WorkerOrWorkletGlobalScope&amp;&gt;(context), client, WorkerRunLoop::defaultMode(), WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; &gt; +    Document* document = nullptr;
&gt; &gt; &gt; &gt; &gt; +    if (is&lt;WorkletGlobalScope&gt;(context))
&gt; &gt; &gt; &gt; &gt; +        document = downcast&lt;WorkletGlobalScope&gt;(context).responsibleDocument();
&gt; &gt; &gt; &gt; &gt; +    else
&gt; &gt; &gt; &gt; &gt; +        document = &amp;downcast&lt;Document&gt;(context);
&gt; &gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt; &gt; -    return DocumentThreadableLoader::create(downcast&lt;Document&gt;(context), client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; &gt; &gt; +    return DocumentThreadableLoader::create(*document, client, WTFMove(request), options, WTFMove(referrer));
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I don&apos;t quite understand this logic. When do you have a WorkletGlobalScope
&gt; &gt; &gt; &gt; but not a workerOrWorkletThread?
&gt; &gt; &gt; 
&gt; &gt; &gt; A Worklet does not necessarily use threading. PaintWorklets do not use
&gt; &gt; &gt; threading, AudioWorklets do.
&gt; &gt; 
&gt; &gt; Oh, that&apos;s not confusing at all!
&gt; 
&gt; :) Per spec, Workets are completely thread-agnostic [1] and our current
&gt; implementation of paint Worklets does not use threading at all. I am trying
&gt; to add support for threading for AudioWorklets without breaking support for
&gt; using the main thread so that I don&apos;t break our paint Worklets.
&gt; 
&gt; [1] https://drafts.css-houdini.org/worklets/#motivations

I would never doubt that a Houdini spec use confusing naming :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694886</commentid>
    <comment_count>10</comment_count>
      <attachid>410392</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-05 15:07:25 -0700</bug_when>
    <thetext>Comment on attachment 410392
Patch

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

r=me

&gt; Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.h:56
&gt; +    AudioWorkletThread* workerOrWorkletThread() final { return m_thread.ptr(); }

I would just call this &quot;thread&quot;. But if you prefer to call it &quot;workerOrWorkletThread&quot;, let&apos;s rename the data member to match: m_workerOrWorkletThread.

&gt; Source/WebCore/Modules/webaudio/AudioWorkletThread.h:66
&gt; +    Ref&lt;AudioWorkletMessagingProxy&gt; m_messagingProxy;

It seems like AudioWorkletMessagingProxy and AudioWorkletThread ref each other. Is this a cycle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694898</commentid>
    <comment_count>11</comment_count>
      <attachid>410392</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 15:31:26 -0700</bug_when>
    <thetext>Comment on attachment 410392
Patch

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

&gt; Source/WebCore/workers/WorkerGlobalScope.h:94
&gt; +    WorkerThread* workerOrWorkletThread() final { return &amp;m_thread; }

The reason I did not call this one thread() is because workerOrWorkletThread() can return null...

&gt; Source/WebCore/workers/WorkerGlobalScope.h:95
&gt;      WorkerThread&amp; thread() const { return m_thread; }

... and WorkerGlobalScope already has a thread() function which guarantees it returns non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694899</commentid>
    <comment_count>12</comment_count>
      <attachid>410392</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 15:32:19 -0700</bug_when>
    <thetext>Comment on attachment 410392
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioWorkletThread.h:66
&gt;&gt; +    Ref&lt;AudioWorkletMessagingProxy&gt; m_messagingProxy;
&gt; 
&gt; It seems like AudioWorkletMessagingProxy and AudioWorkletThread ref each other. Is this a cycle?

Looks like it, good catch. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694922</commentid>
    <comment_count>13</comment_count>
      <attachid>410392</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-05 16:02:01 -0700</bug_when>
    <thetext>Comment on attachment 410392
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        The WorkletGlobalScope maintains a queue a fetch requests (basically a URL and a completion handler) and uses

Nit.
s/a queue a fetch/a queue of fetch/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695182</commentid>
    <comment_count>14</comment_count>
      <attachid>410647</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-06 09:36:41 -0700</bug_when>
    <thetext>Created attachment 410647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695183</commentid>
    <comment_count>15</comment_count>
      <attachid>410648</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-06 09:37:25 -0700</bug_when>
    <thetext>Created attachment 410648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695199</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 10:18:34 -0700</bug_when>
    <thetext>Committed r268057: &lt;https://trac.webkit.org/changeset/268057&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695201</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 10:19:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/70005642&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410357</attachid>
            <date>2020-10-02 13:07:53 -0700</date>
            <delta_ts>2020-10-02 14:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201002130752.patch</filename>
            <type>text/plain</type>
            <size>75486</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwOTE5ZWI0NWY3OWFh
NmUzMDJjNmJiNDdlMzc5ZmQ2OTYxZGQxYy4uYTUyNjdkYjVhOGEwMWFmNWMzZDIyZDEyNjVlZDUz
ZTU2ZDhkYWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0xMC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIHRoZSBtb2R1bGUgc2NyaXB0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV29ya2xldC5hZGRN
b2R1bGUoKSB0byBhY3R1YWxseSBmZXRjaCB0aGUgbW9kdWxlIHNjcmlwdCBhcyBwZXI6CisgICAg
ICAgIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dvcmtsZXRzLTEvI2RvbS13b3JrbGV0LWFkZG1v
ZHVsZQorCisgICAgICAgIFRoZSBXb3JrbGV0R2xvYmFsU2NvcGUgbWFpbnRhaW5zIGEgcXVldWUg
YSBmZXRjaCByZXF1ZXN0cyAoYmFzaWNhbGx5IGEgVVJMIGFuZCBhIGNvbXBsZXRpb24gaGFuZGxl
cikgYW5kIHVzZXMKKyAgICAgICAgdGhlIGV4aXN0aW5nIFdvcmtlclNjcmlwdExvYWRlciB0byBw
cm9jZXNzIHRoZSByZXF1ZXN0cyBzZXJpYWxseS4gQmFzZWQgb24gdGhlIHJlc3VsdCBvbiB0aGUg
bG9hZCwgd2UgY2FsbCB0aGUKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXIgd2hpY2ggd2lsbCBj
YXVzZSB0aGUgV29ya2xldC5hZGRNb2R1bGUoKSBwcm9taXNlIHRvIGdldCByZXNvbHZlZCBvciBy
ZWplY3RlZC4KKworICAgICAgICBXZSBjdXJyZW50bHkgZG9uJ3QgcnVuIHRoZSBtb2R1bGUgc2Ny
aXB0IHlldCBvbmNlIGl0IGlzIGZpbmlzaGVkIGRvd25sb2FkaW5nLiBUaGlzIHdpbGwgYmUgZG9u
ZSBpbiBhIGZvbGxvdy11cAorICAgICAgICBwYXRjaCB0byByZWR1Y2UgcGF0Y2ggc2l6ZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlIHlldC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoK
KyAgICAgICAgUHJvdmlkZSB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBvdmVycmlkZSBmb3IgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKSwgd2hpY2ggaXMgYSByZXBsYWNlbWVudAorICAgICAg
ICBmb3IgdW5kZXJseWluZ1RocmVhZCgpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHku
aDoKKyAgICAgICAgVXBkYXRlIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IHRvIHN1YmNsYXNz
IFdvcmtlckxvYWRlclByb3h5IHNvIHRoYXQgQXVkaW9Xb3JrbGV0IGNhbiByZXVzZQorICAgICAg
ICBXb3JrZXJTY3JpcHRMb2FkZXIuIFdvcmtlclNjcmlwdExvYWRlciByZWxpZXMgb24gV29ya2Vy
TG9hZGVyUHJveHkgdG8gZG8gdGhyZWFkIGhvcHBpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0VGhyZWFkOjpjcmVhdGUpOgorICAgICAgICBTdWJjbGFzcyB0aGUgbmV3IFdvcmtlck9yV29y
a2xldFRocmVhZCBpbnRlcmZhY2UuIFdvcmtlck9yV29ya2xldFRocmVhZCBpcyBhIG5ldyBpbnRl
cmZhY2UgdGhhdAorICAgICAgICB3YXMgYWRkaW5nIHNvIHRoYXQgV29ya2VyU2NyaXB0TG9hZGVy
IGNhbiBiZSByZXVzZWQgYnkgQXVkaW9Xb3JrbGV0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpk
aWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZFVwZ3JhZGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAg
ICBTaW1wbGUgcmVuYW1pbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpub3RpZnlJc0RvbmUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hUaW1pbmcpOgorICAgICAgICAq
IGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICBVcGRhdGUgV29ya2VyVGhyZWFk
YWJsZUxvYWRlciBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgQXVkaW9Xb3JrbGV0cy4KKwor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyR2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICBNaW5vciBjaGFuZ2VzIHRvIGtlZXAgYnVpbGRp
bmcgYWZ0ZXIgdXBkYXRlcyB0byBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAg
ICAgIFNpbXBsZSByZW5hbWVzLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU6OmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICBVcGRhdGUgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUgdG8gYWRkIGEgZmV3IHRoaW5ncyBXb3JrZXJTY3JpcHRMb2FkZXIgbmVl
ZGVkIHRvIHdvcmsgd2l0aAorICAgICAgICBib3RoIFdvcmtlcnMgYW5kIFdvcmtsZXRzLgorCisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaDogQWRkZWQuCisgICAgICAg
IEFkZGVkIG5ldyBwYXJlbnQgaW50ZXJmYWNlIGZvciBXb3JrZXJUaHJlYWQgYW5kIEF1ZGlvV29y
a2xldFRocmVhZCBzbyB0aGF0IFdvcmtlclNjcmlwdExvYWRlcgorICAgICAgICBjYW4gd29yayBm
b3IgYm90aCBXb3JrZXJzIGFuZCBXb3JrbGV0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKToKKyAg
ICAgICAgTWlub3IgY2hhbmdlcyB0byBrZWVwIGJ1aWxkaW5nIGFmdGVyIGNoYW5nZXMgdG8gV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICBTdWJjbGFzcyB0aGUgbmV3IFdvcmtlck9yV29ya2xldFRocmVhZCBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
OgorICAgICAgICBTaW1wbGUgcmVuYW1lcy4KKworICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjb3JyZWN0bHkgaW5pdGlh
bGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0aGUgV29ya2xldEdsb2JhbFNjb3BlLgorICAg
ICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIHVzaW5nIGEgdW5pcXVlIG9yaWdpbiBzbyBhbGwgc2Ny
aXB0IGxvYWRzIHdvdWxkIGhhdmUgZmFpbGVkCisgICAgICAgIHdpdGggYSBjcm9zcy1vcmlnaW4g
ZXJyb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJ
bnZva2VTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcm9j
ZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OmRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IpOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEds
b2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVEb2N1bWVudCBjb25zdCk6CisgICAgICAgIEFkZCBp
bXBsZW1lbnRhdGlvbiBmb3IgbW9kdWxlIHNjcmlwdCBmZXRjaGluZyB1c2luZyBXb3JrZXJTY3Jp
cHRMb2FkZXIuIFRoaXMgZ2V0cyBjYWxsZWQKKyAgICAgICAgd2hlbiBXb3JrbGV0LmFkZE1vZHVs
ZSgpIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisKIDIwMjAtMTAtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3R1YnMgZm9yIEF1ZGlvV29y
a2xldFByb2Nlc3NvciBhbmQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKaW5kZXggODE4ZTI0ZDFlMGI2Mzk3OWU5YzI2ZjEwYmRmOTdhZmNiMzQ1ZTBiMi4uYjQ3
YzU5NzMyOTE0OTgzNGNmZjk4YTllODg1OTQ4MWVkZWZiNGVmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5oIgogCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKLSNp
bmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwxMSArNTMsNiBAQCB2b2lkIEF1
ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBS
ZWY8QXVkaW9Xb3JrbGV0UAogICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKIH0KIAotVGhyZWFkKiBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdGhyZWFkLT50aHJlYWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAzYTQx
MDYwYmM2MmQzY2IxNDJiZjIzNmZhZjc3NWI2MDc4NjY4MGM5Li42MWRiNjM0NDBhZTc3ODBjMGNk
OGZiOTI5ZDY3ZjRlM2RmMmRkODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiQXVk
aW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBj
dXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBmbG9hdCBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gNDQxMDA7IH0KIAotICAgIFRocmVhZCogdW5kZXJseWluZ1RocmVhZCgp
IGNvbnN0IGZpbmFsOworICAgIEF1ZGlvV29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhy
ZWFkKCkgZmluYWwgeyByZXR1cm4gbV90aHJlYWQucHRyKCk7IH0KIAogcHJpdmF0ZToKICAgICBB
dWRpb1dvcmtsZXRHbG9iYWxTY29wZShBdWRpb1dvcmtsZXRUaHJlYWQmLCBjb25zdCBXb3JrbGV0
UGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBkNDM2YzFjODYw
MWRkZjg3Njc2NTk1ZmFlMTI0MzQwNGMxNmI1YWJhLi44MTYyZTQxYWFlZTc3YzE2ZTFkYzBhNjNh
ZGJlMzcxZjAxZDY3YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvV29ya2xldC5oIgogI2luY2x1ZGUgIkF1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCisjaW5jbHVk
ZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNTMsNyArNTQsOCBAQCBz
dGF0aWMgV29ya2xldFBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyhBdWRpb1dv
cmtsZXQmIHdvcmtsZXQpCiB9CiAKIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eShBdWRpb1dvcmtsZXQmIHdvcmtsZXQpCi0gICAgOiBtX3dvcmts
ZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUoZ2VuZXJhdGVXb3JrbGV0UGFyYW1l
dGVycyh3b3JrbGV0KSkpCisgICAgOiBtX2RvY3VtZW50KCp3b3JrbGV0LmRvY3VtZW50KCkpCisg
ICAgLCBtX3dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUoKnRoaXMsIGdl
bmVyYXRlV29ya2xldFBhcmFtZXRlcnMod29ya2xldCkpKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKQEAgLTY4LDYgKzcwLDIyIEBAIGJvb2wgQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Zv
aWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCit7CisgICAgbV9kb2N1bWVudC0+cG9zdFRhc2so
V1RGTW92ZSh0YXNrKSk7Cit9CisKK2Jvb2wgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK3sKKyAgICByZXR1cm4g
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoV1RGTW92ZSh0YXNrKSwgbW9kZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggNzVmZjQxMGY1MjgyNjBmZWMwMWIzZGMx
OTdiY2M5MDJlMTZjZjNkMi4uOWRlODljNjQyMmQzMDQ5MWI2ZWYxYTkyM2Q2MmYwYWZjMzFmNDg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaApAQCAtMjksMTQgKzI5LDE2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJv
eHkuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvV29ya2xldDsKIGNsYXNzIEF1ZGlvV29ya2xldFRocmVh
ZDsKK2NsYXNzIERvY3VtZW50OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6
IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSB7CitjbGFzcyBBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSwgcHVibGljIFdvcmtl
ckxvYWRlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogICAgIHsKQEAgLTUxLDgg
KzUzLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0Jik7CiAKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eS4K
KyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpIGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOworICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNv
bnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKICAgICBib29sIGlzQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICBSZWY8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gbV93b3JrbGV0VGhy
ZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IGMyNGU2NjQ2NGU1NmQzNGNlYzIwN2MyYmJkYTA0
ZjIxZGE0YjJlZjIuLjBlZTVkNTA5YmQ2YmNjNGFjNWNhNzJjNjIzZWMwMTIzZjA5ODYwNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFRocmVhZC5jcHAKQEAgLTQzLDExICs0MywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKGNvbnN0IFdvcmtsZXRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMuaXNvbGF0
ZWRDb3B5KCkpCitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9tZXNzYWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkK
KyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzLmlzb2xhdGVkQ29weSgpKQogewogfQogCitB
dWRpb1dvcmtsZXRUaHJlYWQ6On5BdWRpb1dvcmtsZXRUaHJlYWQoKSA9IGRlZmF1bHQ7CisKIHZv
aWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydCgpCiB7CiAgICAgYXV0byBsb2NrID0gaG9sZExv
Y2sobV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29wZUxvY2spOwpAQCAtMTI5LDYg
KzEzMiwxMSBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6cnVuRXZlbnRMb29wKCkKICAgICBt
X3J1bkxvb3AucnVuKG1fd29ya2xldEdsb2JhbFNjb3BlLmdldCgpKTsKIH0KIAorV29ya2VyTG9h
ZGVyUHJveHkmIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2VyTG9hZGVyUHJveHkoKQoreworICAg
IHJldHVybiBtX21lc3NhZ2luZ1Byb3h5LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKaW5kZXggNzIzZjZhODUy
MzZjMTg3ODc2NDcyNmM2YjYzYmRiMDA0YTQzMTk0Zi4uZTgzOWUxYWY4M2M1YWU1OGYzNGI0N2I4
ZjIzZmM0OTI4MjQxYWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5LDI1ICs0MCwzMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKK2Ns
YXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OwogCi1jbGFzcyBBdWRpb1dvcmtsZXRUaHJl
YWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0VGhyZWFkPiB7Citj
bGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVk
aW9Xb3JrbGV0VGhyZWFkPiwgcHVibGljIFdvcmtlck9yV29ya2xldFRocmVhZCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNyZWF0ZShjb25zdCBXb3JrbGV0
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVh
ZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQcm94eSwgY29u
c3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQocGFyYW1ldGVycykpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQobWVzc2FnaW5nUHJveHksIHBh
cmFtZXRlcnMpKTsKICAgICB9CisgICAgfkF1ZGlvV29ya2xldFRocmVhZCgpOwogCiAgICAgdm9p
ZCBzdGFydCgpOwogCi0gICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVu
TG9vcDsgfQotICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0
KCk7IH0KKyAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCisgICAgV29ya2VyUnVuTG9vcCYg
cnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQorICAgIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsOworICAgIFRocmVhZCogdGhyZWFkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBBdWRpb1dvcmtsZXRUaHJlYWQoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKKyAgICBB
dWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmLCBjb25zdCBXb3Jr
bGV0UGFyYW1ldGVycyYpOwogCiAgICAgdm9pZCBydW5FdmVudExvb3AoKTsKICAgICB2b2lkIHdv
cmtsZXRUaHJlYWQoKTsKIAorICAgIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4gbV9t
ZXNzYWdpbmdQcm94eTsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3RocmVhZDsKICAgICBXb3JrZXJS
dW5Mb29wIG1fcnVuTG9vcDsKICAgICBXb3JrbGV0UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCAyZGM4ZTE0MjA1
OGE2ZTJiYjcxZjI1ZGY0OWZjMmFkYzM0NGFkMDExLi5hYzVmMGQzY2JjZDQwMzhmMjhkM2FiMmM1
MGU1OTgzNzRkYjJjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVl
c3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNl
dFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogICAgICAg
ICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBz
ZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0
YSwgMCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0
YWJsZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0
KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTE5OCw3ICsx
OTgsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5k
KEJsb2ImIGJpbmFyeURhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29j
a2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChz
ZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yMTAsOCArMjEw
LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVy
ZWRBbW91bnQoKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBidWZmZXJlZEFtb3Vu
dCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRX
cmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNX
b3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEJ1
ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAg
LTI2Myw4ICsyNjMsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRDb25uZWN0KCkKIAogICAgIFN0cmluZyBzdWJwcm90b2NvbCA9IG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPnN1YnByb3RvY29sKCk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93
b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xhdGVkQ29w
eSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2wgPSBzdWJwcm90b2Nv
bC5pc29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRl
eHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXIt
PnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkQ29ubmVjdCgpOwpAQCAtMjc1LDggKzI3NSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAgICB9
LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWlu
dDhfdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRh
ID0gV1RGTW92ZShiaW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5h
cnlEYXRhKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yOTUsOCArMjk1LDggQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQodW5zaWduZWQgYnUKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3Jr
ZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91
bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQu
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMzE2
LDE4ICszMTYsMTggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWQKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwgPSBudWxscHRyOwogCi0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFt
b3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5p
c29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwg
cmVhc29uKTsKLSAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENv
cHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwg
Y29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3Jh
cHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uLCBjb2RlLCByZWFzb24pOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUVycm9yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAgfSwgbV90YXNr
TW9kZSk7CiB9CkBAIC0zMzYsOCArMzM2LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBncmFkZVVSTCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0
R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFVwZ3JhZGVV
UkwoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTM2MSwxMCArMzYxLDEwIEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRp
YWxpemUoU2NyaXB0RXhlY3V0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQoY29udGV4dC5pc0RvY3VtZW50KCkpOwogCi0gICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7CisgICAgYm9vbCBzZW50ID0gbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh7CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAogICAgICAg
ICBbY2xpZW50V3JhcHBlciwgJmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihj
bGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBX
VEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5l
bENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUo
KSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRv
IGRlbGV0ZSB0aGUgcGVlci4KICAgICAgICAgICAgICAgICBsb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFtwZWVyID0gV1RGTW92ZShwZWVyKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA4MGNjODY1NWE4OTMzYjFmNmVlMjJjNDkzOGQ1OWYyZWIwZTFiMzkuLjQ2
MjM0MzM3ZDJhYzhkZDRiNDJmNTA2OWNkOTM1NGI4YjhhMjUxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1NTAsNiArMjU1
MCw3IEBACiAJCTgzRTg2NjgwMUZCQTU2NUIwMDg4NTVDNSAvKiBTZXJ2aWNlV29ya2VyRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFODY2N0Qx
RkJBNTYzRjAwODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNFRTU5OEYxRjUwOTU4RTAwM0U4QjMw
IC8qIEpTRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNFRTU5OEIxRjUwOTU4QjAwM0U4QjMwIC8qIEpTRXJyb3JDYWxsYmFjay5o
ICovOyB9OwogCQk4M0YyOEMwMDI0REIxREUxMDA1QkE2RjYgLyogQ29udm9sdmVyT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGMjhCRkQy
NERCMUREMzAwNUJBNkY2IC8qIENvbnZvbHZlck9wdGlvbnMuaCAqLzsgfTsKKwkJODNGNkFFQkYy
NTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFODI4QjIyNTI3OTRDRDAwMjdFMEY3
IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzRkIzMzcxMUY1MDhBNTQwMDk4NkU1NCAvKiBGaWxlU3lz
dGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzRkIzMzZEMUY1MDhBNEUwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5
RW50cnkuaCAqLzsgfTsKIAkJODNGQjMzNzMxRjUwOEE1ODAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1F
bnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNG
QjMzNkYxRjUwOEE0RTAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1FbnRyeS5oICovOyB9OwogCQk4M0ZC
MzM3NTFGNTA4QTVCMDA5ODZFNTQgLyogRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQjMzNkMxRjUwOEE0RTAwOTg2
RTU0IC8qIEZpbGVTeXN0ZW1GaWxlRW50cnkuaCAqLzsgfTsKQEAgLTEwNzg3LDYgKzEwNzg4LDcg
QEAKIAkJODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVSUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0UzNTlBMDFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MVGltZUVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFMzU5QTExQkIxMDMxRDAwMkNF
Qjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTFRpbWVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODNFODI4QjIyNTI3OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJPcldvcmtsZXRUaHJlYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFODY2N0QxRkJBNTYzRjAwODg1NUM1
IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTg2
NjdGMUZCQTU2NDAwMDg4NTVDNSAvKiBTZXJ2aWNlV29ya2VyRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTk1OUUxMUI4QkMyMkIwMDREOTM4NSAvKiBOYXRpdmVO
b2RlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZU5vZGVG
aWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzUwLDYgKzE4NzUyLDcg
QEAKIAkJCQkyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCAq
LywKIAkJCQk4M0Q2QUFFNDI1MjRFRTEzMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaCAqLywKIAkJCQk4MzlBMDk1QjI1MjRGMzc2MDBFRUYzMjggLyogV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oICovLAorCQkJCTgzRTgyOEIyMjUyNzk0Q0QwMDI3RTBGNyAv
KiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCAqLywKIAkJCQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMx
NEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLywKIAkJCQkyRTQzNDY0MDBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyUnVuTG9vcC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDEwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLywKQEAgLTM0NjQ4LDYgKzM0NjUxLDcgQEAKIAkJCQky
RTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzRDZBQUU2MjUyNEVFMUMwMDQyOEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTA5NUQyNTI0RjM3RjAwRUVGMzI4IC8q
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgz
RjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdv
cmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NGMUZBQTQ0REUwMDM3RDFF
NiAvKiBXb3JrZXJSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGM3ZTBmMzFiZTcyMDZmZWY4ZGFhZDE4
NDYxZTRmNWEyNGJiZjdkNjIuLjI3MTdjODYxYzc0YjBmMmFlYmNkZTQwODcwMGUyYTlhMDM3Mzc1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTAyLDEwICsxMDMsMTYgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVy
PiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgU3RyaW5nJiYgcmVm
ZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAg
ICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUo
KSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZlcnJlcikpOworICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgfHwgKGlzPFdvcmtsZXRHbG9iYWxTY29w
ZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmPihjb250
ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBudWxscHRyOworICAgIGlmIChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQor
ICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCku
cmVzcG9uc2libGVEb2N1bWVudCgpOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQgPSAmZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCi0gICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgY2xpZW50LCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CisgICAgcmV0dXJuIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpkb2N1bWVudCwgY2xpZW50LCBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CiB9CiAKIHZvaWQgVGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDZmODI4NzMzOWI0ZmM1ZDAwYjdkYmE1MDM4MzA1NDU0NmViYThiMTUuLmUxMTM5NmJmZDgz
MzZlM2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTQzLDE5ICs0MywyMCBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgotI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVh
ZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3Jr
ZXJHbG9iYWxTY29wZSkKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVM
b2FkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01v
ZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorICAgIDogbV9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKICAgICAsIG1fd29y
a2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKGNs
aWVudCwgb3B0aW9ucy5pbml0aWF0b3IpKQotICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFk
QnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9w
dGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlw
cGVkRm9yVXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlKSkKKyAg
ICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIu
Z2V0KCksIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgp
LT53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUudXJsKCku
c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpKQogewogfQogCkBAIC02NCwxNyArNjUsMTcgQEAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIoKQogICAgIG1fYnJpZGdlLmRlc3Ryb3koKTsK
IH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlckdsb2JhbFNj
b3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3Ao
KTsKIAogICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBtb2RlIGp1c3QgZm9yIHRoaXMgc3luY2hyb25v
dXMgcmVzb3VyY2UgbG9hZC4KICAgICBTdHJpbmcgbW9kZSA9IG1ha2VTdHJpbmcoImxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHlNb2RlIiwgcnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKTsKIAotICAg
IGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2Jh
bFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygp
KTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBN
ZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAm
JiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKLSAgICAgICAgcmVzdWx0ID0gcnVu
TG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0
ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBtb2RlKTsK
IAogICAgIGlmICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRlcm1p
bmF0ZWQpCiAgICAgICAgIGxvYWRlci0+Y2FuY2VsKCk7CkBAIC0xMDcsNyArMTA4LDcgQEAgTG9h
ZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tPcHRpb25zKGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBl
ciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBj
b25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKKyAgICBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIoJndvcmtlckNs
aWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclByb3h5KQogICAgICwgbV90
YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKQEAgLTEzMSwxMiArMTMyLDEzIEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9y
Q29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcjsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBn
bG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpID8gU2VydmljZVdvcmtlcnNN
b2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7CisgICAgb3B0aW9uc0NvcHktPm9w
dGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihn
bG9iYWxTY29wZSkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01v
ZGU6OkFsbDsKICAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IGdsb2JhbFNjb3Bl
LmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAgICAgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyLT5y
ZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAjZW5kaWYKIAotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGdsb2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVu
dGlmaWVyLCByZXF1ZXN0KTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNj
b3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3Qo
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSwgbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJlcXVl
c3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNvbGF0
ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVl
c3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29w
eSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBv
bGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKQEAg
LTIwMCw3ICsyMDIsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmNvbXB1dGVJc0RvbmUoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Om5vdGlmeUlzRG9uZShib29sIGlzRG9uZSkKIHsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCBpc0RvbmVd
KGF1dG8mKSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigq
bV93b3JrZXJDbGllbnRXcmFwcGVyKSwgaXNEb25lXShhdXRvJikgewogICAgICAgICBwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5ub3RpZnlJc0RvbmUoaXNEb25lKTsKICAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KQEAgLTIxMiwxOSArMjE0LDIwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJDbGllbnRXcmFwcGVyKCkKIAogdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciksIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVz
U2VudCwgdG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50
LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRl
bnRpZmllciwgaWRlbnRpZmllciwgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuY3Jvc3NUaHJlYWRE
YXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50
aWZpZXIsIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3Nz
VGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAgICAgICBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJl
c3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0sIG1fdGFza01vZGUp
OwogfQogCkBAIC0yMzIsNDMgKzIzNSw0NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiB7CiAg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihkYXRhTGVuZ3RoKTsKICAgICBtZW1jcHkoYnVmZmVyLmRh
dGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBt
X3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAg
ICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0sIG1fdGFz
a01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIG1f
bG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtl
UmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1f
d29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xv
YWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBt
X3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtM
b2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlm
aWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5n
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0Zp
bmlzaGVkID0gdHJ1ZTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dv
cmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3Jr
bGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKGNv
bnRleHQsIGVycm9yLCBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5pbml0aWF0b3IoKSk7
CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwot
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVy
cm9yKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJy
b3IpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWlu
ZyYgcmVzb3VyY2VUaW1pbmcpCiB7CiAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MgPSByZXNvdXJj
ZVRpbWluZy5uZXR3b3JrTG9hZE1ldHJpY3MoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIg
PSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCByZXNvdXJjZVRpbWluZyA9IHJlc291
cmNlVGltaW5nLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKSwgcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZVRpbWluZy5pc29sYXRl
ZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAg
ICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZVRpbWluZy5pbml0
aWF0b3IoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8vIE5vIG5lZWQgdG8gbm90aWZ5IGNsaWVu
dHMsIGp1c3QgYWRkIHRoZSBwZXJmb3JtYW5jZSB0aW1pbmcgZW50cnkuCi0gICAgICAgIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wZXJmb3JtYW5jZSgpLmFkZFJlc291cmNl
VGltaW5nKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS5wZXJmb3JtYW5jZSgpLmFkZFJlc291cmNlVGltaW5nKFdURk1vdmUocmVz
b3VyY2VUaW1pbmcpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYmFjMjUyYTU3YTRlMDFj
OWI2MDMzYjliYmRhMDYzZWM1MzA1OGZjMC4uMjQ0NGZkYTNhYWEzODI0NDY3YWQ0NzA0NjIyMGZl
MjE1MGIwMzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwotICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworICAgIGNsYXNz
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIGNsYXNzIFdvcmtlckxvYWRlclByb3h5
OwogCiAgICAgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdvcmtlclRocmVhZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciB7CiAgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSYsIFJlc291
cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmKTsKLSAgICAgICAgc3RhdGljIFJlZjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
PiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKQorICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYpOworICAgICAgICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclRocmVhZGFibGVMb2FkZXIod29ya2VyR2xvYmFsU2Nv
cGUsIGNsaWVudCwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVy
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlcikpOwogICAgICAgICB9CiAKICAgICAgICAgfldv
cmtlclRocmVhZGFibGVMb2FkZXIoKTsKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLwogICAgICAgICAvLyBjYXNlIDEuIHdvcmtlci50ZXJtaW5hdGUgaXMg
Y2FsbGVkLgogICAgICAgICAvLyAgICBJbiB0aGlzIGNhc2UsIG5vIG1vcmUgdGFza3MgYXJlIHBv
c3RlZCBmcm9tIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIKLSAgICAg
ICAgLy8gICAgY29udGV4dCdzIHRocmVhZCAtLSBXb3JrZXJHbG9iYWxTY29wZVByb3h5IGltcGxl
bWVudGF0aW9uIGVuZm9yY2VzIHRoaXMuCisgICAgICAgIC8vICAgIGNvbnRleHQncyB0aHJlYWQg
LS0gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSBpbXBsZW1lbnRhdGlvbiBlbmZvcmNl
cyB0aGlzLgogICAgICAgICAvLwogICAgICAgICAvLyBjYXNlIDIuIHhociBnZXRzIGFib3J0ZWQg
YW5kIHRoZSB3b3JrZXIgY29udGV4dCBjb250aW51ZXMgcnVubmluZy4KICAgICAgICAgLy8gICAg
VGhlIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyIGhhcyB0aGUgdW5kZXJseWluZyBjbGll
bnQgY2xlYXJlZCwgc28gbm8gbW9yZSBjYWxscwpAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1haW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBl
eGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWlu
VGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVy
UHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIs
IFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlJik7CiAgICAgICAgICAgICB2b2lkIGNhbmNlbCgpOwogICAgICAgICAgICAgdm9p
ZCBkZXN0cm95KCk7CiAgICAgICAgICAgICB2b2lkIGNvbXB1dGVJc0RvbmUoKTsKQEAgLTEyNiwx
MSArMTI2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIE5ldHdvcmtMb2Fk
TWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKICAgICAgICAgfTsKIAotICAgICAgICBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiwgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgICAg
ICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpOwogCiAgICAgICAgIHZvaWQgY29tcHV0ZUlzRG9uZSgpIGZpbmFsOwogCi0gICAgICAg
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxTY29wZTsKKyAgICAgICAgUmVm
PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPiBtX1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OwogICAgICAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IG1fd29ya2VyQ2xp
ZW50V3JhcHBlcjsKICAgICAgICAgTWFpblRocmVhZEJyaWRnZSYgbV9icmlkZ2U7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMWZl
OTM5ODdlZjk2MWZkZmJlMzhmNDdjYTY3MWFmNWZkYTk4ZDlkZi4uN2Q5NzgzZDkxMzBkNjZjMjc1
YWFkYjYyYzQ0MTY5Yzg2OGRkN2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJXb3JrZXJSZXBv
cnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CkBAIC00NDgsNyArNDQ3LDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3QKICAg
ICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENv
bnRhaW5lciwga2V5LCB3cmFwcGVkS2V5Q29udGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJN
ZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1f
dGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewogICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC53cmFw
Q3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKICAgICAgICAg
ZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKLSAgICAgICAgd29ya2VyTWVzc2FnaW5n
UHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgfSk7CkBAIC00NzEsNyArNDcwLDcgQEAgYm9vbCBXb3Jr
ZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3Jh
cHBlZEtleSwgVmVjdG8KICAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNr
VG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwgd3JhcHBlZEtleSwga2V5Q29udGFpbmVyLCBkb25l
Q29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93bmNhc3Q8V29ya2Vy
TWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJv
b2xlYW4oY29udGV4dC51bndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSwga2V5Q29udGFpbmVyLT5i
dWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRCb29sZWFuKHRydWUpOwotICAg
ICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHdvcmtl
ck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICB9KTsKQEAgLTU0NCw5
ICs1NDMsNCBAQCBSZWZlcnJlclBvbGljeSBXb3JrZXJHbG9iYWxTY29wZTo6cmVmZXJyZXJQb2xp
Y3koKSBjb25zdAogICAgIHJldHVybiBtX3JlZmVycmVyUG9saWN5OwogfQogCi1UaHJlYWQqIFdv
cmtlckdsb2JhbFNjb3BlOjp1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV90aHJlYWQudGhyZWFkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA5MGRmM2I2YWYzZDYzZWM2
MWFlYzlhMTIzYzA4NzdlNzllMzRiMjY3Li43Y2VlNGMxY2U1NmMzYzNmNWRhYTk4ZjBiYzE3ZjE2
ODEyOTA3MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgogCkBAIC01Myw3ICs1NCw2IEBAIGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKIGNsYXNz
IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsKLWNsYXNzIFdvcmtlclRocmVhZDsKIHN0cnVjdCBX
b3JrZXJQYXJhbWV0ZXJzOwogCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKQEAgLTkxLDEwICs5MSw5
IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVyOyB9CiAKKyAg
ICBXb3JrZXJUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGZpbmFsIHsgcmV0dXJuICZt
X3RocmVhZDsgfQogICAgIFdvcmtlclRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90
aHJlYWQ7IH0KIAotICAgIFRocmVhZCogdW5kZXJseWluZ1RocmVhZCgpIGNvbnN0IGZpbmFsOwot
CiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5Owog
CiAgICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBv
biBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgpAQCAtMTM4LDggKzEzNyw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUltYWdlQml0bWFwKEltYWdlQml0bWFwOjpTb3VyY2UmJiwg
SW1hZ2VCaXRtYXBPcHRpb25zJiYsIEltYWdlQml0bWFwOjpQcm9taXNlJiYpOwogICAgIHZvaWQg
Y3JlYXRlSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYmLCBpbnQgc3gsIGludCBzeSwg
aW50IHN3LCBpbnQgc2gsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBJbWFnZUJpdG1hcDo6UHJvbWlz
ZSYmKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpIHsgcmV0
dXJuIG1fdW5pcXVlSWRlbnRpZmllcisrOyB9Ci0KICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVl
UG9vbCgpOwogCiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5h
bDsKQEAgLTIyMSw3ICsyMTgsNiBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+IG1fbWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkZW50aWZpZXIgeyAx
IH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJlZlB0cjxXb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24+IG1fc3dDbGllbnRDb25uZWN0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKaW5kZXggNjE1MzFlZDQwODY0YjM4YWNiOTlj
YzA2NzU3YmZjMTExMjNkOGQ4Ny4uZWU2NDY5ZDVkNjE0ZTNhZDgyN2EyMjUzM2NkYzBmNGE0OTIy
YTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyTWVzc2FnaW5n
UHJveHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQ3JlYXRlcyBhIGNhY2hl
IHN0b3JhZ2UgY29ubmVjdGlvbiB0byBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4gTWV0aG9k
IG11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2aXJ0dWFsIFJlZjxDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAwOwor
ICAgIHZpcnR1YWwgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKSA9IDA7CiAKICAgICAvLyBQb3N0cyBhIHRhc2sgdG8gdGhlIHRocmVh
ZCB3aGljaCBydW5zIHRoZSBsb2FkaW5nIGNvZGUgKG5vcm1hbGx5LCB0aGUgbWFpbiB0aHJlYWQp
LgogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJikgPSAwOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gUG9zdHMg
Y2FsbGJhY2tzIGZyb20gbG9hZGluZyBjb2RlIHRvIHRoZSBXb3JrZXJHbG9iYWxTY29wZS4gVGhl
ICdtb2RlJyBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUKICAgICAvLyBzcGVjaWZpYyBzeW5jaHJv
bm91cyBsb2FkaW5nIHJlcXVlc3RzIHNvIHRoZXkgY2FuIGJlICduZXN0ZWQnLCBwZXIgc3BlYy4K
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhc2sgd2FzIHBvc3RlZCBzdWNjZXNzZnVsbHku
Ci0gICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBjNDIxMmIyNjU4Mjk3YjNlNDEzYTEy
ZDU1NWE5ODJmYjg3NjUwNWNiLi5hNjFiNDE0ODYzM2JkZjIwZDUyYmU1NzY0ZGE5YjU1NGUxNjEw
ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcApAQCAtMTUzLDE0ICsxNTMsMTQgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCi1S
ZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2VyTWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFdv
cmtlck1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgIHJldHVybiBkb2N1bWVu
dC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpOwogfQogCi1ib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBj
b25zdCBTdHJpbmcmIG1vZGUpCitib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zv
ck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1fYXNrZWRUb1Rl
cm1pbmF0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGU3ODEyMjdmZWRiYWI3ZWUyNWRlY2JjYWIx
ZjdiOTJjYmE5MTFlMTcuLjNiYjRkOWQ4MTVhMjA5MTRhZDlmMjViMzRhODdjYTkxZTFjODViYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2Vy
TG9hZGVyUHJveHkuCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBpbiB0aGUgbWFpbiB0aHJl
YWQgdG8gcG9zdCB0YXNrIGJhY2sgdG8gdGhlIHdvcmtlciB0aHJlYWQuCi0gICAgYm9vbCBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIC8vIEltcGxl
bWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgpAQCAtNzgsNyArNzgsNyBAQCBw
cml2YXRlOgogICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNhbGxiYWNrcyBiYWNrIHRvIFdv
cmtlckdsb2JhbFNjb3BlLgogICAgIGJvb2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKLSAgICBSZWY8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOworICAgIFJlZlB0
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkg
ZmluYWw7CiAKICAgICB2b2lkIHdvcmtlclRocmVhZENyZWF0ZWQoRGVkaWNhdGVkV29ya2VyVGhy
ZWFkJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaAppbmRleCA2NTQ4ZTA4NDhiZTM1MjJiNmFkOWMzMjg1MzM5NzQ2YzdjMzk3
NDI4Li44MjA5ZmM1N2E1NWZlNjllNjc5NmMwMDJmMzQwNmIzMDQ2ZDlmMWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBA
IC0yNiwyMSArMjYsMjQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCIKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUaHJlYWQ7Ci19CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjsKK2NsYXNzIFdv
cmtlck9yV29ya2xldFRocmVhZDsKKwogY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIFdU
Rjo6VGhyZWFkKiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0Nsb3NpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHQoKSA9IDA7CisgICAgdmlydHVhbCBXb3JrZXJPcldvcmtsZXRU
aHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpID0gMDsKKworICAgIHVuc2lnbmVkIGxvbmcg
Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpIHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcisrOyB9
CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkZW50aWZpZXIgeyAxIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjBkZmM0ZWNkZTM0YWNiZDQ3
MTVmNWU4Y2YxNTBiMDg2ODRhOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgVGhyZWFkOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdvcmtlckxvYWRlclByb3h5OworY2xhc3MgV29ya2VyUnVuTG9vcDsKKworY2xhc3Mg
V29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3JrZXJPcldv
cmtsZXRUaHJlYWQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIFdURjo6VGhyZWFkKiB0aHJl
YWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgPSAw
OworICAgIHZpcnR1YWwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggYmI2MWZjNWYyYTk3ZGI4NGIxMTNiZTIyM2M3YTdhZGM3MTli
NDk0NC4uNmI3MDk1ZDI1N2E1ZjIyZGZkOTRlZGIyMzYyOGJkODE5ZGNkZWFjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIGNvbnQKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9v
cDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBN
b2RlUHJlZGljYXRlJiBwcmVkaWNhdGUsIFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dW5kZXJseWluZ1RocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPndvcmtlck9yV29ya2xldFRo
cmVhZCgpLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgSlNDOjpKU1J1
bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayB0aW1lckFkZGVkVGFzayA9IFdU
Rjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlv
blR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5n
IGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3VuZCBydW5Jbk1vZGUKQEAgLTIyNiw3ICsy
MjYsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udAogdm9pZCBXb3JrZXJSdW5Mb29wOjpydW5D
bGVhbnVwVGFza3MoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT51bmRlcmx5aW5nVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3Jr
bGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJU
KG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBkNzc2MzNjMDU0NmY0M2RlZGZkNWEwNGM2
ZTQ0M2E4OWY5OTBmMjNmLi42MjQ0YjNjYzAwODFjYjYwNWExN2Y2ZDQ5YWUyODQ2MmU3Njg0MTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAi
V29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogICAgIFdvcmtl
clBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwogCi1jbGFzcyBXb3JrZXJUaHJl
YWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkPiB7CitjbGFzcyBX
b3JrZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkPiwg
cHVibGljIFdvcmtlck9yV29ya2xldFRocmVhZCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29y
a2VyVGhyZWFkKCk7CiAKQEAgLTg3LDkgKzg4LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVu
ZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKLSAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9Ci0gICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIHsg
cmV0dXJuIG1fcnVuTG9vcDsgfQotICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7IH0KKyAgICBUaHJlYWQq
IHRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CisgICAgV29y
a2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQorICAgIFdv
cmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsIHsgcmV0dXJuIG1fd29y
a2VyTG9hZGVyUHJveHk7IH0KICAgICBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dl
clByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dlclByb3h5OyB9CiAgICAgV29y
a2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4g
bV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAppbmRleCBiNzdmMzc0NTJiYzA2NWVlYWQzZmZiZjY0MmQ0MWY4YTMxNTFjZGUyLi5l
MTUyM2RhOTI0ZDczMzlmNTA5NDZiNGYxMTIwMjAyZjYyZmRlNDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoKQogICAgIGFsbFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwogfQogCi1ib29sIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorYm9vbCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTgsMTIgKzE1OCwxMiBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWRCeVdlYkluc3BlY3Rvcihi
b29sIGRpcwogICAgIH0pOyAgIAogfQogCi1SZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK1Jl
ZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24pCiAgICAgICAgIG1fY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuY3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpOwotICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwor
ICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVy
KEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKQEAgLTE4Niw3
ICsxODYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWlu
YXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbaXNPbmxpbmVd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8mIGdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBn
bG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7CiAgICAgICAgIGdsb2JhbFNjb3BlLmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtnbG9iYWxT
Y29wZSA9IG1ha2VSZWYoZ2xvYmFsU2NvcGUpLCBpc09ubGluZV0gewpAQCAtMjA2LDcgKzIwNiw3
IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFydEZldGNoKFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvCiAKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNo
VGFza3MuY29udGFpbnMoa2V5KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBj
bGllbnQuY29weVJlZigpKTsKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNsaWVudCA9IFdURk1vdmUo
Y2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZl
cnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRl
ZENvcHkoKV0oYXV0byYpIG11dGFibGUgeworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNv
bGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMg
PSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShhdXRvJikgbXV0YWJsZSB7CiAgICAgICAgIHRocmVh
ZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKGNs
aWVudElkKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0
aW9ucykpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQpAQCAtMjIy
LDcgKzIyMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaChT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3RpCiAgICAgaWYgKG1fb25nb2luZ0Zl
dGNoVGFza3MuaXNFbXB0eSgpKQogICAgICAgICB0aHJlYWQoKS5zdG9wRmV0Y2hFdmVudE1vbml0
b3JpbmcoKTsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW2NsaWVu
dCA9IGNsaWVudC5yZWxlYXNlTm9uTnVsbCgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtjbGllbnQg
PSBjbGllbnQucmVsZWFzZU5vbk51bGwoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGNsaWVudC0+Y2FuY2VsKCk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uZWN0aW8KICAg
ICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gbWFrZVJlZigqY2xpZW50KV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbY2xpZW50ID0gbWFrZVJlZigqY2xpZW50KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CiAgICAgICAgIGNsaWVudC0+Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKICAg
ICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKaW5kZXggODU0NWU4NGNiNTg2ZTQ0YWI5Yzc5NDE1ZTAwZDZiNmUzNjA3
M2I4Zi4uMWQ0NzJlZjBlNzYyMDk4NTgzZjMzMzk2YmEzMjliYzAyNDcyNGQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTg1LDkgKzg1LDkgQEAgcHJpdmF0ZToKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNP
bkxpbmUpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKLSAgICBib29sIHBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBj
b25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOworICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNv
bnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7Ci0gICAgUmVmPENhY2hlU3RvcmFnZUNv
bm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICBSZWZQ
dHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
IGZpbmFsOwogCiAgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eQogICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMWRmM2IyOTc3MGY3ZjkxZWVmMWU2
NmIyNTA5NzBjMzFmMmI0M2ZlMC4uODAxNDM4YzI3YTJkMmVkZTRlNDhiNzdmNTE5MDU2MDljMTg3
MDJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xpY3kuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgorI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC01NCw3ICs1NSw3IEBAIFdvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2xldEdsb2JhbFNjb3BlKGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2JhbFNjb3Blc1NldCgpLmFkZCh0
aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0KTsKIAotICAgIHNl
dFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUobV90b3BP
cmlnaW4uY29weVJlZigpKSk7CisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlP
cmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkp
OwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsKIH0KIApAQCAtNzEsNyArNzIs
NyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2Uo
KSk7CiAKLSAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6
Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOworICAgIHNldFNlY3VyaXR5T3JpZ2luUG9s
aWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CiAK
QEAgLTE4MywxMSArMTg0LDYxIEBAIFJlZmVycmVyUG9saWN5IFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVmZXJyZXJQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBSZWZlcnJlclBvbGljeTo6Tm9SZWZl
cnJlcjsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmZldGNoQW5kSW52b2tlU2NyaXB0
KGNvbnN0IFVSTCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJbnZva2VTY3JpcHQoY29uc3QgVVJMJiBtb2R1bGVV
UkwsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRh
dGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIG1fc2NyaXB0
RmV0Y2hKb2JzLmFwcGVuZCh7IG1vZHVsZVVSTCwgY3JlZGVudGlhbHMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpIH0pOworICAgIHByb2Nlc3NOZXh0U2NyaXB0RmV0Y2hKb2JJZk5lZWRlZCgp
OworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRjaEpv
YklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9zY3JpcHRGZXRjaEpvYnMuaXNFbXB0eSgpIHx8IG1f
c2NyaXB0TG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBzY3JpcHRGZXRjaEpv
YiA9IG1fc2NyaXB0RmV0Y2hKb2JzLmZpcnN0KCk7CisKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCB7IHNjcmlwdEZldGNoSm9iLm1vZHVsZVVSTCB9OworCisgICAgRmV0Y2hPcHRpb25zIGZl
dGNoT3B0aW9uczsKKyAgICBmZXRjaE9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbjsKKyAgICBmZXRjaE9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hl
OjpEZWZhdWx0OworICAgIGZldGNoT3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVk
aXJlY3Q6OkZvbGxvdzsKKyAgICBmZXRjaE9wdGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7CisgICAgZmV0Y2hPcHRpb25zLmNyZWRlbnRpYWxzID0g
c2NyaXB0RmV0Y2hKb2IuY3JlZGVudGlhbHM7CisKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50ID0gc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlIDog
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VDaGlsZFNyY0RpcmVjdGl2
ZTsKKworICAgIG1fc2NyaXB0TG9hZGVyID0gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKTsK
KyAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCp0aGlzLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMpOworfQorCit2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQoreworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6bm90aWZ5
RmluaXNoZWQoKQoreworICAgIGF1dG8gY29tcGxldGVkSm9iID0gbV9zY3JpcHRGZXRjaEpvYnMu
dGFrZUZpcnN0KCk7CisKKyAgICBpZiAobV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7CisgICAg
ICAgIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoV1RGTW92ZShjb21wbGV0ZWRKb2IpLCBFeGNl
cHRpb24geyBOZXR3b3JrRXJyb3IsIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBmZXRjaCBtb2R1bGUs
IGVycm9yOiAiLCBtX3NjcmlwdExvYWRlci0+ZXJyb3IoKS5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBSdW4gdGhlIG1v
ZHVsZSBzY3JpcHQuCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvd2ViYXBwYXBpcy5odG1sI3J1bi1hLW1vZHVsZS1zY3JpcHQKKworICAgIGRpZENvbXBsZXRl
U2NyaXB0RmV0Y2hKb2IoV1RGTW92ZShjb21wbGV0ZWRKb2IpLCB7IH0pOworfQorCit2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6ZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihTY3JpcHRGZXRjaEpv
YiYmIGpvYiwgT3B0aW9uYWw8RXhjZXB0aW9uPiByZXN1bHQpCit7CisgICAgbV9zY3JpcHRMb2Fk
ZXIgPSBudWxscHRyOworCisgICAgam9iLmNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
KSk7CisKKyAgICBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaAppbmRleCA2NDZhZDA2YTE0YTE2MzM4ODk2YWZjODQxMDAzMTg3M2RiMzc0NmMy
Li4xYmQ4YjRhYTM5NWNjNjJiMTA1ODE3NDZhMmU1MzQyODg1MmJjNDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMzQsMTAgKzM0LDEyIEBA
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgpAQCAtNDcsMTMgKzQ5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgV29ya2VyRXZlbnRMb29wOworY2xhc3MgV29y
a2VyU2NyaXB0TG9hZGVyOwogCiBzdHJ1Y3QgV29ya2xldFBhcmFtZXRlcnM7CiAKIGVudW0gV29y
a2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgV29ya2xldEdsb2JhbFNj
b3BlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRp
ZmllclR5cGU+OwogCi1jbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIHsKK2NsYXNzIFdvcmtsZXRHbG9iYWxT
Y29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUs
IHB1YmxpYyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV29ya2xldEdsb2JhbFNjb3BlKTsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrbGV0
R2xvYmFsU2NvcGUoKTsKQEAgLTgwLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNv
dW50ZWQ6OmRlcmVmOwogCiAgICAgV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGZp
bmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CisgICAgV29ya2VyT3JXb3JrbGV0VGhyZWFk
KiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAK
ICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIApAQCAtODksNyArOTMsNiBAQCBwdWJsaWM6CiAgICAg
U29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQogCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuCi0gICAgVGhyZWFkKiB1bmRl
cmx5aW5nVGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGJv
b2wgaXNDbG9zaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Nsb3Npbmc7IH0KIAogICAg
IGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
MTAxLDE1ICsxMDQsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBmZXRjaEFuZEludm9rZVNjcmlw
dChjb25zdCBVUkwmLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKIAorICAgIERvY3VtZW50KiByZXNwb25z
aWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAgIGNvbnN0IERv
Y3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5n
ZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKGNvbnN0IFdvcmts
ZXRQYXJhbWV0ZXJzJik7CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiwgUmVmPEpT
Qzo6Vk0+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKGNv
bnN0IFdvcmtsZXRHbG9iYWxTY29wZSYpID0gZGVsZXRlOwogICAgIFdvcmtsZXRHbG9iYWxTY29w
ZShXb3JrbGV0R2xvYmFsU2NvcGUmJikgPSBkZWxldGU7CiAKLSAgICBEb2N1bWVudCogcmVzcG9u
c2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KLSAgICBjb25zdCBE
b2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KLQogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5KCkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEzMiw2ICsxMzUs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBm
aW5hbDsKIAorICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC4KKyAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CisKICAgICBF
dmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KIAog
I2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtMTQzLDYgKzE1MCwxNSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxl
V2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKKyAgICBzdHJ1Y3QgU2NyaXB0RmV0
Y2hKb2IgeworICAgICAgICBVUkwgbW9kdWxlVVJMOworICAgICAgICBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFscyBjcmVkZW50aWFsczsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFeGNlcHRpb24+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICB9OworCisgICAgdm9p
ZCBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKTsKKyAgICB2b2lkIGRpZENvbXBs
ZXRlU2NyaXB0RmV0Y2hKb2IoU2NyaXB0RmV0Y2hKb2ImJiwgT3B0aW9uYWw8RXhjZXB0aW9uPik7
CisKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKQEAgLTE1NSw2ICsxNzEsMTAg
QEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1
bnRpbWVGbGFnczsKICAgICBPcHRpb25hbDxTY3JpcHRTb3VyY2VDb2RlPiBtX2NvZGU7CisKKyAg
ICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKKyAgICBEZXF1ZTxT
Y3JpcHRGZXRjaEpvYj4gbV9zY3JpcHRGZXRjaEpvYnM7CisKICAgICBib29sIG1faXNDbG9zaW5n
IHsgZmFsc2UgfTsKIH07CiAK
</data>
<flag name="commit-queue"
          id="426289"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410360</attachid>
            <date>2020-10-02 13:42:17 -0700</date>
            <delta_ts>2020-10-02 13:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201002134216.patch</filename>
            <type>text/plain</type>
            <size>76034</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwOTE5ZWI0NWY3OWFh
NmUzMDJjNmJiNDdlMzc5ZmQ2OTYxZGQxYy4uYTUyNjdkYjVhOGEwMWFmNWMzZDIyZDEyNjVlZDUz
ZTU2ZDhkYWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0xMC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIHRoZSBtb2R1bGUgc2NyaXB0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV29ya2xldC5hZGRN
b2R1bGUoKSB0byBhY3R1YWxseSBmZXRjaCB0aGUgbW9kdWxlIHNjcmlwdCBhcyBwZXI6CisgICAg
ICAgIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dvcmtsZXRzLTEvI2RvbS13b3JrbGV0LWFkZG1v
ZHVsZQorCisgICAgICAgIFRoZSBXb3JrbGV0R2xvYmFsU2NvcGUgbWFpbnRhaW5zIGEgcXVldWUg
YSBmZXRjaCByZXF1ZXN0cyAoYmFzaWNhbGx5IGEgVVJMIGFuZCBhIGNvbXBsZXRpb24gaGFuZGxl
cikgYW5kIHVzZXMKKyAgICAgICAgdGhlIGV4aXN0aW5nIFdvcmtlclNjcmlwdExvYWRlciB0byBw
cm9jZXNzIHRoZSByZXF1ZXN0cyBzZXJpYWxseS4gQmFzZWQgb24gdGhlIHJlc3VsdCBvbiB0aGUg
bG9hZCwgd2UgY2FsbCB0aGUKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXIgd2hpY2ggd2lsbCBj
YXVzZSB0aGUgV29ya2xldC5hZGRNb2R1bGUoKSBwcm9taXNlIHRvIGdldCByZXNvbHZlZCBvciBy
ZWplY3RlZC4KKworICAgICAgICBXZSBjdXJyZW50bHkgZG9uJ3QgcnVuIHRoZSBtb2R1bGUgc2Ny
aXB0IHlldCBvbmNlIGl0IGlzIGZpbmlzaGVkIGRvd25sb2FkaW5nLiBUaGlzIHdpbGwgYmUgZG9u
ZSBpbiBhIGZvbGxvdy11cAorICAgICAgICBwYXRjaCB0byByZWR1Y2UgcGF0Y2ggc2l6ZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIFdlYi1mYWNpbmcgYmVoYXZpb3IgY2hhbmdlIHlldC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaDoK
KyAgICAgICAgUHJvdmlkZSB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBvdmVycmlkZSBmb3IgV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKSwgd2hpY2ggaXMgYSByZXBsYWNlbWVudAorICAgICAg
ICBmb3IgdW5kZXJseWluZ1RocmVhZCgpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHku
aDoKKyAgICAgICAgVXBkYXRlIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IHRvIHN1YmNsYXNz
IFdvcmtlckxvYWRlclByb3h5IHNvIHRoYXQgQXVkaW9Xb3JrbGV0IGNhbiByZXVzZQorICAgICAg
ICBXb3JrZXJTY3JpcHRMb2FkZXIuIFdvcmtlclNjcmlwdExvYWRlciByZWxpZXMgb24gV29ya2Vy
TG9hZGVyUHJveHkgdG8gZG8gdGhyZWFkIGhvcHBpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRUaHJlYWQ6OkF1ZGlvV29ya2xldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3Jr
bGV0VGhyZWFkOjpjcmVhdGUpOgorICAgICAgICBTdWJjbGFzcyB0aGUgbmV3IFdvcmtlck9yV29y
a2xldFRocmVhZCBpbnRlcmZhY2UuIFdvcmtlck9yV29ya2xldFRocmVhZCBpcyBhIG5ldyBpbnRl
cmZhY2UgdGhhdAorICAgICAgICB3YXMgYWRkaW5nIHNvIHRoYXQgV29ya2VyU2NyaXB0TG9hZGVy
IGNhbiBiZSByZXVzZWQgYnkgQXVkaW9Xb3JrbGV0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpk
aWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZFVwZ3JhZGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAg
ICBTaW1wbGUgcmVuYW1pbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpub3RpZnlJc0RvbmUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hUaW1pbmcpOgorICAgICAgICAq
IGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICBVcGRhdGUgV29ya2VyVGhyZWFk
YWJsZUxvYWRlciBzbyB0aGF0IGl0IGNhbiBiZSByZXVzZWQgYnkgQXVkaW9Xb3JrbGV0cy4KKwor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyR2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICBNaW5vciBjaGFuZ2VzIHRvIGtlZXAgYnVpbGRp
bmcgYWZ0ZXIgdXBkYXRlcyB0byBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmg6CisgICAg
ICAgIFNpbXBsZSByZW5hbWVzLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU6OmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICBVcGRhdGUgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUgdG8gYWRkIGEgZmV3IHRoaW5ncyBXb3JrZXJTY3JpcHRMb2FkZXIgbmVl
ZGVkIHRvIHdvcmsgd2l0aAorICAgICAgICBib3RoIFdvcmtlcnMgYW5kIFdvcmtsZXRzLgorCisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaDogQWRkZWQuCisgICAgICAg
IEFkZGVkIG5ldyBwYXJlbnQgaW50ZXJmYWNlIGZvciBXb3JrZXJUaHJlYWQgYW5kIEF1ZGlvV29y
a2xldFRocmVhZCBzbyB0aGF0IFdvcmtlclNjcmlwdExvYWRlcgorICAgICAgICBjYW4gd29yayBm
b3IgYm90aCBXb3JrZXJzIGFuZCBXb3JrbGV0cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKToKKyAg
ICAgICAgTWlub3IgY2hhbmdlcyB0byBrZWVwIGJ1aWxkaW5nIGFmdGVyIGNoYW5nZXMgdG8gV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICBTdWJjbGFzcyB0aGUgbmV3IFdvcmtlck9yV29ya2xldFRocmVhZCBpbnRl
cmZhY2UuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
OgorICAgICAgICBTaW1wbGUgcmVuYW1lcy4KKworICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIE1ha2Ugc3VyZSB3ZSBjb3JyZWN0bHkgaW5pdGlh
bGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0aGUgV29ya2xldEdsb2JhbFNjb3BlLgorICAg
ICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIHVzaW5nIGEgdW5pcXVlIG9yaWdpbiBzbyBhbGwgc2Ny
aXB0IGxvYWRzIHdvdWxkIGhhdmUgZmFpbGVkCisgICAgICAgIHdpdGggYSBjcm9zcy1vcmlnaW4g
ZXJyb3IuCisKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJ
bnZva2VTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpwcm9j
ZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xl
dEdsb2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OmRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IpOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEds
b2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6cmVzcG9uc2libGVEb2N1bWVudCBjb25zdCk6CisgICAgICAgIEFkZCBp
bXBsZW1lbnRhdGlvbiBmb3IgbW9kdWxlIHNjcmlwdCBmZXRjaGluZyB1c2luZyBXb3JrZXJTY3Jp
cHRMb2FkZXIuIFRoaXMgZ2V0cyBjYWxsZWQKKyAgICAgICAgd2hlbiBXb3JrbGV0LmFkZE1vZHVs
ZSgpIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisKIDIwMjAtMTAtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3R1YnMgZm9yIEF1ZGlvV29y
a2xldFByb2Nlc3NvciBhbmQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IGVlMDNhMzQ1ODU4Njg0YzdhYjAwNGQzNGM5MWM2Y2NiZGQzM2U2YmQuLjRkZDZlNDRh
ZmM1MWZkMGI0ZTFmODVkN2JiNzFjNmNmOTg5YTBkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
MTUyMCw2ICsxNTIwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJEZWJ1Z2dlclByb3h5LmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKyAgICB3
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCiAgICAgd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmgKICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCA4MThlMjRkMWUw
YjYzOTc5ZTljMjZmMTBiZGY5N2FmY2IzNDVlMGIyLi5iNDdjNTk3MzI5MTQ5ODM0Y2ZmOThhOWU4
ODU5NDgxZWRlZmI0ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKICNpbmNsdWRlICJBdWRp
b1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkF1ZGlvV29ya2xldFRo
cmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU0LDExICs1Myw2IEBAIHZvaWQgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6
OnJlZ2lzdGVyUHJvY2Vzc29yKFN0cmluZyYmIG5hbWUsIFJlZjxBdWRpb1dvcmtsZXRQCiAgICAg
VU5VU0VEX1BBUkFNKG5hbWUpOwogfQogCi1UaHJlYWQqIEF1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
Ojp1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aHJlYWQtPnRocmVh
ZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDNhNDEwNjBiYzYyZDNjYjE0MmJmMjM2ZmFm
Nzc1YjYwNzg2NjgwYzkuLjYxZGI2MzQ0MGFlNzc4MGMwY2Q4ZmI5MjlkNjdmNGUzZGYyZGQ4OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNp
bmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiA0NDEwMDsg
fQogCi0gICAgVGhyZWFkKiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgZmluYWw7CisgICAgQXVk
aW9Xb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBmaW5hbCB7IHJldHVybiBt
X3RocmVhZC5wdHIoKTsgfQogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
KEF1ZGlvV29ya2xldFRocmVhZCYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGQ0MzZjMWM4NjAxZGRmODc2NzY1OTVmYWUxMjQzNDA0
YzE2YjVhYmEuLjgxNjJlNDFhYWVlNzdjMTZlMWRjMGE2M2FkYmUzNzFmMDFkNjdhNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXVk
aW9Xb3JrbGV0LmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNs
dWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC01Myw3ICs1NCw4IEBAIHN0YXRpYyBXb3JrbGV0UGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKEF1ZGlvV29ya2xldCYgd29ya2xldCkKIH0KIAog
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KEF1
ZGlvV29ya2xldCYgd29ya2xldCkKLSAgICA6IG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRU
aHJlYWQ6OmNyZWF0ZShnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICA6
IG1fZG9jdW1lbnQoKndvcmtsZXQuZG9jdW1lbnQoKSkKKyAgICAsIG1fd29ya2xldFRocmVhZChB
dWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZSgqdGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVy
cyh3b3JrbGV0KSkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNjgsNiAr
NzAsMjIgQEAgYm9vbCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
UmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5
OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaykKK3sKKyAgICBtX2RvY3VtZW50LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKwor
Ym9vbCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywg
Y29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIHJldHVybiBwb3N0VGFza0Zvck1vZGVUb1dvcmts
ZXRHbG9iYWxTY29wZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHkuaAppbmRleCA3NWZmNDEwZjUyODI2MGZlYzAxYjNkYzE5N2JjYzkwMmUxNmNmM2QyLi45ZGU4
OWM2NDIyZDMwNDkxYjZlZjFhOTIzZDYyZjBhZmMzMWY0ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eS5oCkBAIC0yOSwxNCArMjksMTYgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykKKyNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmts
ZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVk
aW9Xb3JrbGV0OwogY2xhc3MgQXVkaW9Xb3JrbGV0VGhyZWFkOworY2xhc3MgRG9jdW1lbnQ7CiAK
LWNsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxT
Y29wZVByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDogcHVibGljIFdv
cmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHkgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk+IGNyZWF0ZShBdWRp
b1dvcmtsZXQmIHdvcmtsZXQpCiAgICAgewpAQCAtNTEsOCArNTMsMTQgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eShBdWRpb1dvcmts
ZXQmKTsKIAorICAgIC8vIFdvcmtlckxvYWRlclByb3h5LgorICAgIFJlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CisgICAg
dm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmlu
YWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5h
bDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBS
ZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJlYWQ7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAK
aW5kZXggYzI0ZTY2NDY0ZTU2ZDM0Y2VjMjA3YzJiYmRhMDRmMjFkYTRiMmVmMi4uMGVlNWQ1MDli
ZDZiY2M0YWM1Y2E3MmM2MjNlYzAxMjNmMDk4NjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcApAQCAtNDMsMTEg
KzQzLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9Xb3JrbGV0VGhyZWFkOjpB
dWRpb1dvcmtsZXRUaHJlYWQoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0g
ICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycy5pc29sYXRlZENvcHkoKSkKK0F1ZGlvV29ya2xl
dFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBt
ZXNzYWdpbmdQcm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAg
OiBtX21lc3NhZ2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQorICAgICwgbV9wYXJhbWV0ZXJzKHBh
cmFtZXRlcnMuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CiAKK0F1ZGlvV29ya2xldFRocmVhZDo6fkF1
ZGlvV29ya2xldFRocmVhZCgpID0gZGVmYXVsdDsKKwogdm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6
OnN0YXJ0KCkKIHsKICAgICBhdXRvIGxvY2sgPSBob2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5k
V29ya2xldEdsb2JhbFNjb3BlTG9jayk7CkBAIC0xMjksNiArMTMyLDExIEBAIHZvaWQgQXVkaW9X
b3JrbGV0VGhyZWFkOjpydW5FdmVudExvb3AoKQogICAgIG1fcnVuTG9vcC5ydW4obV93b3JrbGV0
R2xvYmFsU2NvcGUuZ2V0KCkpOwogfQogCitXb3JrZXJMb2FkZXJQcm94eSYgQXVkaW9Xb3JrbGV0
VGhyZWFkOjp3b3JrZXJMb2FkZXJQcm94eSgpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnaW5nUHJv
eHkuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRUaHJlYWQuaAppbmRleCA3MjNmNmE4NTIzNmMxODc4NzY0NzI2YzZiNjNiZGIw
MDRhNDMxOTRmLi5lODM5ZTFhZjgzYzVhZTU4ZjM0YjQ3YjhmMjNmYzQ5MjgyNDFhYzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhy
ZWFkLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQl9B
VURJTykKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2xldFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtMzksMjUgKzQwLDMwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOworY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHk7CiAKLWNsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb1dvcmtsZXRUaHJlYWQ+IHsKK2NsYXNzIEF1ZGlvV29ya2xldFRocmVh
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1dvcmtsZXRUaHJlYWQ+LCBwdWJs
aWMgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlv
V29ya2xldFRocmVhZD4gY3JlYXRlKGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQorICAgIHN0YXRpYyBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkmIG1lc3NhZ2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYg
cGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29y
a2xldFRocmVhZChwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvV29ya2xldFRocmVhZChtZXNzYWdpbmdQcm94eSwgcGFyYW1ldGVycykpOwogICAgIH0KKyAg
ICB+QXVkaW9Xb3JrbGV0VGhyZWFkKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAKLSAgICBXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9Ci0gICAgVGhyZWFkKiB0
aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQorICAgIC8vIFdvcmtlck9y
V29ya2xldFRocmVhZC4KKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1
cm4gbV9ydW5Mb29wOyB9CisgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5
KCkgZmluYWw7CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Ro
cmVhZC5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldFRocmVh
ZChjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOworICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAKICAg
ICB2b2lkIHJ1bkV2ZW50TG9vcCgpOwogICAgIHZvaWQgd29ya2xldFRocmVhZCgpOwogCisgICAg
UmVmPEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBtX21lc3NhZ2luZ1Byb3h5OwogICAgIFJl
ZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgIFdvcmtlclJ1bkxvb3AgbV9ydW5Mb29wOwogICAg
IFdvcmtsZXRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRj
MzQ0YWQwMTEuLmFjNWYwZDNjYmNkNDAzOGYyOGQzYWIyYzUwZTU5ODM3NGRiMmMzMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTc0LDcgKzE3NCw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPnNlbmQobWVzc2FnZSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJD
bGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2Vu
ZFJlcXVlc3RSZXN1bHQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMTg2LDcgKzE4Niw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29u
c3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5k
UmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RS
ZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2Vy
Q2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoQmxvYiYgYmluYXJ5RGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFy
eURhdGEpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJl
cXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dv
cmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVz
dWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAg
ICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTIxMCw4ICsyMTAsOCBAQCB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFtb3VudCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50ID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJD
bGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsK
ICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRB
bW91bnQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjYzLDggKzI2Myw4IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QoKQogCiAg
ICAgU3RyaW5nIHN1YnByb3RvY29sID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9j
b2woKTsKICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmV4
dGVuc2lvbnMoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHN1
YnByb3RvY29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMgPSBleHRl
bnNpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGll
bnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xhdGVkQ29weSgpLCBleHRl
bnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJv
dG9jb2wpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVu
c2lvbnMpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDb25uZWN0KCk7CkBAIC0y
NzUsOCArMjc1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXMKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
LCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRl
eHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAt
Mjg1LDggKzI4NSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBl
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90CiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250
ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KQEAgLTI5NSw4ICsyOTUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0g
bV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxT
Y29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMzA1LDgg
KzMwNSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0zMTYsMTggKzMxNiwxOCBAQCB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1
bmhhbmRsZWRCdWZmZXJlZAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9tYWlu
V2ViU29ja2V0Q2hhbm5lbCA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwotICAgICAgICB9LCBt
X3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlv
biwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2Jh
bFNjb3BlKCkpOworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNv
bik7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
KyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNX
b3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTMzNiw4ICsz
MzYsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRV
cGdyYWRlVVJMKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBncmFkZVVSTCgpOwogICAgIH0sIG1fdGFza01v
ZGUpOwogfQpAQCAtMzYxLDEwICszNjEsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LmlzRG9jdW1lbnQo
KSk7CiAKLSAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKHsKKyAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCiAgICAgICAgIFtjbGllbnRXcmFwcGVyLCAmbG9h
ZGVyUHJveHksIHBlZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChj
bGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2Ug
bmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgogICAg
ICAgICAgICAgICAgIGxvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIgPSBXVEZNb3Zl
KHBlZXIpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDgwY2M4NjU1
YTg5MzNiMWY2ZWUyMmM0OTM4ZDU5ZjJlYjBlMWIzOS4uNDYyMzQzMzdkMmFjOGRkNGI0MmY1MDY5
Y2Q5MzU0YjhiOGEyNTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU1MCw2ICsyNTUwLDcgQEAKIAkJODNFODY2ODAxRkJB
NTY1QjAwODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U4NjY3RDFGQkE1NjNGMDA4ODU1QzUgLyogU2Vy
dmljZVdvcmtlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4M0VFNTk4RjFGNTA5NThFMDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTk4QjFG
NTA5NThCMDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCTgzRjI4QzAwMjRE
QjFERTEwMDVCQTZGNiAvKiBDb252b2x2ZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyOEJGRDI0REIxREQzMDA1QkE2RjYgLyogQ29u
dm9sdmVyT3B0aW9ucy5oICovOyB9OworCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJDRDMgLyogV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0U4MjhCMjI1Mjc5NENEMDAyN0UwRjcgLyogV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODNGQjMzNzExRjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQjMzNkQxRjUw
OEE0RTAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwogCQk4M0ZC
MzM3MzFGNTA4QTU4MDA5ODZFNTQgLyogRmlsZVN5c3RlbUVudHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCMzM2RjFGNTA4QTRFMDA5ODZFNTQg
LyogRmlsZVN5c3RlbUVudHJ5LmggKi87IH07CiAJCTgzRkIzMzc1MUY1MDhBNUIwMDk4NkU1NCAv
KiBGaWxlU3lzdGVtRmlsZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0ZCMzM2QzFGNTA4QTRFMDA5ODZFNTQgLyogRmlsZVN5c3RlbUZpbGVF
bnRyeS5oICovOyB9OwpAQCAtMTA3ODcsNiArMTA3ODgsNyBAQAogCQk4M0UwNDVFRjFEQUExMDRG
MDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1VJRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTM1
OUEwMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUaW1lRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0UzNTlBMTFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVGltZUVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0U4MjhCMjI1Mjc5NENE
MDAyN0UwRjcgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdvcmtlck9yV29ya2xldFRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0U4NjY3RDFGQkE1NjNGMDA4ODU1QzUgLyogU2VydmljZVdvcmtlckRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckRhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFODY2N0YxRkJBNTY0MDAwODg1NUM1IC8q
IFNlcnZpY2VXb3JrZXJEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlTm9kZUZpbHRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg3NTAsNiArMTg3NTIsNyBAQAogCQkJCTJFNDM0NjNGMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAogCQkJCTgzRDZBQUU0MjUyNEVF
MTMwMDQyOEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oICovLAogCQkJCTgzOUEw
OTVCMjUyNEYzNzYwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgg
Ki8sCisJCQkJODNFODI4QjIyNTI3OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVh
ZC5oICovLAogCQkJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQ
cm94eS5oICovLAogCQkJCTJFNDM0NjQwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29w
LmNwcCAqLywKIAkJCQkyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5o
ICovLApAQCAtMzQ2NDgsNiArMzQ2NTEsNyBAQAogCQkJCTJFNDM0NjUxMEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXJPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNENkFBRTYyNTI0
RUUxQzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzlBMDk1RDI1MjRGMzdGMDBFRUYzMjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0Qz
IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTI5QTYx
MDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRTQzNDY1MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVCODFDQ0YxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlclJ1bnRpbWVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYzdlMGYzMWJlNzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0YmJmN2Q2Mi4uMjcx
N2M4NjFjNzRiMGYyYWViY2RlNDA4NzAwZTJhOWEwMzczNzU5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsMTAgKzEwMywxNiBAQCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKIHsKLSAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
Y2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3duY2Fz
dDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgpKSkK
KyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdURk1vdmUo
cmVmZXJyZXIpKTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CisgICAgaWYg
KGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgIGRvY3VtZW50ID0gZG93
bmNhc3Q8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS5yZXNwb25zaWJsZURvY3VtZW50KCk7
CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudCA9ICZkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCk7CiAKLSAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IFdURk1vdmUocmVmZXJyZXIpKTsKKyAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoKmRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdU
Rk1vdmUocmVmZXJyZXIpKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNmY4Mjg3MzM5YjRmYzVkMDBi
N2RiYTUwMzgzMDU0NTQ2ZWJhOGIxNS4uZTExMzk2YmZkODMzNmUzZTg2NzRhNDljYjVjODE4NGJm
MTU4MGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDMsMTkgKzQzLDIwIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmcu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCi0gICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKQorV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCisgICAgOiBtX1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVyKFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50LCBvcHRpb25zLmluaXRpYXRv
cikpCi0gICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRX
cmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94
eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0
eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkg
OiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUpKQorICAgICwgbV9icmlkZ2UoKm5ldyBNYWlu
VGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCks
IHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkg
PyB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJy
ZXIoKSA6IHJlZmVycmVyLCB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkpCiB7CiB9CiAKQEAg
LTY0LDE3ICs2NSwxNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjp+V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcigpCiAgICAgbV9icmlkZ2UuZGVzdHJveSgpOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRp
b25zKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9vcCgp
OworICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+cnVuTG9vcCgpOwogCiAgICAgLy8gQ3JlYXRlIGEg
dW5pcXVlIG1vZGUganVzdCBmb3IgdGhpcyBzeW5jaHJvbm91cyByZXNvdXJjZSBsb2FkLgogICAg
IFN0cmluZyBtb2RlID0gbWFrZVN0cmluZygibG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUi
LCBydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpOwogCi0gICAgYXV0byBsb2FkZXIgPSBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgbW9kZSwg
V1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOworICAgIGF1dG8gbG9hZGVyID0g
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKICAg
ICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNl
aXZlZDsKICAgICB3aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVl
dWVUZXJtaW5hdGVkKQotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2Vy
R2xvYmFsU2NvcGUsIG1vZGUpOworICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgm
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIG1vZGUpOwogCiAgICAgaWYgKCFsb2FkZXItPmRv
bmUoKSAmJiByZXN1bHQgPT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKICAgICAgICAgbG9hZGVy
LT5jYW5jZWwoKTsKQEAgLTEwNyw3ICsxMDgsNyBAQCBMb2FkZXJUYXNrT3B0aW9uczo6TG9hZGVy
VGFza09wdGlvbnMoY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgog
fQogCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFk
QnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiB3b3JrZXJDbGllbnRXcmFwcGVy
LCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgdGFza01vZGUs
Ci0gICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgV29ya2VyR2xv
YmFsU2NvcGUmIGdsb2JhbFNjb3BlKQorICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKICAg
ICA6IG1fd29ya2VyQ2xpZW50V3JhcHBlcigmd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAsIG1f
bG9hZGVyUHJveHkobG9hZGVyUHJveHkpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xh
dGVkQ29weSgpKQpAQCAtMTMxLDEyICsxMzIsMTMgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4K
ICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID0gSW5pdGlhdG9yQ29u
dGV4dDo6V29ya2VyOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIG9wdGlvbnND
b3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGdsb2JhbFNjb3BlLmlzU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKCkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29y
a2Vyc01vZGU6OkFsbDsKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01v
ZGUgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSA/IFNlcnZpY2VX
b3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOwogICAgIGlmIChhdXRv
KiBhY3RpdmVTZXJ2aWNlV29ya2VyID0gZ2xvYmFsU2NvcGUuYWN0aXZlU2VydmljZVdvcmtlcigp
KQogICAgICAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXItPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIo
KTsKICNlbmRpZgogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3QoZ2xvYmFsU2NvcGUsIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QpOworICAg
IGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpKQorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oZ2xvYmFsU2NvcGUpLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsK
IAogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRv
IGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewpAQCAtMjAwLDcgKzIwMiw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y29tcHV0ZUlzRG9uZSgp
CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bm90aWZ5
SXNEb25lKGJvb2wgaXNEb25lKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VS
ZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGlzRG9uZV0oYXV0byYpIHsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3Rl
Y3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIp
LCBpc0RvbmVdKGF1dG8mKSB7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIt
Pm5vdGlmeUlzRG9uZShpc0RvbmUpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjEyLDE5
ICsyMTQsMjAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpjbGVhckNsaWVudFdyYXBwZXIoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7Ci0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgYnl0ZXNTZW50
LCB0b3RhbEJ5dGVzVG9CZVNlbnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNl
bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBj
b250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7
CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBy
ZXNwb25zZURhdGEgPSByZXNwb25zZS5jcm9zc1RocmVhZERhdGEoKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9
IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVy
ID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgaWRlbnRpZmllciwgcmVzcG9uc2VEYXRhID0g
cmVzcG9uc2UuY3Jvc3NUaHJlYWREYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8gcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKFdURk1vdmUocmVz
cG9uc2VEYXRhKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7Ci0gICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2Up
OworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlm
aWVyLCByZXNwb25zZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTIzMiw0MyArMjM1
LDQ3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwKIHsKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
KGRhdGFMZW5ndGgpOwogICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3Ro
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdy
YXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1f
d29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwog
ICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
KyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQgPSB0cnVl
OwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3Jh
cHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmll
ciwgbmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5
KCksIGlkZW50aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdy
YXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIG5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29w
eSgpLCBpZGVudGlmaWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250
ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRy
aWNzKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgbV9sb2FkaW5nRmluaXNoZWQgPSB0cnVlOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3Ig
PSBlcnJvci5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2Vy
Q2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgZXJyb3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoY29udGV4dCwgZXJyb3IsIHByb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXItPmluaXRpYXRvcigpKTsKICAgICAgICAgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbChlcnJvcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSwgbV90YXNrTW9k
ZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKIHsK
ICAgICBtX25ldHdvcmtMb2FkTWV0cmljcyA9IHJlc291cmNlVGltaW5nLm5ldHdvcmtMb2FkTWV0
cmljcygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciksIHJlc291cmNlVGltaW5nID0gcmVzb3VyY2VUaW1pbmcuaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
QVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCByZXNv
dXJjZVRpbWluZyA9IHJlc291cmNlVGltaW5nLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwog
ICAgICAgICBBU1NFUlQoIXJlc291cmNlVGltaW5nLmluaXRpYXRvcigpLmlzRW1wdHkoKSk7CiAK
ICAgICAgICAgLy8gTm8gbmVlZCB0byBub3RpZnkgY2xpZW50cywganVzdCBhZGQgdGhlIHBlcmZv
cm1hbmNlIHRpbWluZyBlbnRyeS4KLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLnBlcmZvcm1hbmNlKCkuYWRkUmVzb3VyY2VUaW1pbmcoV1RGTW92ZShyZXNvdXJj
ZVRpbWluZykpOworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQor
ICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnBlcmZvcm1h
bmNlKCkuYWRkUmVzb3VyY2VUaW1pbmcoV1RGTW92ZShyZXNvdXJjZVRpbWluZykpOwogICAgIH0s
IG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAppbmRleCBiYWMyNTJhNTdhNGUwMWM5YjYwMzNiOWJiZGEwNjNlYzUzMDU4
ZmMwLi4yNDQ0ZmRhM2FhYTM4MjQ0NjdhZDQ3MDQ2MjIwZmUyMTUwYjAzN2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTQyLDE2ICs0
MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKICAg
ICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0gICAg
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CisgICAgY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU7CiAgICAgY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CiAKICAgICBjbGFzcyBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRl
cj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwotICAgICAg
ICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
CisgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyBS
ZWY8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYg
Y2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcih3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCB0YXNrTW9kZSwg
V1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIpKTsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUsIGNsaWVudCwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJl
ZmVycmVyKSk7CiAgICAgICAgIH0KIAogICAgICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigp
OwpAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIGNhc2UgMS4gd29ya2VyLnRlcm1pbmF0ZSBpcyBjYWxsZWQuCiAgICAgICAgIC8vICAg
IEluIHRoaXMgY2FzZSwgbm8gbW9yZSB0YXNrcyBhcmUgcG9zdGVkIGZyb20gdGhlIHdvcmtlciBv
YmplY3QncyB0aHJlYWQgdG8gdGhlIHdvcmtlcgotICAgICAgICAvLyAgICBjb250ZXh0J3MgdGhy
ZWFkIC0tIFdvcmtlckdsb2JhbFNjb3BlUHJveHkgaW1wbGVtZW50YXRpb24gZW5mb3JjZXMgdGhp
cy4KKyAgICAgICAgLy8gICAgY29udGV4dCdzIHRocmVhZCAtLSBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZVByb3h5IGltcGxlbWVudGF0aW9uIGVuZm9yY2VzIHRoaXMuCiAgICAgICAgIC8vCiAg
ICAgICAgIC8vIGNhc2UgMi4geGhyIGdldHMgYWJvcnRlZCBhbmQgdGhlIHdvcmtlciBjb250ZXh0
IGNvbnRpbnVlcyBydW5uaW5nLgogICAgICAgICAvLyAgICBUaGUgVGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXIgaGFzIHRoZSB1bmRlcmx5aW5nIGNsaWVudCBjbGVhcmVkLCBzbyBubyBtb3Jl
IGNhbGxzCkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xh
c3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAg
ICAgICAgcHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIg
Y29udGV4dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYg
dGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUmKTsK
KyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXImLCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYg
b3V0Z29pbmdSZWZlcnJlciwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKICAgICAgICAg
ICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKICAgICAgICAg
ICAgIHZvaWQgY29tcHV0ZUlzRG9uZSgpOwpAQCAtMTI2LDExICsxMjYsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRN
ZXRyaWNzOwogICAgICAgICB9OwogCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXIoV29y
a2VyR2xvYmFsU2NvcGUmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgU3RyaW5nJiB0
YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jiwg
Y29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICAgICAgdm9p
ZCBjb21wdXRlSXNEb25lKCkgZmluYWw7CiAKLSAgICAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3Bl
PiBtX3dvcmtlckdsb2JhbFNjb3BlOworICAgICAgICBSZWY8V29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGU+IG1fV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAgICAgICAgIFJlZjxUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwogICAgICAgICBN
YWluVGhyZWFkQnJpZGdlJiBtX2JyaWRnZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxZmU5Mzk4N2VmOTYxZmRmYmUzOGY0N2Nh
NjcxYWY1ZmRhOThkOWRmLi43ZDk3ODNkOTEzMGQ2NmMyNzVhYWRiNjJjNDQxNjljODY4ZGQ3YzZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
NTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIldvcmtlclJlcG9ydGluZ1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9h
ZGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU2NyaXB0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2Fs
bFN0YWNrLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTQ0OCw3ICs0
NDcsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdAogICAgIG1fdGhyZWFkLndvcmtlckxvYWRl
clByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVzdWx0Q29udGFpbmVyLCBrZXksIHdyYXBwZWRL
ZXlDb250YWluZXIsIGRvbmVDb250YWluZXIsIHdvcmtlck1lc3NhZ2luZ1Byb3h5ID0gbWFrZVJl
Zihkb3duY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJlYWQud29ya2VyTG9hZGVyUHJv
eHkoKSkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIHJlc3Vs
dENvbnRhaW5lci0+c2V0Qm9vbGVhbihjb250ZXh0LndyYXBDcnlwdG9LZXkoa2V5LCB3cmFwcGVk
S2V5Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRCb29s
ZWFuKHRydWUpOwotICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAg
ICB9KTsKQEAgLTQ3MSw3ICs0NzAsNyBAQCBib29sIFdvcmtlckdsb2JhbFNjb3BlOjp1bndyYXBD
cnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0bwogICAgIG1f
dGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbcmVzdWx0Q29udGFp
bmVyLCB3cmFwcGVkS2V5LCBrZXlDb250YWluZXIsIGRvbmVDb250YWluZXIsIHdvcmtlck1lc3Nh
Z2luZ1Byb3h5ID0gbWFrZVJlZihkb3duY2FzdDxXb3JrZXJNZXNzYWdpbmdQcm94eT4obV90aHJl
YWQud29ya2VyTG9hZGVyUHJveHkoKSkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CiAgICAgICAgIHJlc3VsdENvbnRhaW5lci0+c2V0Qm9vbGVhbihjb250ZXh0LnVud3JhcENy
eXB0b0tleSh3cmFwcGVkS2V5LCBrZXlDb250YWluZXItPmJ1ZmZlcigpKSk7CiAgICAgICAgIGRv
bmVDb250YWluZXItPnNldEJvb2xlYW4odHJ1ZSk7Ci0gICAgICAgIHdvcmtlck1lc3NhZ2luZ1By
b3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6
OmRlZmF1bHRNb2RlKCkpOwogICAgIH0pOwpAQCAtNTQ0LDkgKzU0Myw0IEBAIFJlZmVycmVyUG9s
aWN5IFdvcmtlckdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcmVmZXJyZXJQb2xpY3k7CiB9CiAKLVRocmVhZCogV29ya2VyR2xvYmFsU2NvcGU6OnVuZGVy
bHlpbmdUaHJlYWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RocmVhZC50aHJlYWQoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IDkwZGYzYjZhZjNkNjNlYzYxYWVjOWExMjNjMDg3N2U3OWUzNGIy
NjcuLjdjZWU0YzFjZTU2YzNjM2Y1ZGFhOThmMGJjMTdmMTY4MTI5MDcxNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAKQEAgLTUzLDcgKzU0
LDYgQEAgY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIFdvcmtlckxvY2F0
aW9uOwogY2xhc3MgV29ya2VyTmF2aWdhdG9yOwogY2xhc3MgV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOwotY2xhc3MgV29ya2VyVGhyZWFkOwogc3RydWN0IFdvcmtlclBhcmFtZXRlcnM7CiAKIG5h
bWVzcGFjZSBJREJDbGllbnQgewpAQCAtOTEsMTAgKzkxLDkgQEAgcHVibGljOgogCiAgICAgV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0
dXJuICptX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KIAorICAgIFdvcmtlclRocmVhZCogd29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCkgZmluYWwgeyByZXR1cm4gJm1fdGhyZWFkOyB9CiAgICAgV29ya2Vy
VGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQogCi0gICAgVGhyZWFk
KiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgZmluYWw7Ci0KICAgICB1c2luZyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFRh
c2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5
bmNocm9ub3VzbHkuCkBAIC0xMzgsOCArMTM3LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRl
SW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwg
SW1hZ2VCaXRtYXA6OlByb21pc2UmJik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJpdG1hcChJbWFn
ZUJpdG1hcDo6U291cmNlJiYsIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYsIEltYWdlQml0bWFwOjpQcm9taXNlJiYpOwogCi0gICAgdW5zaWduZWQg
bG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVy
Kys7IH0KLQogICAgIENTU1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCk7CiAKICAgICBSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsOwpAQCAtMjIxLDcgKzIxOCw2IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9j
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcj4gbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKLSAgICB1
bnNpZ25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgUmVmUHRyPFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zd0NsaWVu
dENvbm5lY3Rpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTG9hZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVy
UHJveHkuaAppbmRleCA2MTUzMWVkNDA4NjRiMzhhY2I5OWNjMDY3NTdiZmMxMTEyM2Q4ZDg3Li5l
ZTY0NjlkNWQ2MTRlM2FkODI3YTIyNTMzY2RjMGY0YTQ5MjJhNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBDcmVhdGVzIGEgY2FjaGUgc3RvcmFnZSBjb25uZWN0aW9uIHRv
IGJlIHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLiBNZXRob2QgbXVzdCBiZSBjYWxsZWQgb24gdGhl
IG1haW4gdGhyZWFkLgotICAgIHZpcnR1YWwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpID0gMDsK
IAogICAgIC8vIFBvc3RzIGEgdGFzayB0byB0aGUgdGhyZWFkIHdoaWNoIHJ1bnMgdGhlIGxvYWRp
bmcgY29kZSAobm9ybWFsbHksIHRoZSBtYWluIHRocmVhZCkuCiAgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSA9IDA7CkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAvLyBQb3N0cyBjYWxsYmFja3MgZnJvbSBsb2FkaW5n
IGNvZGUgdG8gdGhlIFdvcmtlckdsb2JhbFNjb3BlLiBUaGUgJ21vZGUnIGlzIHVzZWQgdG8gZGlm
ZmVyZW50aWF0ZQogICAgIC8vIHNwZWNpZmljIHN5bmNocm9ub3VzIGxvYWRpbmcgcmVxdWVzdHMg
c28gdGhleSBjYW4gYmUgJ25lc3RlZCcsIHBlciBzcGVjLgogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIGJvb2wgcG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGM0MjEyYjI2NTgyOTdiM2U0MTNhMTJkNTU1YTk4MmZiODc2NTA1Y2IuLmE2
MWI0MTQ4NjMzYmRmMjBkNTJiZTU3NjRkYTliNTU0ZTE2MTBkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xNTMsMTQgKzE1Mywx
NCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKLVJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
CitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2VyTWVzc2FnaW5nUHJveHk6OmNy
ZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LnBhZ2UoKS0+Y2FjaGVTdG9yYWdl
UHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiB9CiAKLWJvb2wgV29y
a2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jv
b2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmgKaW5kZXggZTc4MTIyN2ZlZGJhYjdlZTI1ZGVjYmNhYjFmN2I5MmNiYTkxMWUxNy4uM2JiNGQ5
ZDgxNWEyMDkxNGFkOWYyNWIzNGE4N2NhOTFlMWM4NWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJMb2FkZXJQcm94eS4KICAgICAvLyBU
aGlzIG1ldGhvZCBpcyB1c2VkIGluIHRoZSBtYWluIHRocmVhZCB0byBwb3N0IHRhc2sgYmFjayB0
byB0aGUgd29ya2VyIHRocmVhZC4KLSAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1v
ZGUpIGZpbmFsOworICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9k
ZSkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlckds
b2JhbFNjb3BlUHJveHkuCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gcmVxdWVz
dHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8gV29ya2VyR2xvYmFsU2NvcGUuCiAgICAg
Ym9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYpIGZpbmFsOwotICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgd29y
a2VyVGhyZWFkQ3JlYXRlZChEZWRpY2F0ZWRXb3JrZXJUaHJlYWQmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDY1
NDhlMDg0OGJlMzUyMmI2YWQ5YzMyODUzMzk3NDZjN2MzOTc0MjguLjgyMDlmYzU3YTU1ZmU2OWU2
Nzk2YzAwMmYzNDA2YjMwNDZkOWYxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI2LDIxICsyNiwyNCBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgotCi1uYW1lc3BhY2UgV1RGIHsK
LWNsYXNzIFRocmVhZDsKLX0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyOworY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkOwor
CiBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHVuZGVybHlpbmdU
aHJlYWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ2xvc2luZygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgp
ID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlck9yV29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0
VGhyZWFkKCkgPSAwOworCisgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0KKworcHJpdmF0ZToKKyAgICB1bnNp
Z25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVh
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyMGRmYzRlY2RlMzRhY2JkNDcxNWY1ZThjZjE1MGIwODY4NGE5MjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
aHJlYWQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2VyTG9hZGVyUHJv
eHk7CitjbGFzcyBXb3JrZXJSdW5Mb29wOworCitjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfldvcmtlck9yV29ya2xldFRocmVhZCgpID0gZGVmYXVs
dDsKKworICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHRocmVhZCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSA9IDA7CisgICAgdmlydHVhbCBXb3JrZXJM
b2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBi
YjYxZmM1ZjJhOTdkYjg0YjExM2JlMjIzYzdhN2FkYzcxOWI0OTQ0Li42YjcwOTVkMjU3YTVmMjJk
ZmQ5NGVkYjIzNjI4YmQ4MTlkY2RlYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdv
cmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udAog
TWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IE1vZGVQcmVkaWNhdGUmIHByZWRpY2F0
ZSwgV2FpdE1vZGUgd2FpdE1vZGUpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VS
VChjb250ZXh0LT51bmRlcmx5aW5nVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAg
ICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlm
aWNhdGlvbkNhbGxiYWNrIHRpbWVyQWRkZWRUYXNrID0gV1RGOjpjcmVhdGVTaGFyZWRUYXNrPEpT
Qzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uVHlwZT4oW3RoaXNdIHsKICAgICAg
ICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgaGVyZSwgd2UganVzdCB3YW50IHRv
IGxvb3AgYXJvdW5kIHJ1bkluTW9kZQpAQCAtMjI2LDcgKzIyNiw3IEBAIE1lc3NhZ2VRdWV1ZVdh
aXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKiBjb250CiB2b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyhXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAg
QVNTRVJUKGNvbnRleHQtPnVuZGVybHlpbmdUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OworICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+dGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9tZXNzYWdlUXVldWUua2lsbGVk
KCkpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCmluZGV4IGQ3NzYzM2MwNTQ2ZjQzZGVkZmQ1YTA0YzZlNDQzYTg5Zjk5MGYyM2YuLjYyNDRi
M2NjMDA4MWNiNjA1YTE3ZjZkNDlhZTI4NDYyZTc2ODQxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKKyNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpA
QCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRlZENv
cHkoKSBjb25zdDsKIH07CiAKLWNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKK2NsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+LCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0
VGhyZWFkIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIApAQCAtODcs
OSArODgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUo
KTsKIAotICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KLSAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9Ci0g
ICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgY29uc3QgeyByZXR1cm4g
bV93b3JrZXJMb2FkZXJQcm94eTsgfQorICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkg
ZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CisgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtl
ckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQogICAg
IFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KICAgICBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29y
a2VyUmVwb3J0aW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlclJlcG9ydGluZ1Byb3h5
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGI3N2YzNzQ1
MmJjMDY1ZWVhZDNmZmJmNjQyZDQxZjhhMzE1MWNkZTIuLmUxNTIzZGE5MjRkNzMzOWY1MDk0NmI0
ZjExMjAyMDJmNjJmZGU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cApAQCAtMTI2LDcgKzEyNiw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eSgpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5y
ZW1vdmUodGhpcyk7CiB9CiAKLWJvb2wgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlm
IChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE1OCwxMiArMTU4LDEyIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wgZGlzCiAgICAgfSk7ICAgCiB9
CiAKLVJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fY2FjaGVT
dG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uID0gbV9j
YWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7Ci0gICAg
cmV0dXJuICptX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAgcmV0dXJuIG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZldGNoTG9hZGVyPiBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmIGNs
aWVudCwgY29uc3QgVVJMJiBibG9iVVJMKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSkKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2JhbFNjb3BlLnNldElzT25saW5l
KGlzT25saW5lKTsKICAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gbWFrZVJlZihnbG9iYWxT
Y29wZSksIGlzT25saW5lXSB7CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW8KIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250YWlucyhrZXkpKTsK
ICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5UmVmKCkpOwotICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVx
dWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShhdXRvJikgbXV0YWJs
ZSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIg
PSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5
KCldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9GaXJlRmV0
Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50SWQpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgfSwgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNhbmNlbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgY29ubmVjdGkKICAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0VtcHR5KCkpCiAg
ICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygpOwogCi0gICAgcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gY2xpZW50LnJlbGVhc2VOb25O
dWxsKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIHBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2NsaWVudCA9IGNsaWVudC5yZWxlYXNlTm9uTnVs
bCgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2xpZW50LT5jYW5jZWwo
KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZShTV1NlcnZlckNvbm5lY3RpbwogICAgIGlmICghY2xpZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtjbGll
bnQgPSBtYWtlUmVmKCpjbGllbnQpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtjbGllbnQgPSBtYWtl
UmVmKCpjbGllbnQpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgY2xpZW50
LT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA4
NTQ1ZTg0Y2I1ODZlNDRhYjljNzk0MTVlMDBkNmI2ZTM2MDczYjhmLi4xZDQ3MmVmMGU3NjIwOTg1
ODNmMzMzOTZiYTMyOWJjMDI0NzI0ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuaApAQCAtODUsOSArODUsOSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGluZSk7CiAKICAgICAvLyBXb3Jr
ZXJMb2FkZXJQcm94eQotICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmlu
YWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5h
bDsKICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmKSBmaW5hbDsKLSAgICBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICAvLyBXb3Jr
ZXJEZWJ1Z2dlclByb3h5CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvRGVidWdnZXIoY29uc3QgU3Ry
aW5nJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAppbmRleCAxZGYzYjI5NzcwZjdmOTFlZWYxZTY2YjI1MDk3MGMzMWYyYjQzZmUwLi44
MDE0MzhjMjdhMmQyZWRlNGU0OGI3N2Y1MTkwNTYwOWMxODcwMmJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4K
QEAgLTU0LDcgKzU1LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
Y29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgYXV0byBhZGRSZXN1bHQg
PSBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KCkuYWRkKHRoaXMpOwogICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQpOwogCi0gICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
U2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKKyAg
ICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51
cmwoKSB9LCAqdGhpcykpOwogfQogCkBAIC03MSw3ICs3Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29w
ZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEpTQzo6Vk0+JiYg
dm0sIFNjCiAKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsKIAotICAgIHNldFNlY3VyaXR5
T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUobV90b3BPcmlnaW4uY29w
eVJlZigpKSk7CisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsKIH0KIApAQCAtMTgzLDExICsxODQsNjEgQEAg
UmVmZXJyZXJQb2xpY3kgV29ya2xldEdsb2JhbFNjb3BlOjpyZWZlcnJlclBvbGljeSgpIGNvbnN0
CiAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyOwogfQogCi12b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJbnZva2VTY3JpcHQoY29uc3QgVVJMJiwgRmV0Y2hSZXF1
ZXN0Q3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9u
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRj
aEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHMgY3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKLSAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9uLgotICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgbV9zY3JpcHRGZXRjaEpvYnMuYXBwZW5kKHsgbW9k
dWxlVVJMLCBjcmVkZW50aWFscywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7CisgICAg
cHJvY2Vzc05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKQoreworICAgIGlm
IChtX3NjcmlwdEZldGNoSm9icy5pc0VtcHR5KCkgfHwgbV9zY3JpcHRMb2FkZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIHNjcmlwdEZldGNoSm9iID0gbV9zY3JpcHRGZXRjaEpvYnMu
Zmlyc3QoKTsKKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgc2NyaXB0RmV0Y2hKb2Iu
bW9kdWxlVVJMIH07CisKKyAgICBGZXRjaE9wdGlvbnMgZmV0Y2hPcHRpb25zOworICAgIGZldGNo
T3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2luOworICAgIGZldGNo
T3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQ7CisgICAgZmV0Y2hP
cHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6Rm9sbG93OworICAgIGZl
dGNoT3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246Oldvcmtl
cjsKKyAgICBmZXRjaE9wdGlvbnMuY3JlZGVudGlhbHMgPSBzY3JpcHRGZXRjaEpvYi5jcmVkZW50
aWFsczsKKworICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudDo6RW5mb3JjZUNoaWxkU3JjRGlyZWN0aXZlOworCisgICAgbV9zY3JpcHRMb2Fk
ZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOworICAgIG1fc2NyaXB0TG9hZGVyLT5s
b2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZmV0Y2hP
cHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQsIFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsLCAqdGhpcyk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9
CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5pc2hlZCgpCit7CisgICAgYXV0
byBjb21wbGV0ZWRKb2IgPSBtX3NjcmlwdEZldGNoSm9icy50YWtlRmlyc3QoKTsKKworICAgIGlm
IChtX3NjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKKyAgICAgICAgZGlkQ29tcGxldGVTY3JpcHRG
ZXRjaEpvYihXVEZNb3ZlKGNvbXBsZXRlZEpvYiksIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwg
bWFrZVN0cmluZygiRmFpbGVkIHRvIGZldGNoIG1vZHVsZSwgZXJyb3I6ICIsIG1fc2NyaXB0TG9h
ZGVyLT5lcnJvcigpLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gRklYTUU6IFJ1biB0aGUgbW9kdWxlIHNjcmlwdC4KKyAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjcnVu
LWEtbW9kdWxlLXNjcmlwdAorCisgICAgZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihXVEZNb3Zl
KGNvbXBsZXRlZEpvYiksIHsgfSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRD
b21wbGV0ZVNjcmlwdEZldGNoSm9iKFNjcmlwdEZldGNoSm9iJiYgam9iLCBPcHRpb25hbDxFeGNl
cHRpb24+IHJlc3VsdCkKK3sKKyAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisKKyAgICBq
b2IuY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKKworICAgIHByb2Nlc3NOZXh0
U2NyaXB0RmV0Y2hKb2JJZk5lZWRlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDY0NmFk
MDZhMTRhMTYzMzg4OTZhZmM4NDEwMDMxODczZGIzNzQ2YzIuLjFiZDhiNGFhMzk1Y2M2MmIxMDU4
MTc0NmEyZTUzNDI4ODUyYmM0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC0zNCwxMCArMzQsMTIgQEAKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
UnVudGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NywxMyAr
NDksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7
CiBjbGFzcyBXb3JrZXJFdmVudExvb3A7CitjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7CiAKIHN0
cnVjdCBXb3JrbGV0UGFyYW1ldGVyczsKIAogZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlm
aWVyVHlwZSB7IH07CiB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CiAKLWNsYXNzIFdv
cmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUgeworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2xldEdsb2JhbFNjb3BlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgcHVibGljIFdvcmtlclNjcmlwdExv
YWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXb3JrbGV0R2xvYmFsU2Nv
cGUpOwogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtsZXRHbG9iYWxTY29wZSgpOwpAQCAtODAs
NiArODMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKICAgICBX
b3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgZmluYWwgeyByZXR1cm4gbV9zY3JpcHQu
Z2V0KCk7IH0KKyAgICBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVh
ZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1l
c3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFs
OwogCkBAIC04OSw3ICs5Myw2IEBAIHB1YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS4KLSAgICBUaHJlYWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzQ2xvc2luZzsgfQogCiAgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMDEsMTUgKzEwNCwxNSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGZldGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYsIEZldGNoUmVx
dWVzdENyZWRlbnRpYWxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpOwogCisgICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7IHJldHVy
biBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisKIHByb3RlY3RlZDoK
ICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKICAgICBX
b3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0U291cmNl
Q29kZSYmKTsKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoY29uc3QgV29ya2xldEdsb2JhbFNjb3Bl
JikgPSBkZWxldGU7CiAgICAgV29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYm
KSA9IGRlbGV0ZTsKIAotICAgIERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQotICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJsZURv
Y3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQotCiBwcml2YXRlOgog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiBpZGJDb25uZWN0aW9uUHJveHkoKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gbnVsbHB0cjsgfQpAQCAtMTMyLDYgKzEzNSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgUmVmUHRyPEluc3BlY3Rvcjo6U2Ny
aXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgbG9uZykgZmlu
YWw7CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwogCisgICAgLy8gV29ya2Vy
U2NyaXB0TG9hZGVyQ2xpZW50LgorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKKwogICAgIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8p
CkBAIC0xNDMsNiArMTUwLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVXZWJBc3NlbWJseShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAorICAgIHN0cnVjdCBTY3JpcHRGZXRjaEpvYiB7CisgICAgICAgIFVSTCBt
b2R1bGVVUkw7CisgICAgICAgIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzOwor
ICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+IGNv
bXBsZXRpb25IYW5kbGVyOworICAgIH07CisKKyAgICB2b2lkIHByb2Nlc3NOZXh0U2NyaXB0RmV0
Y2hKb2JJZk5lZWRlZCgpOworICAgIHZvaWQgZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihTY3Jp
cHRGZXRjaEpvYiYmLCBPcHRpb25hbDxFeGNlcHRpb24+KTsKKwogICAgIFdlYWtQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2xldFNjcmlwdENvbnRy
b2xsZXI+IG1fc2NyaXB0OwpAQCAtMTU1LDYgKzE3MSwxMCBAQCBwcml2YXRlOgogICAgIFVSTCBt
X3VybDsKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX2pzUnVudGltZUZsYWdzOwogICAgIE9wdGlv
bmFsPFNjcmlwdFNvdXJjZUNvZGU+IG1fY29kZTsKKworICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRM
b2FkZXI+IG1fc2NyaXB0TG9hZGVyOworICAgIERlcXVlPFNjcmlwdEZldGNoSm9iPiBtX3Njcmlw
dEZldGNoSm9iczsKKwogICAgIGJvb2wgbV9pc0Nsb3NpbmcgeyBmYWxzZSB9OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410365</attachid>
            <date>2020-10-02 13:56:10 -0700</date>
            <delta_ts>2020-10-02 17:42:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201002135609.patch</filename>
            <type>text/plain</type>
            <size>78579</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwOTE5ZWI0NWY3OWFh
NmUzMDJjNmJiNDdlMzc5ZmQ2OTYxZGQxYy4uNWI5ZTk3MDE2NDgwZWVmYzRiYjQ4M2M0ZjM1YTI5
MTFiMDQyMTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMC0xMC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIHRoZSBtb2R1bGUgc2NyaXB0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcyNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV29ya2xldC5hZGRN
b2R1bGUoKSB0byBhY3R1YWxseSBmZXRjaCB0aGUgbW9kdWxlIHNjcmlwdCBhcyBwZXI6CisgICAg
ICAgIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dvcmtsZXRzLTEvI2RvbS13b3JrbGV0LWFkZG1v
ZHVsZQorCisgICAgICAgIFRoZSBXb3JrbGV0R2xvYmFsU2NvcGUgbWFpbnRhaW5zIGEgcXVldWUg
YSBmZXRjaCByZXF1ZXN0cyAoYmFzaWNhbGx5IGEgVVJMIGFuZCBhIGNvbXBsZXRpb24gaGFuZGxl
cikgYW5kIHVzZXMKKyAgICAgICAgdGhlIGV4aXN0aW5nIFdvcmtlclNjcmlwdExvYWRlciB0byBw
cm9jZXNzIHRoZSByZXF1ZXN0cyBzZXJpYWxseS4gQmFzZWQgb24gdGhlIHJlc3VsdCBvbiB0aGUg
bG9hZCwgd2UgY2FsbCB0aGUKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXIgd2hpY2ggd2lsbCBj
YXVzZSB0aGUgV29ya2xldC5hZGRNb2R1bGUoKSBwcm9taXNlIHRvIGdldCByZXNvbHZlZCBvciBy
ZWplY3RlZC4KKworICAgICAgICBXZSBjdXJyZW50bHkgZG9uJ3QgcnVuIHRoZSBtb2R1bGUgc2Ny
aXB0IHlldCBvbmNlIGl0IGlzIGZpbmlzaGVkIGRvd25sb2FkaW5nLiBUaGlzIHdpbGwgYmUgZG9u
ZSBpbiBhIGZvbGxvdy11cAorICAgICAgICBwYXRjaCB0byByZWR1Y2UgcGF0Y2ggc2l6ZS4KKwor
ICAgICAgICBUZXN0OiB3ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUuaHRt
bAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5o
OgorICAgICAgICBQcm92aWRlIHdvcmtlck9yV29ya2xldFRocmVhZCgpIG92ZXJyaWRlIGZvciBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpLCB3aGljaCBpcyBhIHJlcGxhY2VtZW50CisgICAg
ICAgIGZvciB1bmRlcmx5aW5nVGhyZWFkKCkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eTo6cG9zdFRhc2tUb0xvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94
eS5oOgorICAgICAgICBVcGRhdGUgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgdG8gc3ViY2xh
c3MgV29ya2VyTG9hZGVyUHJveHkgc28gdGhhdCBBdWRpb1dvcmtsZXQgY2FuIHJldXNlCisgICAg
ICAgIFdvcmtlclNjcmlwdExvYWRlci4gV29ya2VyU2NyaXB0TG9hZGVyIHJlbGllcyBvbiBXb3Jr
ZXJMb2FkZXJQcm94eSB0byBkbyB0aHJlYWQgaG9wcGluZy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvV29ya2xldFRocmVhZDo6d29ya2VyTG9hZGVyUHJveHkpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dv
cmtsZXRUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIFN1YmNsYXNzIHRoZSBuZXcgV29ya2VyT3JX
b3JrbGV0VGhyZWFkIGludGVyZmFjZS4gV29ya2VyT3JXb3JrbGV0VGhyZWFkIGlzIGEgbmV3IGlu
dGVyZmFjZSB0aGF0CisgICAgICAgIHdhcyBhZGRpbmcgc28gdGhhdCBXb3JrZXJTY3JpcHRMb2Fk
ZXIgY2FuIGJlIHJldXNlZCBieSBBdWRpb1dvcmtsZXRzLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6
OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6UGVlcjo6ZGlkVXBncmFkZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZSk6CisgICAg
ICAgIFNpbXBsZSByZW5hbWluZy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om5vdGlmeUlzRG9uZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaFRpbWluZyk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIFVwZGF0ZSBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyIHNvIHRoYXQgaXQgY2FuIGJlIHJldXNlZCBieSBBdWRpb1dvcmtsZXRzLgor
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8ga2VlcCBidWls
ZGluZyBhZnRlciB1cGRhdGVzIHRvIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLgorCisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAg
ICAgICAgU2ltcGxlIHJlbmFtZXMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTo6Y3JlYXRlVW5pcXVlSWRlbnRpZmllcik6CisgICAgICAgIFVwZGF0ZSBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSB0byBhZGQgYSBmZXcgdGhpbmdzIFdvcmtlclNjcmlwdExvYWRlciBu
ZWVkZWQgdG8gd29yayB3aXRoCisgICAgICAgIGJvdGggV29ya2VycyBhbmQgV29ya2xldHMuCisK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oOiBBZGRlZC4KKyAgICAg
ICAgQWRkZWQgbmV3IHBhcmVudCBpbnRlcmZhY2UgZm9yIFdvcmtlclRocmVhZCBhbmQgQXVkaW9X
b3JrbGV0VGhyZWFkIHNvIHRoYXQgV29ya2VyU2NyaXB0TG9hZGVyCisgICAgICAgIGNhbiB3b3Jr
IGZvciBib3RoIFdvcmtlcnMgYW5kIFdvcmtsZXRzLgorCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MpOgor
ICAgICAgICBNaW5vciBjaGFuZ2VzIHRvIGtlZXAgYnVpbGRpbmcgYWZ0ZXIgY2hhbmdlcyB0byBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhy
ZWFkLmg6CisgICAgICAgIFN1YmNsYXNzIHRoZSBuZXcgV29ya2VyT3JXb3JrbGV0VGhyZWFkIGlu
dGVyZmFjZS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
Lmg6CisgICAgICAgIFNpbXBsZSByZW5hbWVzLgorCisgICAgICAgICogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNvcnJlY3RseSBpbml0
aWFsaXplIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoZSBXb3JrbGV0R2xvYmFsU2NvcGUuCisg
ICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgdXNpbmcgYSB1bmlxdWUgb3JpZ2luIHNvIGFsbCBz
Y3JpcHQgbG9hZHMgd291bGQgaGF2ZSBmYWlsZWQKKyAgICAgICAgd2l0aCBhIGNyb3NzLW9yaWdp
biBlcnJvci4KKworICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFu
ZEludm9rZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnBy
b2Nlc3NOZXh0U2NyaXB0RmV0Y2hKb2JJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtsZXRHbG9iYWxTY29wZTo6ZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYik6CisgICAgICAgICog
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
R2xvYmFsU2NvcGU6OnJlc3BvbnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2xldEdsb2JhbFNjb3BlOjpyZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgQWRk
IGltcGxlbWVudGF0aW9uIGZvciBtb2R1bGUgc2NyaXB0IGZldGNoaW5nIHVzaW5nIFdvcmtlclNj
cmlwdExvYWRlci4gVGhpcyBnZXRzIGNhbGxlZAorICAgICAgICB3aGVuIFdvcmtsZXQuYWRkTW9k
dWxlKCkgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKwogMjAyMC0xMC0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdHVicyBmb3IgQXVkaW9X
b3JrbGV0UHJvY2Vzc29yIGFuZCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggZWUwM2EzNDU4NTg2ODRjN2FiMDA0ZDM0YzkxYzZjY2JkZDMzZTZiZC4uNGRkNmU0
NGFmYzUxZmQwYjRlMWY4NWQ3YmI3MWM2Y2Y5ODlhMGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xNTIwLDYgKzE1MjAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgd29ya2Vycy9Xb3JrZXJBbmltYXRpb25Db250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dv
cmtlckRlYnVnZ2VyUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorICAg
IHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKICAgICB3b3JrZXJzL1dvcmtlclJ1bkxv
b3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlckNsaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDgxOGUyNGQx
ZTBiNjM5NzllOWMyNmYxMGJkZjk3YWZjYjM0NWUwYjIuLmI0N2M1OTczMjkxNDk4MzRjZmY5OGE5
ZTg4NTk0ODFlZGVmYjRlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKIAogI2luY2x1ZGUgIkF1
ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiQXVkaW9Xb3JrbGV0
VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTQsMTEgKzUzLDYgQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPEF1ZGlvV29ya2xldFAKICAg
ICBVTlVTRURfUEFSQU0obmFtZSk7CiB9CiAKLVRocmVhZCogQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGU6OnVuZGVybHlpbmdUaHJlYWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RocmVhZC0+dGhy
ZWFkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggM2E0MTA2MGJjNjJkM2NiMTQyYmYyMzZm
YWY3NzViNjA3ODY2ODBjOS4uNjFkYjYzNDQwYWU3NzgwYzBjZDhmYjkyOWQ2N2Y0ZTNkZjJkZDg5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUgIkF1ZGlvV29ya2xldFRocmVhZC5oIgog
I2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIDQ0MTAw
OyB9CiAKLSAgICBUaHJlYWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBmaW5hbDsKKyAgICBB
dWRpb1dvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGZpbmFsIHsgcmV0dXJu
IG1fdGhyZWFkLnB0cigpOyB9CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUoQXVkaW9Xb3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggZDQzNmMxYzg2MDFkZGY4NzY3NjU5NWZhZTEyNDM0
MDRjMTZiNWFiYS4uODE2MmU0MWFhZWU3N2MxNmUxZGMwYTYzYWRiZTM3MWYwMWQ2N2E0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJB
dWRpb1dvcmtsZXQuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkF1ZGlvV29ya2xldFRocmVhZC5oIgorI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKQEAgLTUzLDcgKzU0LDggQEAgc3RhdGljIFdvcmtsZXRQYXJhbWV0
ZXJzIGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogfQog
CiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHko
QXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQotICAgIDogbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xl
dFRocmVhZDo6Y3JlYXRlKGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMod29ya2xldCkpKQorICAg
IDogbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVudCgpKQorICAgICwgbV93b3JrbGV0VGhyZWFk
KEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0
ZXJzKHdvcmtsZXQpKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC02OCw2
ICs3MCwyMiBAQCBib29sIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1v
ZGVUb1dvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdQogICAgIHJldHVybiB0cnVlOwogfQog
CitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiB0YXNrKQoreworICAgIG1fZG9jdW1lbnQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQor
Citib29sIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
LCBjb25zdCBTdHJpbmcmIG1vZGUpCit7CisgICAgcmV0dXJuIHBvc3RUYXNrRm9yTW9kZVRvV29y
a2xldEdsb2JhbFNjb3BlKFdURk1vdmUodGFzayksIG1vZGUpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eS5oCmluZGV4IDc1ZmY0MTBmNTI4MjYwZmVjMDFiM2RjMTk3YmNjOTAyZTE2Y2YzZDIuLjlk
ZTg5YzY0MjJkMzA0OTFiNmVmMWE5MjNkNjJmMGFmYzMxZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5LmgKQEAgLTI5LDE0ICsyOSwxNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2xldEdsb2JhbFNjb3BlUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7CitjbGFzcyBEb2N1bWVudDsK
IAotY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMgV29ya2xldEdsb2Jh
bFNjb3BlUHJveHkgeworY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBwdWJsaWMg
V29ya2xldEdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eT4gY3JlYXRlKEF1
ZGlvV29ya2xldCYgd29ya2xldCkKICAgICB7CkBAIC01MSw4ICs1MywxNCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KEF1ZGlvV29y
a2xldCYpOwogCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCisgICAgUmVmUHRyPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKKyAg
ICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBm
aW5hbDsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZp
bmFsOworCiAgICAgYm9vbCBpc0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAg
IFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IG1fd29ya2xldFRocmVhZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNw
cAppbmRleCBjMjRlNjY0NjRlNTZkMzRjZWMyMDdjMmJiZGEwNGYyMWRhNGIyZWYyLi4wZWU1ZDUw
OWJkNmJjYzRhYzVjYTcyYzYyM2VjMDEyM2YwOTg2MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCkBAIC00Mywx
MSArNDMsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1dvcmtsZXRUaHJlYWQ6
OkF1ZGlvV29ya2xldFRocmVhZChjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykK
LSAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzLmlzb2xhdGVkQ29weSgpKQorQXVkaW9Xb3Jr
bGV0VGhyZWFkOjpBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkm
IG1lc3NhZ2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAg
ICA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgLCBtX3BhcmFtZXRlcnMo
cGFyYW1ldGVycy5pc29sYXRlZENvcHkoKSkKIHsKIH0KIAorQXVkaW9Xb3JrbGV0VGhyZWFkOjp+
QXVkaW9Xb3JrbGV0VGhyZWFkKCkgPSBkZWZhdWx0OworCiB2b2lkIEF1ZGlvV29ya2xldFRocmVh
ZDo6c3RhcnQoKQogewogICAgIGF1dG8gbG9jayA9IGhvbGRMb2NrKG1fdGhyZWFkQ3JlYXRpb25B
bmRXb3JrbGV0R2xvYmFsU2NvcGVMb2NrKTsKQEAgLTEyOSw2ICsxMzIsMTEgQEAgdm9pZCBBdWRp
b1dvcmtsZXRUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAgICAgbV9ydW5Mb29wLnJ1bihtX3dvcmts
ZXRHbG9iYWxTY29wZS5nZXQoKSk7CiB9CiAKK1dvcmtlckxvYWRlclByb3h5JiBBdWRpb1dvcmts
ZXRUaHJlYWQ6OndvcmtlckxvYWRlclByb3h5KCkKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdpbmdQ
cm94eS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvV29ya2xldFRocmVhZC5oCmluZGV4IDcyM2Y2YTg1MjM2YzE4Nzg3NjQ3MjZjNmI2M2Jk
YjAwNGE0MzE5NGYuLmU4MzllMWFmODNjNWFlNThmMzRiNDdiOGYyM2ZjNDkyODI0MWFjMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRU
aHJlYWQuaApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VC
X0FVRElPKQorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOSwyNSArNDAsMzAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU7CitjbGFzcyBBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eTsKIAotY2xhc3MgQXVkaW9Xb3JrbGV0VGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEF1ZGlvV29ya2xldFRocmVhZD4geworY2xhc3MgQXVkaW9Xb3JrbGV0VGhy
ZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvV29ya2xldFRocmVhZD4sIHB1
YmxpYyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVk
aW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCisgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNyZWF0ZShBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9X
b3JrbGV0VGhyZWFkKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9Xb3JrbGV0VGhyZWFkKG1lc3NhZ2luZ1Byb3h5LCBwYXJhbWV0ZXJzKSk7CiAgICAgfQor
ICAgIH5BdWRpb1dvcmtsZXRUaHJlYWQoKTsKIAogICAgIHZvaWQgc3RhcnQoKTsKIAotICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KLSAgICBUaHJlYWQq
IHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CisgICAgLy8gV29ya2Vy
T3JXb3JrbGV0VGhyZWFkLgorICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSBmaW5hbCB7IHJl
dHVybiBtX3J1bkxvb3A7IH0KKyAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJv
eHkoKSBmaW5hbDsKKyAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
dGhyZWFkLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXVkaW9Xb3JrbGV0VGhy
ZWFkKGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CisgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKEF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIAog
ICAgIHZvaWQgcnVuRXZlbnRMb29wKCk7CiAgICAgdm9pZCB3b3JrbGV0VGhyZWFkKCk7CiAKKyAg
ICBSZWY8QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk+IG1fbWVzc2FnaW5nUHJveHk7CiAgICAg
UmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgV29ya2VyUnVuTG9vcCBtX3J1bkxvb3A7CiAg
ICAgV29ya2xldFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMmRjOGUxNDIwNThhNmUyYmI3MWYyNWRmNDlmYzJh
ZGMzNDRhZDAxMS4uYWM1ZjBkM2NiY2Q0MDM4ZjI4ZDNhYjJjNTBlNTk4Mzc0ZGIyYzMwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChz
ZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0xODYsNyArMTg2
LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChj
b25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBt
X21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEsIDAsIGJpbmFyeURhdGEuYnl0
ZUxlbmd0aCgpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNl
bmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVz
dFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7
CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQog
ICAgICAgICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJl
c3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmlu
YXJ5RGF0YSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5k
UmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RS
ZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2Vy
Q2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjEwLDggKzIxMCw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgdW5zaWduZWQgYnVmZmVyZWRBbW91bnQgPSBtX21haW5XZWJTb2NrZXRD
aGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkp
OwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRCdWZmZXJlZEFtb3VudChidWZmZXJl
ZEFtb3VudCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yNjMsOCArMjYzLDggQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiAK
ICAgICBTdHJpbmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJwcm90
b2NvbCgpOwogICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
ZXh0ZW5zaW9ucygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
c3VicHJvdG9jb2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IGV4
dGVuc2lvbnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXIsIHN1YnByb3RvY29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4
dGVuc2lvbnMgPSBleHRlbnNpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNj
b3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTdWJwcm90b2NvbChzdWJw
cm90b2NvbCk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEV4dGVuc2lvbnMoZXh0
ZW5zaW9ucyk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENvbm5lY3QoKTsKQEAg
LTI3NSw4ICsyNzUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lcwogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29u
dGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBA
IC0yODUsOCArMjg1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3QKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFw
cGVyLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBl
ciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0
YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0sIG1f
dGFza01vZGUpOwogfQpAQCAtMjk1LDggKzI5NSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGJ1
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0zMDUs
OCArMzA1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGll
bnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTMxNiwxOCArMzE2LDE4IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2lnbmVk
IHVuaGFuZGxlZEJ1ZmZlcmVkCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX21h
aW5XZWJTb2NrZXRDaGFubmVsID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7Ci0gICAgICAgIH0s
IG1fdGFza01vZGUpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xv
YmFsU2NvcGUoKSk7CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVh
c29uKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5p
c1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
UmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMzM2LDgg
KzMzNiw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZFVwZ3JhZGVVUkwoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSwgbV90YXNr
TW9kZSk7CiB9CkBAIC0zNjEsMTAgKzM2MSwxMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQuaXNEb2N1bWVu
dCgpKTsKIAotICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoeworICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKICAgICAgICAgW2NsaWVudFdyYXBwZXIsICZs
b2FkZXJQcm94eSwgcGVlciA9IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVm
KCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYg
KGNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3
ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCiAg
ICAgICAgICAgICAgICAgbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IFdURk1v
dmUocGVlcildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwODBjYzg2
NTVhODkzM2IxZjZlZTIyYzQ5MzhkNTlmMmViMGUxYjM5Li40NjIzNDMzN2QyYWM4ZGQ0YjQyZjUw
NjljZDkzNTRiOGI4YTI1MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTUwLDYgKzI1NTAsNyBAQAogCQk4M0U4NjY4MDFG
QkE1NjVCMDA4ODU1QzUgLyogU2VydmljZVdvcmtlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTg2NjdEMUZCQTU2M0YwMDg4NTVDNSAvKiBT
ZXJ2aWNlV29ya2VyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTgzRUU1OThGMUY1MDk1OEUwMDNFOEIzMCAvKiBKU0Vycm9yQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRUU1OThC
MUY1MDk1OEIwMDNFOEIzMCAvKiBKU0Vycm9yQ2FsbGJhY2suaCAqLzsgfTsKIAkJODNGMjhDMDAy
NERCMURFMTAwNUJBNkY2IC8qIENvbnZvbHZlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjI4QkZEMjREQjFERDMwMDVCQTZGNiAvKiBD
b252b2x2ZXJPcHRpb25zLmggKi87IH07CisJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBX
b3JrZXJPcldvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzRTgyOEIyMjUyNzk0Q0QwMDI3RTBGNyAvKiBXb3JrZXJPcldvcmtsZXRU
aHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4M0ZCMzM3MTFGNTA4QTU0MDA5ODZFNTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCMzM2RDFG
NTA4QTRFMDA5ODZFNTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CiAJCTgz
RkIzMzczMUY1MDhBNTgwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRW50cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkIzMzZGMUY1MDhBNEUwMDk4NkU1
NCAvKiBGaWxlU3lzdGVtRW50cnkuaCAqLzsgfTsKIAkJODNGQjMzNzUxRjUwOEE1QjAwOTg2RTU0
IC8qIEZpbGVTeXN0ZW1GaWxlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzRkIzMzZDMUY1MDhBNEUwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRmls
ZUVudHJ5LmggKi87IH07CkBAIC0xMDc4Nyw2ICsxMDc4OCw3IEBACiAJCTgzRTA0NUVGMURBQTEw
NEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTVUlFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNF
MzU5QTAxQkIxMDMxRDAwMkNFQjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzRTM1OUExMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxUaW1l
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRTgyOEIyMjUyNzk0
Q0QwMDI3RTBGNyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzRTg2NjdEMUZCQTU2M0YwMDg4NTVDNSAvKiBTZXJ2aWNlV29ya2VyRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0U4NjY3RjFGQkE1NjQwMDA4ODU1QzUg
LyogU2VydmljZVdvcmtlckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODc1MCw2ICsxODc1Miw3IEBACiAJCQkJMkU0MzQ2M0YwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi8sCiAJCQkJODNENkFBRTQyNTI0
RUUxMzAwNDI4QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCiAJCQkJODM5
QTA5NUIyNTI0RjM3NjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
aCAqLywKKwkJCQk4M0U4MjhCMjI1Mjc5NENEMDAyN0UwRjcgLyogV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmggKi8sCiAJCQkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGlu
Z1Byb3h5LmggKi8sCiAJCQkJMkU0MzQ2NDAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxv
b3AuY3BwICovLAogCQkJCTJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29w
LmggKi8sCkBAIC0zNDY0OCw2ICszNDY1MSw3IEBACiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1
MjRFRTFDMDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJD
RDMgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFMjlB
NjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCBjN2UwZjMxYmU3MjA2ZmVmOGRhYWQxODQ2MWU0ZjVhMjRiYmY3ZDYyLi4y
NzE3Yzg2MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxT
Y29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMiwxMCArMTAzLDE2IEBAIFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENv
cHkoKSBjb25zdAogCiBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQogewotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMsIFdURk1vdmUocmVmZXJyZXIpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25j
YXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkp
KQorICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJj4oY29udGV4dCksIGNsaWVudCwgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92
ZShyZWZlcnJlcikpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICBp
ZiAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgZG9jdW1lbnQgPSBk
b3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlc3BvbnNpYmxlRG9jdW1lbnQo
KTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50ID0gJmRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KTsKIAotICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3du
Y2FzdDxEb2N1bWVudD4oY29udGV4dCksIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgV1RGTW92ZShyZWZlcnJlcikpOworICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSgqZG9jdW1lbnQsIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywg
V1RGTW92ZShyZWZlcnJlcikpOwogfQogCiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA2ZjgyODczMzliNGZjNWQw
MGI3ZGJhNTAzODMwNTQ1NDZlYmE4YjE1Li5lMTEzOTZiZmQ4MzM2ZTNlODY3NGE0OWNiNWM4MTg0
YmYxNTgwYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC00MywxOSArNDMsMjAgQEAKICNpbmNsdWRlICJSZXNvdXJjZVRpbWlu
Zy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKLSAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCitXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcikKKyAgICA6IG1fV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlh
dG9yKSkKLSAgICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVu
dFdyYXBwZXIuZ2V0KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclBy
b3h5KCksIHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0Vt
cHR5KCkgPyB3b3JrZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIo
KSA6IHJlZmVycmVyLCB3b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1h
aW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHko
KSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVyLmlzRW1wdHko
KSA/IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpIDogcmVmZXJyZXIsIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKIHsKIH0KIApA
QCAtNjQsMTcgKzY1LDE3IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6On5Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyKCkKICAgICBtX2JyaWRnZS5kZXN0cm95KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29w
KCk7CisgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICAvLyBDcmVhdGUg
YSB1bmlxdWUgbW9kZSBqdXN0IGZvciB0aGlzIHN5bmNocm9ub3VzIHJlc291cmNlIGxvYWQuCiAg
ICAgU3RyaW5nIG1vZGUgPSBtYWtlU3RyaW5nKCJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9k
ZSIsIHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7CiAKLSAgICBhdXRvIGxvYWRlciA9IFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2Rl
LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBsb2FkZXIg
PSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUsIGNsaWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwog
ICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJl
Y2VpdmVkOwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VR
dWV1ZVRlcm1pbmF0ZWQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3Jr
ZXJHbG9iYWxTY29wZSwgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2Rl
KCZ3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgbW9kZSk7CiAKICAgICBpZiAoIWxvYWRlci0+
ZG9uZSgpICYmIHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICBsb2Fk
ZXItPmNhbmNlbCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIExvYWRlclRhc2tPcHRpb25zOjpMb2Fk
ZXJUYXNrT3B0aW9ucyhjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29u
CiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJl
YWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImIHdvcmtlckNsaWVudFdyYXBw
ZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiB0YXNrTW9k
ZSwKLSAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJH
bG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCisgICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0
Z29pbmdSZWZlcnJlciwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlKQog
ICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKCZ3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwg
bV9sb2FkZXJQcm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUuaXNv
bGF0ZWRDb3B5KCkpCkBAIC0xMzEsMTIgKzEzMiwxMyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGll
bgogICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRleHQgPSBJbml0aWF0b3JD
b250ZXh0OjpXb3JrZXI7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgb3B0aW9u
c0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gZ2xvYmFsU2NvcGUuaXNTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoKSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VX
b3JrZXJzTW9kZTo6QWxsOworICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJz
TW9kZSA9IGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpID8gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7CiAgICAgaWYgKGF1
dG8qIGFjdGl2ZVNlcnZpY2VXb3JrZXIgPSBnbG9iYWxTY29wZS5hY3RpdmVTZXJ2aWNlV29ya2Vy
KCkpCiAgICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmll
cigpOwogI2VuZGlmCiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVx
dWVzdChnbG9iYWxTY29wZSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7Cisg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkpCisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3Qp
OwogCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUg
dG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRl
ZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0yMDAsNyArMjAyLDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjb21wdXRlSXNEb25l
KCkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpub3Rp
ZnlJc0RvbmUoYm9vbCBpc0RvbmUpCiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgaXNEb25lXShhdXRvJikgeworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBl
ciksIGlzRG9uZV0oYXV0byYpIHsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ci0+bm90aWZ5SXNEb25lKGlzRG9uZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yMTIs
MTkgKzIxNCwyMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6OmNsZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBt
YWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0Jl
U2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8
IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50
KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIs
IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
ID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBpZGVudGlmaWVyLCByZXNwb25zZURhdGEg
PSByZXNwb25zZS5jcm9zc1RocmVhZERhdGEoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byBy
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9zc1RocmVhZERhdGEoV1RGTW92ZShy
ZXNwb25zZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25z
ZSk7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIHJlc3BvbnNlKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjMyLDQzICsy
MzUsNDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLAogewogICAgIFZlY3RvcjxjaGFyPiBidWZm
ZXIoZGF0YUxlbmd0aCk7CiAgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCksIGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50
V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigq
bV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtl
clJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7
CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBtX2xvYWRpbmdGaW5pc2hlZCA9IHRy
dWU7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRX
cmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlm
aWVyLCBuZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENv
cHkoKSwgaWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50
V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciwgbmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRD
b3B5KCksIGlkZW50aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNv
bnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Ci0gICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIs
IG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBtX2xvYWRpbmdGaW5pc2hlZCA9IHRydWU7Ci0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwg
d29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJv
ciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCBlcnJvciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwog
ICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVj
dGVkV29ya2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihj
b250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tN
b2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQog
ewogICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gcmVzb3VyY2VUaW1pbmcubmV0d29ya0xvYWRN
ZXRyaWNzKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJD
bGllbnRXcmFwcGVyKSwgcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZVRpbWluZy5pc29sYXRlZENv
cHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAg
ICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHJl
c291cmNlVGltaW5nID0gcmVzb3VyY2VUaW1pbmcuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7
CiAgICAgICAgIEFTU0VSVCghcmVzb3VyY2VUaW1pbmcuaW5pdGlhdG9yKCkuaXNFbXB0eSgpKTsK
IAogICAgICAgICAvLyBObyBuZWVkIHRvIG5vdGlmeSBjbGllbnRzLCBqdXN0IGFkZCB0aGUgcGVy
Zm9ybWFuY2UgdGltaW5nIGVudHJ5LgotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkucGVyZm9ybWFuY2UoKS5hZGRSZXNvdXJjZVRpbWluZyhXVEZNb3ZlKHJlc291
cmNlVGltaW5nKSk7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkp
CisgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkucGVyZm9y
bWFuY2UoKS5hZGRSZXNvdXJjZVRpbWluZyhXVEZNb3ZlKHJlc291cmNlVGltaW5nKSk7CiAgICAg
fSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCmluZGV4IGJhYzI1MmE1N2E0ZTAxYzliNjAzM2I5YmJkYTA2M2VjNTMw
NThmYzAuLjI0NDRmZGEzYWFhMzgyNDQ2N2FkNDcwNDYyMjBmZTIxNTBiMDM3YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtNDIsMTYg
KzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwog
ICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLSAg
ICBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZTsKICAgICBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIAogICAgIGNsYXNzIFdvcmtl
clRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2FkZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7Ci0gICAg
ICAgIHN0YXRpYyBSZWY8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFdvcmtlckdsb2Jh
bFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJl
cikKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGlj
IFJlZjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2Rl
LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlcikpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSwgY2xpZW50LCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywg
cmVmZXJyZXIpKTsKICAgICAgICAgfQogCiAgICAgICAgIH5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
KCk7CkBAIC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8KICAg
ICAgICAgLy8gY2FzZSAxLiB3b3JrZXIudGVybWluYXRlIGlzIGNhbGxlZC4KICAgICAgICAgLy8g
ICAgSW4gdGhpcyBjYXNlLCBubyBtb3JlIHRhc2tzIGFyZSBwb3N0ZWQgZnJvbSB0aGUgd29ya2Vy
IG9iamVjdCdzIHRocmVhZCB0byB0aGUgd29ya2VyCi0gICAgICAgIC8vICAgIGNvbnRleHQncyB0
aHJlYWQgLS0gV29ya2VyR2xvYmFsU2NvcGVQcm94eSBpbXBsZW1lbnRhdGlvbiBlbmZvcmNlcyB0
aGlzLgorICAgICAgICAvLyAgICBjb250ZXh0J3MgdGhyZWFkIC0tIFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlUHJveHkgaW1wbGVtZW50YXRpb24gZW5mb3JjZXMgdGhpcy4KICAgICAgICAgLy8K
ICAgICAgICAgLy8gY2FzZSAyLiB4aHIgZ2V0cyBhYm9ydGVkIGFuZCB0aGUgd29ya2VyIGNvbnRl
eHQgY29udGludWVzIHJ1bm5pbmcuCiAgICAgICAgIC8vICAgIFRoZSBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50V3JhcHBlciBoYXMgdGhlIHVuZGVybHlpbmcgY2xpZW50IGNsZWFyZWQsIHNvIG5vIG1v
cmUgY2FsbHMKQEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
bGFzcyBNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewog
ICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtl
ciBjb250ZXh0J3MgdGhyZWFkLgotICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiwgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYp
OworICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5n
JiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgICAg
ICAgICAgdm9pZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogICAgICAg
ICAgICAgdm9pZCBjb21wdXRlSXNEb25lKCk7CkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7CiAgICAgICAgIH07CiAKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihX
b3JrZXJHbG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBTdHJpbmcm
IHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQm
LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgICAgICB2
b2lkIGNvbXB1dGVJc0RvbmUoKSBmaW5hbDsKIAotICAgICAgICBSZWY8V29ya2VyR2xvYmFsU2Nv
cGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CisgICAgICAgIFJlZjxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZT4gbV9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKICAgICAgICAgUmVmPFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CiAgICAgICAg
IE1haW5UaHJlYWRCcmlkZ2UmIG1fYnJpZGdlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDFmZTkzOTg3ZWY5NjFmZGZiZTM4ZjQ3
Y2E2NzFhZjVmZGE5OGQ5ZGYuLjdkOTc4M2Q5MTMwZDY2YzI3NWFhZGI2MmM0NDE2OWM4NjhkZDdj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRD
YWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDQ4LDcg
KzQ0Nyw3IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90CiAgICAgbV90aHJlYWQud29ya2VyTG9h
ZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIsIGtleSwgd3JhcHBl
ZEtleUNvbnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtl
UmVmKGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQ
cm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgcmVz
dWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQud3JhcENyeXB0b0tleShrZXksIHdyYXBw
ZWRLZXlDb250YWluZXItPmJ1ZmZlcigpKSk7CiAgICAgICAgIGRvbmVDb250YWluZXItPnNldEJv
b2xlYW4odHJ1ZSk7Ci0gICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CiAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwog
ICAgIH0pOwpAQCAtNDcxLDcgKzQ3MCw3IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OnVud3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvCiAgICAg
bV90aHJlYWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250
YWluZXIsIHdyYXBwZWRLZXksIGtleUNvbnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVz
c2FnaW5nUHJveHkgPSBtYWtlUmVmKGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3Ro
cmVhZC53b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQudW53cmFw
Q3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKICAgICAgICAg
ZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKLSAgICAgICAgd29ya2VyTWVzc2FnaW5n
UHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgfSk7CkBAIC01NDQsOSArNTQzLDQgQEAgUmVmZXJyZXJQ
b2xpY3kgV29ya2VyR2xvYmFsU2NvcGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1
cm4gbV9yZWZlcnJlclBvbGljeTsKIH0KIAotVGhyZWFkKiBXb3JrZXJHbG9iYWxTY29wZTo6dW5k
ZXJseWluZ1RocmVhZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGhyZWFkLnRocmVhZCgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKaW5kZXggOTBkZjNiNmFmM2Q2M2VjNjFhZWM5YTEyM2MwODc3ZTc5ZTM0
YjI2Ny4uN2NlZTRjMWNlNTZjM2MzZjVkYWE5OGYwYmMxN2YxNjgxMjkwNzE0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIApAQCAtNTMsNyAr
NTQsNiBAQCBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgV29ya2VyTG9j
YXRpb247CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiBjbGFzcyBXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb247Ci1jbGFzcyBXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAog
bmFtZXNwYWNlIElEQkNsaWVudCB7CkBAIC05MSwxMCArOTEsOSBAQCBwdWJsaWM6CiAKICAgICBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyBy
ZXR1cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQogCisgICAgV29ya2VyVGhyZWFkKiB3b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKSBmaW5hbCB7IHJldHVybiAmbV90aHJlYWQ7IH0KICAgICBXb3Jr
ZXJUaHJlYWQmIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkOyB9CiAKLSAgICBUaHJl
YWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBmaW5hbDsKLQogICAgIHVzaW5nIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6Omhhc1BlbmRpbmdBY3Rpdml0eTsKIAogICAgIHZvaWQgcG9zdFRhc2so
VGFzayYmKSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBh
c3luY2hyb25vdXNseS4KQEAgLTEzOCw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVh
dGVJbWFnZUJpdG1hcChJbWFnZUJpdG1hcDo6U291cmNlJiYsIEltYWdlQml0bWFwT3B0aW9ucyYm
LCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQml0bWFwKElt
YWdlQml0bWFwOjpTb3VyY2UmJiwgaW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBJbWFn
ZUJpdG1hcE9wdGlvbnMmJiwgSW1hZ2VCaXRtYXA6OlByb21pc2UmJik7CiAKLSAgICB1bnNpZ25l
ZCBsb25nIGNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZp
ZXIrKzsgfQotCiAgICAgQ1NTVmFsdWVQb29sJiBjc3NWYWx1ZVBvb2woKTsKIAogICAgIFJlZmVy
cmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgZmluYWw7CkBAIC0yMjEsNyArMjE4LDYg
QEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBt
X2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwotICAg
IHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBSZWZQdHI8V29ya2VyU1dDbGllbnRDb25uZWN0aW9uPiBtX3N3Q2xp
ZW50Q29ubmVjdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2FkZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2Fk
ZXJQcm94eS5oCmluZGV4IDYxNTMxZWQ0MDg2NGIzOGFjYjk5Y2MwNjc1N2JmYzExMTIzZDhkODcu
LmVlNjQ2OWQ1ZDYxNGUzYWQ4MjdhMjI1MzNjZGMwZjRhNDkyMmE1MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIC8vIENyZWF0ZXMgYSBjYWNoZSBzdG9yYWdlIGNvbm5lY3Rpb24g
dG8gYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ldGhvZCBtdXN0IGJlIGNhbGxlZCBvbiB0
aGUgbWFpbiB0aHJlYWQuCi0gICAgdmlydHVhbCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4g
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAw
OwogCiAgICAgLy8gUG9zdHMgYSB0YXNrIHRvIHRoZSB0aHJlYWQgd2hpY2ggcnVucyB0aGUgbG9h
ZGluZyBjb2RlIChub3JtYWxseSwgdGhlIG1haW4gdGhyZWFkKS4KICAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpID0gMDsKQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIC8vIFBvc3RzIGNhbGxiYWNrcyBmcm9tIGxvYWRp
bmcgY29kZSB0byB0aGUgV29ya2VyR2xvYmFsU2NvcGUuIFRoZSAnbW9kZScgaXMgdXNlZCB0byBk
aWZmZXJlbnRpYXRlCiAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMgbG9hZGluZyByZXF1ZXN0
cyBzbyB0aGV5IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSB0YXNrIHdhcyBwb3N0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgYm9vbCBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKaW5kZXggYzQyMTJiMjY1ODI5N2IzZTQxM2ExMmQ1NTVhOTgyZmI4NzY1MDVjYi4u
YTYxYjQxNDg2MzNiZGYyMGQ1MmJlNTc2NGRhOWI1NTRlMTYxMGQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTE1MywxNCArMTUz
LDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KIAotUmVmPENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24+IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCkKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKICAgICByZXR1cm4gZG9jdW1lbnQucGFnZSgpLT5jYWNoZVN0b3Jh
Z2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAotYm9vbCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQor
Ym9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3Qg
U3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAppbmRleCBlNzgxMjI3ZmVkYmFiN2VlMjVkZWNiY2FiMWY3YjkyY2JhOTExZTE3Li4zYmI0
ZDlkODE1YTIwOTE0YWQ5ZjI1YjM0YTg3Y2E5MWUxYzg1YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFdvcmtlckxvYWRlclByb3h5LgogICAgIC8v
IFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gdGhlIG1haW4gdGhyZWFkIHRvIHBvc3QgdGFzayBiYWNr
IHRvIHRoZSB3b3JrZXIgdGhyZWFkLgotICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYg
bW9kZSkgZmluYWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBt
b2RlKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS4KQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAvLyByZXF1
ZXN0cyBhbmQgdG8gc2VuZCBjYWxsYmFja3MgYmFjayB0byBXb3JrZXJHbG9iYWxTY29wZS4KICAg
ICBib29sIGlzV29ya2VyTWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJikgZmluYWw7Ci0gICAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogCiAgICAgdm9pZCB3
b3JrZXJUaHJlYWRDcmVhdGVkKERlZGljYXRlZFdvcmtlclRocmVhZCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXgg
NjU0OGUwODQ4YmUzNTIyYjZhZDljMzI4NTMzOTc0NmM3YzM5NzQyOC4uODIwOWZjNTdhNTVmZTY5
ZTY3OTZjMDAyZjM0MDZiMzA0NmQ5ZjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjYsMjEgKzI2LDI0IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0KLW5hbWVzcGFjZSBXVEYg
ewotY2xhc3MgVGhyZWFkOwotfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CitjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ7
CisKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBXVEY6OlRocmVhZCogdW5kZXJseWlu
Z1RocmVhZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDbG9zaW5nKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlciogc2NyaXB0
KCkgPSAwOworICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmts
ZXRUaHJlYWQoKSA9IDA7CisKKyAgICB1bnNpZ25lZCBsb25nIGNyZWF0ZVVuaXF1ZUlkZW50aWZp
ZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXIrKzsgfQorCitwcml2YXRlOgorICAgIHVu
c2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjIwZGZjNGVjZGUzNGFjYmQ0NzE1ZjVlOGNmMTUwYjA4Njg0YTky
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0VGhyZWFkLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFRocmVhZDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrZXJMb2FkZXJQ
cm94eTsKK2NsYXNzIFdvcmtlclJ1bkxvb3A7CisKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVh
ZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtl
ckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4
IGJiNjFmYzVmMmE5N2RiODRiMTEzYmUyMjNjN2E3YWRjNzE5YjQ5NDQuLjZiNzA5NWQyNTdhNWYy
MmRmZDk0ZWRiMjM2MjhiZDgxOWRjZGVhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQg
V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250
CiBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgTW9kZVByZWRpY2F0ZSYgcHJlZGlj
YXRlLCBXYWl0TW9kZSB3YWl0TW9kZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAgQVNT
RVJUKGNvbnRleHQtPnVuZGVybHlpbmdUaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
ICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+dGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90
aWZpY2F0aW9uQ2FsbGJhY2sgdGltZXJBZGRlZFRhc2sgPSBXVEY6OmNyZWF0ZVNoYXJlZFRhc2s8
SlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25UeXBlPihbdGhpc10gewogICAg
ICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyBoZXJlLCB3ZSBqdXN0IHdhbnQg
dG8gbG9vcCBhcm91bmQgcnVuSW5Nb2RlCkBAIC0yMjYsNyArMjI2LDcgQEAgTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUqIGNvbnQKIHZvaWQgV29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAg
ICBBU1NFUlQoY29udGV4dC0+dW5kZXJseWluZ1RocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CisgICAgQVNTRVJUKGNvbnRleHQtPndvcmtlck9yV29ya2xldFRocmVhZCgpLT50aHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX21lc3NhZ2VRdWV1ZS5raWxs
ZWQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKaW5kZXggZDc3NjMzYzA1NDZmNDNkZWRmZDVhMDRjNmU0NDNhODlmOTkwZjIzZi4uNjI0
NGIzY2MwMDgxY2I2MDVhMTdmNmQ0OWFlMjg0NjJlNzY4NDE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgorI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxtZW1vcnk+
CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJQYXJhbWV0ZXJzIGlzb2xhdGVk
Q29weSgpIGNvbnN0OwogfTsKIAotY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4geworY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4sIHB1YmxpYyBXb3JrZXJPcldvcmts
ZXRUaHJlYWQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCkBAIC04
Nyw5ICs4OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3Vt
ZSgpOwogCi0gICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQotICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0K
LSAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlckxvYWRlclByb3h5OyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQorICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3Ao
KSBmaW5hbCB7IHJldHVybiBtX3J1bkxvb3A7IH0KKyAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29y
a2VyTG9hZGVyUHJveHkoKSBmaW5hbCB7IHJldHVybiBtX3dvcmtlckxvYWRlclByb3h5OyB9CiAg
ICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IHsgcmV0
dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQogICAgIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3
b3JrZXJSZXBvcnRpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyUmVwb3J0aW5nUHJv
eHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYjc3ZjM3
NDUyYmMwNjVlZWFkM2ZmYmY2NDJkNDFmOGEzMTUxY2RlMi4uZTE1MjNkYTkyNGQ3MzM5ZjUwOTQ2
YjRmMTEyMDIwMmY2MmZkZTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojp+U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygp
LnJlbW92ZSh0aGlzKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jvb2wgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
aWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTU4LDEyICsxNTgsMTIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBkaXMKICAgICB9KTsgICAK
IH0KIAotUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKQogICAgICAgICBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24gPSBt
X2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKLSAg
ICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICByZXR1cm4gbV9jYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYg
Y2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25s
aW5lKQogICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW2lzT25saW5lXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIHBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUuc2V0SXNPbmxp
bmUoaXNPbmxpbmUpOwogICAgICAgICBnbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUgPSBtYWtlUmVmKGdsb2Jh
bFNjb3BlKSwgaXNPbmxpbmVdIHsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNv
bm5lY3RpbwogCiAgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaFRhc2tzLmNvbnRhaW5zKGtleSkp
OwogICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGtleSwgY2xpZW50LmNvcHlSZWYoKSk7Ci0g
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCBy
ZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29s
YXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCldKGF1dG8mKSBtdXRh
YmxlIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJl
ciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENv
cHkoKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVG
ZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICB9LCBXb3Jr
ZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2VsRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aQogICAgIGlmIChtX29uZ29pbmdGZXRjaFRhc2tzLmlzRW1wdHkoKSkK
ICAgICAgICAgdGhyZWFkKCkuc3RvcEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiAKLSAgICBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtjbGllbnQgPSBjbGllbnQucmVsZWFzZU5v
bk51bGwoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbY2xpZW50ID0gY2xpZW50LnJlbGVhc2VOb25O
dWxsKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGllbnQtPmNhbmNl
bCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQpAQCAtMjMzLDcg
KzIzMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvCiAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW2Ns
aWVudCA9IG1ha2VSZWYoKmNsaWVudCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2NsaWVudCA9IG1h
a2VSZWYoKmNsaWVudCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGll
bnQtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6
ZGVmYXVsdE1vZGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4
IDg1NDVlODRjYjU4NmU0NGFiOWM3OTQxNWUwMGQ2YjZlMzYwNzNiOGYuLjFkNDcyZWYwZTc2MjA5
ODU4M2YzMzM5NmJhMzI5YmMwMjQ3MjRkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oCkBAIC04NSw5ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKTsKIAogICAgIC8vIFdv
cmtlckxvYWRlclByb3h5Ci0gICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNj
b3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBm
aW5hbDsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZp
bmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYpIGZpbmFsOwotICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CisgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKIAogICAgIC8vIFdv
cmtlckRlYnVnZ2VyUHJveHkKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9EZWJ1Z2dlcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IDFkZjNiMjk3NzBmN2Y5MWVlZjFlNjZiMjUwOTcwYzMxZjJiNDNmZTAu
LjgwMTQzOGMyN2EyZDJlZGU0ZTQ4Yjc3ZjUxOTA1NjA5YzE4NzAyYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRM
b2FkZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgpAQCAtNTQsNyArNTUsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IGFsbFdvcmtsZXRHbG9iYWxTY29wZXNTZXQoKS5hZGQodGhpcyk7CiAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdCk7CiAKLSAgICBzZXRTZWN1cml0eU9yaWdpblBvbGlj
eShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOwor
ICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRoaXMt
PnVybCgpIH0sICp0aGlzKSk7CiB9CiAKQEAgLTcxLDcgKzcyLDcgQEAgV29ya2xldEdsb2JhbFNj
b3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8SlNDOjpWTT4m
JiB2bSwgU2MKIAogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCi0gICAgc2V0U2VjdXJp
dHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5j
b3B5UmVmKCkpKTsKKyAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBv
bGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+dXJsKCkpKSk7CiAgICAg
c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwogfQogCkBAIC0xODMsMTEgKzE4NCw2MSBA
QCBSZWZlcnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZmVycmVyUG9saWN5KCkgY29u
c3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI7CiB9CiAKLXZvaWQgV29y
a2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmLCBGZXRjaFJl
cXVlc3RDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmZl
dGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFscyBjcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNl
cHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwotICAgIC8vIEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24uCi0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBtX3NjcmlwdEZldGNoSm9icy5hcHBlbmQoeyBt
b2R1bGVVUkwsIGNyZWRlbnRpYWxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKKyAg
ICBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKTsKK30KKwordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0U2NyaXB0RmV0Y2hKb2JJZk5lZWRlZCgpCit7CisgICAg
aWYgKG1fc2NyaXB0RmV0Y2hKb2JzLmlzRW1wdHkoKSB8fCBtX3NjcmlwdExvYWRlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgc2NyaXB0RmV0Y2hKb2IgPSBtX3NjcmlwdEZldGNoSm9i
cy5maXJzdCgpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBzY3JpcHRGZXRjaEpv
Yi5tb2R1bGVVUkwgfTsKKworICAgIEZldGNoT3B0aW9ucyBmZXRjaE9wdGlvbnM7CisgICAgZmV0
Y2hPcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CisgICAgZmV0
Y2hPcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDsKKyAgICBmZXRj
aE9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpGb2xsb3c7CisgICAg
ZmV0Y2hPcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6V29y
a2VyOworICAgIGZldGNoT3B0aW9ucy5jcmVkZW50aWFscyA9IHNjcmlwdEZldGNoSm9iLmNyZWRl
bnRpYWxzOworCisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpID8gQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50OjpFbmZvcmNlQ2hpbGRTcmNEaXJlY3RpdmU7CisKKyAgICBtX3NjcmlwdExv
YWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7CisgICAgbV9zY3JpcHRMb2FkZXIt
PmxvYWRBc3luY2hyb25vdXNseSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShmZXRj
aE9wdGlvbnMpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtl
cnNNb2RlOjpBbGwsICp0aGlzKTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3sK
K30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlzaGVkKCkKK3sKKyAgICBh
dXRvIGNvbXBsZXRlZEpvYiA9IG1fc2NyaXB0RmV0Y2hKb2JzLnRha2VGaXJzdCgpOworCisgICAg
aWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkgeworICAgICAgICBkaWRDb21wbGV0ZVNjcmlw
dEZldGNoSm9iKFdURk1vdmUoY29tcGxldGVkSm9iKSwgRXhjZXB0aW9uIHsgTmV0d29ya0Vycm9y
LCBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlLCBlcnJvcjogIiwgbV9zY3JpcHRM
b2FkZXItPmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBtb2R1bGUgc2NyaXB0LgorICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNy
dW4tYS1tb2R1bGUtc2NyaXB0CisKKyAgICBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFdURk1v
dmUoY29tcGxldGVkSm9iKSwgeyB9KTsKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmRp
ZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoU2NyaXB0RmV0Y2hKb2ImJiBqb2IsIE9wdGlvbmFsPEV4
Y2VwdGlvbj4gcmVzdWx0KQoreworICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0cjsKKworICAg
IGpvYi5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworCisgICAgcHJvY2Vzc05l
eHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggNjQ2
YWQwNmExNGExNjMzODg5NmFmYzg0MTAwMzE4NzNkYjM3NDZjMi4uMWJkOGI0YWEzOTVjYzYyYjEw
NTgxNzQ2YTJlNTM0Mjg4NTJiYzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmgKQEAgLTM0LDEwICszNCwxMiBAQAogI2luY2x1ZGUgIlNjcmlwdFNv
dXJjZUNvZGUuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQ3LDEz
ICs0OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91
cDsKIGNsYXNzIFdvcmtlckV2ZW50TG9vcDsKK2NsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKIAog
c3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzOwogCiBlbnVtIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50
aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgPSBPYmpl
Y3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlPjsKIAotY2xhc3Mg
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xldEdsb2JhbFNjb3Bl
PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSB7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291
bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBwdWJsaWMgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdvcmtsZXRHbG9iYWxT
Y29wZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNjb3BlKCk7CkBAIC04
MCw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogICAg
IFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBmaW5hbCB7IHJldHVybiBtX3Njcmlw
dC5nZXQoKTsgfQorICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhy
ZWFkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJikgZmlu
YWw7CiAKQEAgLTg5LDcgKzkzLDYgQEAgcHVibGljOgogICAgIFNvY2tldFByb3ZpZGVyKiBzb2Nr
ZXRQcm92aWRlcigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlLgotICAgIFRocmVhZCogdW5kZXJseWluZ1RocmVhZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBib29sIGlzQ2xvc2luZygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9CiAKICAgICBib29sIGlzQ29udGV4dFRocmVh
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTEwMSwxNSArMTA0LDE1IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZmV0Y2hBbmRJbnZva2VTY3JpcHQoY29uc3QgVVJMJiwgRmV0Y2hS
ZXF1ZXN0Q3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJik7CiAKKyAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIHsgcmV0
dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2libGVE
b2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKwogcHJvdGVjdGVk
OgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwogICAg
IFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFJlZjxKU0M6OlZNPiYmLCBTY3JpcHRTb3Vy
Y2VDb2RlJiYpOwogICAgIFdvcmtsZXRHbG9iYWxTY29wZShjb25zdCBXb3JrbGV0R2xvYmFsU2Nv
cGUmKSA9IGRlbGV0ZTsKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xldEdsb2JhbFNjb3Bl
JiYpID0gZGVsZXRlOwogCi0gICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7IHJl
dHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0gICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNpYmxl
RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0KIHByaXZhdGU6
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSgpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiBudWxscHRyOyB9CkBAIC0xMzIsNiArMTM1LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBsb25nKSBm
aW5hbDsKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7CiAKKyAgICAvLyBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQuCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAg
dm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOworCiAgICAgRXZlbnRUYXJnZXQqIGVycm9yRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBU
TykKQEAgLTE0Myw2ICsxNTAsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVFdmFsKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogCisgICAgc3RydWN0IFNjcmlwdEZldGNoSm9iIHsKKyAgICAgICAgVVJM
IG1vZHVsZVVSTDsKKyAgICAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7
CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vzc05leHRTY3JpcHRG
ZXRjaEpvYklmTmVlZGVkKCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFNj
cmlwdEZldGNoSm9iJiYsIE9wdGlvbmFsPEV4Y2VwdGlvbj4pOworCiAgICAgV2Vha1B0cjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcj4gbV9zY3JpcHQ7CkBAIC0xNTUsNiArMTcxLDEwIEBAIHByaXZhdGU6CiAgICAgVVJM
IG1fdXJsOwogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAgICAgT3B0
aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOworCisgICAgUmVmUHRyPFdvcmtlclNjcmlw
dExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7CisgICAgRGVxdWU8U2NyaXB0RmV0Y2hKb2I+IG1fc2Ny
aXB0RmV0Y2hKb2JzOworCiAgICAgYm9vbCBtX2lzQ2xvc2luZyB7IGZhbHNlIH07CiB9OwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNThkZjFiMWM2ZjVjNDIzZjhlNTJkYTA4YTQzZDE3ZTE1NDc5ZmVlOC4uMzJiZWEwZDQy
ZDFmZGYyYzViNmU0MTlhNmU5NDRjNjU1OTM3ZGI0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIwLTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBk
YXRlIFdvcmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggdGhlIG1vZHVsZSBzY3Jp
cHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzI0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvd29ya2xldC1h
ZGRNb2R1bGUtZmFpbHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlv
L2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sOiBBZGRlZC4KKwogMjAyMC0wOS0z
MCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgbm9u
LWFuaW1hdGVkIHN1cHBvcnQgZm9yIHRoZSBDU1MgdHJhbnNsYXRlIHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVs
ZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzc0NzFlNzJlZjg5MDgxNjkzYTNj
ODBjY2Q2YmNmNmExNjRhMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW93b3JrbGV0LWFkZE1vZHVsZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDExIEBACitUZXN0cyB0aGF0IEF1ZGlvV29ya2xldC5hZGRNb2R1bGUoKSByZWplY3RzIHRoZSBw
cm9taXNlIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoaW52YWxpZFVSTCk7
IHJlamVjdGVkIHByb21pc2UgIHdpdGggU3ludGF4RXJyb3I6IE1vZHVsZSBVUkwgaXMgaW52YWxp
ZC4KK1BBU1MgY29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxlKCdkb2Vzbm90RXhpc3QuanMn
KTsgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBOZXR3b3JrRXJyb3I6IEZhaWxlZCB0byBmZXRjaCBt
b2R1bGUsIGVycm9yOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoaXMgc2Vy
dmVyLi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxl
LWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1
bGUtZmFpbHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNzU3ZDcwM2UzYjYzZTdmOWQ0NTk3M2EwYWY4
Y2M1M2RlYTYzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IEF1ZGlv
V29ya2xldC5hZGRNb2R1bGUoKSByZWplY3RzIHRoZSBwcm9taXNlIHdoZW4gdGhlIFVSTCBpcyBp
bnZhbGlkLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2NvbnN0IGludmFsaWRVUkwgPSAi
aHR0cDovL2ludmFsaWQ6dXJsIjsKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBjb250
ZXh0ID0gbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMiwgMTAwLCA0NDEwMCk7CisgICAgYXdhaXQg
c2hvdWxkUmVqZWN0V2l0aEVycm9yTmFtZSgiY29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxl
KGludmFsaWRVUkwpOyIsICJTeW50YXhFcnJvciIpOworICAgIGF3YWl0IHNob3VsZFJlamVjdFdp
dGhFcnJvck5hbWUoImNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZSgnZG9lc25vdEV4aXN0
LmpzJyk7IiwgIk5ldHdvcmtFcnJvciIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410392</attachid>
            <date>2020-10-02 17:42:05 -0700</date>
            <delta_ts>2020-10-06 09:36:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201002174204.patch</filename>
            <type>text/plain</type>
            <size>78648</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwOTE5ZWI0NWY3OWFh
NmUzMDJjNmJiNDdlMzc5ZmQ2OTYxZGQxYy4uOTJhNDViOWI2ZDQ4YjAyZjQ5YWVlMGUyZDhiZGZk
OThiNDczODlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0xMC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIGFuZCBldmFsdWF0ZSB0aGUgbW9kdWxlIHNjcmlw
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IFdvcmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggYW5kIGV2YWx1YXRlIHRoZSBt
b2R1bGUgc2NyaXB0IGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd29y
a2xldHMtMS8jZG9tLXdvcmtsZXQtYWRkbW9kdWxlCisKKyAgICAgICAgVGhlIFdvcmtsZXRHbG9i
YWxTY29wZSBtYWludGFpbnMgYSBxdWV1ZSBhIGZldGNoIHJlcXVlc3RzIChiYXNpY2FsbHkgYSBV
UkwgYW5kIGEgY29tcGxldGlvbiBoYW5kbGVyKSBhbmQgdXNlcworICAgICAgICB0aGUgZXhpc3Rp
bmcgV29ya2VyU2NyaXB0TG9hZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3RzIHNlcmlhbGx5LiBC
YXNlZCBvbiB0aGUgcmVzdWx0IG9uIHRoZSBsb2FkLCB3ZSBjYWxsIHRoZQorICAgICAgICBDb21w
bGV0aW9uSGFuZGxlciB3aGljaCB3aWxsIGNhdXNlIHRoZSBXb3JrbGV0LmFkZE1vZHVsZSgpIHBy
b21pc2UgdG8gZ2V0IHJlc29sdmVkIG9yIHJlamVjdGVkLgorCisgICAgICAgIFRlc3Q6IHdlYmF1
ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIFByb3ZpZGUg
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgb3ZlcnJpZGUgZm9yIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKCksIHdoaWNoIGlzIGEgcmVwbGFjZW1lbnQKKyAgICAgICAgZm9yIHVuZGVybHlpbmdU
aHJlYWQoKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9h
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgIFVwZGF0
ZSBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSB0byBzdWJjbGFzcyBXb3JrZXJMb2FkZXJQcm94
eSBzbyB0aGF0IEF1ZGlvV29ya2xldCBjYW4gcmV1c2UKKyAgICAgICAgV29ya2VyU2NyaXB0TG9h
ZGVyLiBXb3JrZXJTY3JpcHRMb2FkZXIgcmVsaWVzIG9uIFdvcmtlckxvYWRlclByb3h5IHRvIGRv
IHRocmVhZCBob3BwaW5nLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpBdWRp
b1dvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJMb2FkZXJQcm94eSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRl
KToKKyAgICAgICAgU3ViY2xhc3MgdGhlIG5ldyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaW50ZXJm
YWNlLiBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaXMgYSBuZXcgaW50ZXJmYWNlIHRoYXQKKyAgICAg
ICAgd2FzIGFkZGluZyBzbyB0aGF0IFdvcmtlclNjcmlwdExvYWRlciBjYW4gYmUgcmV1c2VkIGJ5
IEF1ZGlvV29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGdyYWRl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAgICAgICAgU2ltcGxlIHJlbmFtaW5n
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bm90aWZ5SXNEb25lKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmluaXNoVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKToKKyAgICAgICAgVXBkYXRlIFdvcmtlclRocmVhZGFibGVMb2FkZXIgc28gdGhh
dCBpdCBjYW4gYmUgcmV1c2VkIGJ5IEF1ZGlvV29ya2xldHMuCisKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNj
b3BlOjp3cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojp1bndyYXBDcnlwdG9LZXkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aDoKKyAgICAgICAgTWlub3IgY2hhbmdlcyB0byBrZWVwIGJ1aWxkaW5nIGFmdGVyIHVwZGF0ZXMg
dG8gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckxvYWRlclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICBTaW1wbGUgcmVuYW1l
cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKToKKyAgICAgICAgVXBkYXRlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIHRv
IGFkZCBhIGZldyB0aGluZ3MgV29ya2VyU2NyaXB0TG9hZGVyIG5lZWRlZCB0byB3b3JrIHdpdGgK
KyAgICAgICAgYm90aCBXb3JrZXJzIGFuZCBXb3JrbGV0cy4KKworICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6IEFkZGVkLgorICAgICAgICBBZGRlZCBuZXcgcGFyZW50
IGludGVyZmFjZSBmb3IgV29ya2VyVGhyZWFkIGFuZCBBdWRpb1dvcmtsZXRUaHJlYWQgc28gdGhh
dCBXb3JrZXJTY3JpcHRMb2FkZXIKKyAgICAgICAgY2FuIHdvcmsgZm9yIGJvdGggV29ya2VycyBh
bmQgV29ya2xldHMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyk6CisgICAgICAgIE1pbm9yIGNoYW5n
ZXMgdG8ga2VlcCBidWlsZGluZyBhZnRlciBjaGFuZ2VzIHRvIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgU3Vi
Y2xhc3MgdGhlIG5ldyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaW50ZXJmYWNlLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
dGFydEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgU2ltcGxl
IHJlbmFtZXMuCisKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUp
OgorICAgICAgICBNYWtlIHN1cmUgd2UgY29ycmVjdGx5IGluaXRpYWxpemUgdGhlIHNlY3VyaXR5
IG9yaWdpbiBmb3IgdGhlIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICAgICAgUHJldmlvdXNseSwg
d2Ugd2VyZSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gc28gYWxsIHNjcmlwdCBsb2FkcyB3b3VsZCBo
YXZlIGZhaWxlZAorICAgICAgICB3aXRoIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLgorCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmZldGNoQW5kSW52b2tlU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRj
aEpvYklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpk
aWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9u
c2libGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJl
c3BvbnNpYmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gZm9y
IG1vZHVsZSBzY3JpcHQgZmV0Y2hpbmcgdXNpbmcgV29ya2VyU2NyaXB0TG9hZGVyLiBUaGlzIGdl
dHMgY2FsbGVkCisgICAgICAgIHdoZW4gV29ya2xldC5hZGRNb2R1bGUoKSBpcyBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLgorCiAyMDIwLTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN0dWJzIGZvciBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgYW5k
IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZTAzYTM0NTg1
ODY4NGM3YWIwMDRkMzRjOTFjNmNjYmRkMzNlNmJkLi40ZGQ2ZTQ0YWZjNTFmZDBiNGUxZjg1ZDdi
YjcxYzZjZjk4OWEwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE1MjAsNiArMTUyMCw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtl
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMvV29ya2VyRGVidWdnZXJQcm94eS5o
CiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisgICAgd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuaAogICAgIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5oCiAgICAgd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggODE4ZTI0ZDFlMGI2Mzk3OWU5YzI2ZjEwYmRm
OTdhZmNiMzQ1ZTBiMi4uYjQ3YzU5NzMyOTE0OTgzNGNmZjk4YTllODg1OTQ4MWVkZWZiNGVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oIgogCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCwx
MSArNTMsNiBAQCB2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nv
cihTdHJpbmcmJiBuYW1lLCBSZWY8QXVkaW9Xb3JrbGV0UAogICAgIFVOVVNFRF9QQVJBTShuYW1l
KTsKIH0KIAotVGhyZWFkKiBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6dW5kZXJseWluZ1RocmVh
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGhyZWFkLT50aHJlYWQoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGUuaAppbmRleCAzYTQxMDYwYmM2MmQzY2IxNDJiZjIzNmZhZjc3NWI2MDc4NjY4MGM5Li42
MWRiNjM0NDBhZTc3ODBjMGNkOGZiOTI5ZDY3ZjRlM2RmMmRkODk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29w
ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2xldEds
b2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gNDQxMDA7IH0KIAotICAgIFRocmVhZCog
dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0IGZpbmFsOworICAgIEF1ZGlvV29ya2xldFRocmVhZCog
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgZmluYWwgeyByZXR1cm4gbV90aHJlYWQucHRyKCk7IH0K
IAogcHJpdmF0ZToKICAgICBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZShBdWRpb1dvcmtsZXRUaHJl
YWQmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNw
cAppbmRleCBkNDM2YzFjODYwMWRkZjg3Njc2NTk1ZmFlMTI0MzQwNGMxNmI1YWJhLi44MTYyZTQx
YWFlZTc3YzE2ZTFkYzBhNjNhZGJlMzcxZjAxZDY3YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvV29ya2xldC5oIgogI2lu
Y2x1ZGUgIkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0
VGhyZWFkLmgiCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpA
QCAtNTMsNyArNTQsOCBAQCBzdGF0aWMgV29ya2xldFBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrbGV0
UGFyYW1ldGVycyhBdWRpb1dvcmtsZXQmIHdvcmtsZXQpCiB9CiAKIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5OjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eShBdWRpb1dvcmtsZXQmIHdvcmts
ZXQpCi0gICAgOiBtX3dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFkOjpjcmVhdGUoZ2Vu
ZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCisgICAgOiBtX2RvY3VtZW50KCp3b3Jr
bGV0LmRvY3VtZW50KCkpCisgICAgLCBtX3dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0VGhyZWFk
OjpjcmVhdGUoKnRoaXMsIGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMod29ya2xldCkpKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTY4LDYgKzcwLDIyIEBAIGJvb2wgQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNj
b3BlKFNjcmlwdEV4ZWN1CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1JlZlB0cjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbigpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3ZvaWQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCit7CisgICAgbV9k
b2N1bWVudC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2Jvb2wgQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9k
ZSkKK3sKKyAgICByZXR1cm4gcG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoV1RG
TW92ZSh0YXNrKSwgbW9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggNzVmZjQx
MGY1MjgyNjBmZWMwMWIzZGMxOTdiY2M5MDJlMTZjZjNkMi4uOWRlODljNjQyMmQzMDQ5MWI2ZWYx
YTkyM2Q2MmYwYWZjMzFmNDg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaApAQCAtMjksMTQg
KzI5LDE2IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVk
ZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGVQcm94
eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvV29ya2xldDsKIGNsYXNz
IEF1ZGlvV29ya2xldFRocmVhZDsKK2NsYXNzIERvY3VtZW50OwogCi1jbGFzcyBBdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSB7CitjbGFz
cyBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSA6IHB1YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGVQ
cm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5PiBjcmVhdGUoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0
KQogICAgIHsKQEAgLTUxLDggKzUzLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0Jik7CiAKKyAgICAvLyBX
b3JrZXJMb2FkZXJQcm94eS4KKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3Jl
YXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOworICAgIGJvb2wgcG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKICAgICBib29sIGlz
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmPEF1ZGlvV29ya2xldFRo
cmVhZD4gbV93b3JrbGV0VGhyZWFkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuY3BwCmluZGV4IGMyNGU2NjQ2NGU1
NmQzNGNlYzIwN2MyYmJkYTA0ZjIxZGE0YjJlZjIuLjBlZTVkNTA5YmQ2YmNjNGFjNWNhNzJjNjIz
ZWMwMTIzZjA5ODYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5jcHAKQEAgLTQzLDExICs0MywxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3JrbGV0VGhyZWFk
KGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9wYXJhbWV0ZXJz
KHBhcmFtZXRlcnMuaXNvbGF0ZWRDb3B5KCkpCitBdWRpb1dvcmtsZXRUaHJlYWQ6OkF1ZGlvV29y
a2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5nUHJveHksIGNv
bnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9tZXNzYWdpbmdQcm94
eShtZXNzYWdpbmdQcm94eSkKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzLmlzb2xhdGVk
Q29weSgpKQogewogfQogCitBdWRpb1dvcmtsZXRUaHJlYWQ6On5BdWRpb1dvcmtsZXRUaHJlYWQo
KSA9IGRlZmF1bHQ7CisKIHZvaWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydCgpCiB7CiAgICAg
YXV0byBsb2NrID0gaG9sZExvY2sobV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRHbG9iYWxTY29w
ZUxvY2spOwpAQCAtMTI5LDYgKzEzMiwxMSBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6cnVu
RXZlbnRMb29wKCkKICAgICBtX3J1bkxvb3AucnVuKG1fd29ya2xldEdsb2JhbFNjb3BlLmdldCgp
KTsKIH0KIAorV29ya2VyTG9hZGVyUHJveHkmIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2VyTG9h
ZGVyUHJveHkoKQoreworICAgIHJldHVybiBtX21lc3NhZ2luZ1Byb3h5LmdldCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFk
LmgKaW5kZXggNzIzZjZhODUyMzZjMTg3ODc2NDcyNmM2YjYzYmRiMDA0YTQzMTk0Zi4uZTgzOWUx
YWY4M2M1YWU1OGYzNGI0N2I4ZjIzZmM0OTI4MjQxYWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2lu
Y2x1ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAg
LTM5LDI1ICs0MCwzMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1dvcmts
ZXRHbG9iYWxTY29wZTsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OwogCi1jbGFz
cyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9X
b3JrbGV0VGhyZWFkPiB7CitjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0VGhyZWFkPiwgcHVibGljIFdvcmtlck9yV29ya2xl
dFRocmVhZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNy
ZWF0ZShjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICBzdGF0aWMgUmVm
PEF1ZGlvV29ya2xldFRocmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBt
ZXNzYWdpbmdQcm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQocGFyYW1l
dGVycykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQo
bWVzc2FnaW5nUHJveHksIHBhcmFtZXRlcnMpKTsKICAgICB9CisgICAgfkF1ZGlvV29ya2xldFRo
cmVhZCgpOwogCiAgICAgdm9pZCBzdGFydCgpOwogCi0gICAgV29ya2VyUnVuTG9vcCYgcnVuTG9v
cCgpIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQotICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KKyAgICAvLyBXb3JrZXJPcldvcmtsZXRUaHJlYWQuCisg
ICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQor
ICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZpbmFsOworICAgIFRo
cmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRUaHJlYWQoY29uc3QgV29ya2xldFBh
cmFtZXRlcnMmKTsKKyAgICBBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9Xb3JrbGV0TWVzc2FnaW5n
UHJveHkmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwogCiAgICAgdm9pZCBydW5FdmVudExv
b3AoKTsKICAgICB2b2lkIHdvcmtsZXRUaHJlYWQoKTsKIAorICAgIFJlZjxBdWRpb1dvcmtsZXRN
ZXNzYWdpbmdQcm94eT4gbV9tZXNzYWdpbmdQcm94eTsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3Ro
cmVhZDsKICAgICBXb3JrZXJSdW5Mb29wIG1fcnVuTG9vcDsKICAgICBXb3JrbGV0UGFyYW1ldGVy
cyBtX3BhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCAyZGM4ZTE0MjA1OGE2ZTJiYjcxZjI1ZGY0OWZjMmFkYzM0NGFkMDExLi5hYzVmMGQz
Y2JjZDQwMzhmMjhkM2FiMmM1MGU1OTgzNzRkYjJjMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5k
KG1lc3NhZ2UpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2Vu
ZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0
UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsK
ICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBi
aW5hcnlEYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5u
ZWwtPnNlbmQoYmluYXJ5RGF0YSwgMCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpOwotICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNl
dFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVz
dWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVu
dFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRT
ZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7
CiB9CkBAIC0yMTAsOCArMjEwLDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNp
Z25lZCBidWZmZXJlZEFtb3VudCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmJ1ZmZlcmVkQW1v
dW50KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNj
b3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJl
ZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVm
ZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPnNldEJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KQEAgLTI2Myw4ICsyNjMsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KCkKIAogICAgIFN0cmluZyBzdWJwcm90
b2NvbCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCk7CiAgICAgU3RyaW5n
IGV4dGVuc2lvbnMgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5leHRlbnNpb25zKCk7Ci0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzdWJwcm90b2NvbCA9IHN1YnBy
b3RvY29sLmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25zID0gZXh0ZW5zaW9ucy5pc29sYXRlZENv
cHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJv
dG9jb2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IGV4dGVuc2lv
bnMuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdv
cmtlckNsaWVudFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKICAgICAgICAg
d29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhleHRlbnNpb25zKTsKICAgICAgICAg
d29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ29ubmVjdCgpOwpAQCAtMjc1LDggKzI3NSw4IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29y
a2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSA9IG1lc3Nh
Z2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2Jh
bFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2Fn
ZShtZXNzYWdlKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTI4NSw4ICsyODUsOCBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YShWZWN0b3I8dWludDhfdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dv
cmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJpbmFyeURhdGEgPSBX
VEZNb3ZlKGJpbmFyeURhdGEpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4
dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9i
YWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFy
eURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0y
OTUsOCArMjk1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnUKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
LCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1v
dW50KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5k
c2hha2UoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
eworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIH0sIG1fdGFz
a01vZGUpOwogfQpAQCAtMzE2LDE4ICszMTYsMTggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWQK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwg
PSBudWxscHRyOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUs
IHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKLSAgICAgICAgfSwgbV90YXNrTW9kZSk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9
IHJlYXNvbi5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOworICAgIH0sIG1fdGFz
a01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGll
bnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlTWVzc2FnZUVycm9y
KCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0zMzYsOCArMzM2LDggQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBncmFkZVVSTCgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dv
cmtlckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8
IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTM2MSwx
MCArMzYxLDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoY29udGV4dC5pc0RvY3VtZW50KCkpOwogCi0gICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7Cisg
ICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSh7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNs
ZWFudXBUYXNrLAogICAgICAgICBbY2xpZW50V3JhcHBlciwgJmxvYWRlclByb3h5LCBwZWVyID0g
bWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNv
bnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNX
b3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFp
bGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBC
cmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWlu
VGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4KICAgICAgICAgICAgICAgICBsb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0gV1RGTW92ZShwZWVyKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA4MGNjODY1NWE4OTMzYjFmNmVlMjJjNDkz
OGQ1OWYyZWIwZTFiMzkuLjQ2MjM0MzM3ZDJhYzhkZDRiNDJmNTA2OWNkOTM1NGI4YjhhMjUxM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI1NTAsNiArMjU1MCw3IEBACiAJCTgzRTg2NjgwMUZCQTU2NUIwMDg4NTVDNSAvKiBT
ZXJ2aWNlV29ya2VyRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNFODY2N0QxRkJBNTYzRjAwODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNFRTU5
OEYxRjUwOTU4RTAwM0U4QjMwIC8qIEpTRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFRTU5OEIxRjUwOTU4QjAwM0U4QjMwIC8q
IEpTRXJyb3JDYWxsYmFjay5oICovOyB9OwogCQk4M0YyOEMwMDI0REIxREUxMDA1QkE2RjYgLyog
Q29udm9sdmVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNGMjhCRkQyNERCMUREMzAwNUJBNkY2IC8qIENvbnZvbHZlck9wdGlvbnMuaCAq
LzsgfTsKKwkJODNGNkFFQkYyNTI3QkIwQzAwMzRCQ0QzIC8qIFdvcmtlck9yV29ya2xldFRocmVh
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFODI4
QjIyNTI3OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzRkIzMzcxMUY1MDhBNTQw
MDk4NkU1NCAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkIzMzZEMUY1MDhBNEUwMDk4NkU1NCAvKiBG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKIAkJODNGQjMzNzMxRjUwOEE1ODAwOTg2
RTU0IC8qIEZpbGVTeXN0ZW1FbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNGQjMzNkYxRjUwOEE0RTAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1FbnRy
eS5oICovOyB9OwogCQk4M0ZCMzM3NTFGNTA4QTVCMDA5ODZFNTQgLyogRmlsZVN5c3RlbUZpbGVF
bnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNG
QjMzNkMxRjUwOEE0RTAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1GaWxlRW50cnkuaCAqLzsgfTsKQEAg
LTEwNzg3LDYgKzEwNzg4LDcgQEAKIAkJODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlF
dmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVSUV2ZW50SW5p
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0UzNTlBMDFCQjEwMzFEMDAyQ0VC
OTggLyogSlNIVE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MVGltZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNF
MzU5QTExQkIxMDMxRDAwMkNFQjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFRpbWVFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNFODI4QjIyNTI3OTRDRDAwMjdFMEY3IC8qIFdvcmtl
ck9yV29ya2xldFRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFODY2
N0QxRkJBNTYzRjAwODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzRTg2NjdGMUZCQTU2NDAwMDg4NTVDNSAvKiBTZXJ2aWNlV29ya2VyRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTk1OUUxMUI4QkMyMkIw
MDREOTM4NSAvKiBOYXRpdmVOb2RlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5hdGl2ZU5vZGVGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NzUwLDYgKzE4NzUyLDcgQEAKIAkJCQkyRTQzNDYzRjBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyT2JqZWN0UHJveHkuaCAqLywKIAkJCQk4M0Q2QUFFNDI1MjRFRTEzMDA0MjhCNEIgLyogV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCAqLywKIAkJCQk4MzlBMDk1QjI1MjRGMzc2MDBFRUYz
MjggLyogV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oICovLAorCQkJCTgzRTgyOEIy
MjUyNzk0Q0QwMDI3RTBGNyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCAqLywKIAkJCQk0MTZF
MjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLywKIAkJCQky
RTQzNDY0MDBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5jcHAgKi8sCiAJCQkJMkU0
MzQ2NDEwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLywKQEAgLTM0NjQ4LDYg
KzM0NjUxLDcgQEAKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyT2JqZWN0
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDZBQUU2MjUyNEVFMUMwMDQyOEI0QiAvKiBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5QTA5NUQy
NTI0RjM3RjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBXb3JrZXJPcldvcmts
ZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAv
KiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU0MzQ2NTMwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Qjgx
Q0NGMUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGM3ZTBm
MzFiZTcyMDZmZWY4ZGFhZDE4NDYxZTRmNWEyNGJiZjdkNjIuLjI3MTdjODYxYzc0YjBmMmFlYmNk
ZTQwODcwMGUyYTlhMDM3Mzc1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTAyLDEwICsxMDMsMTYgQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShy
ZWZlcnJlcikpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkgfHwgKGlz
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2xldEdsb2JhbFNj
b3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAgICAgIHJldHVybiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmPihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9k
ZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7CisKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOworICAgIGlmIChpczxXb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpKQorICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0PFdvcmtsZXRHbG9i
YWxTY29wZT4oY29udGV4dCkucmVzcG9uc2libGVEb2N1bWVudCgpOworICAgIGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQgPSAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCi0gICAgcmV0dXJu
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSwgY2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVy
KSk7CisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCpkb2N1bWVu
dCwgY2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVyKSk7
CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDZmODI4NzMzOWI0ZmM1ZDAwYjdkYmE1MDM4MzA1NDU0NmVi
YThiMTUuLmUxMTM5NmJmZDgzMzZlM2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTQz
LDE5ICs0MywyMCBAQAogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgot
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJv
eHkuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtlclRocmVhZGFibGVM
b2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
dGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotICAgIDogbV93b3Jr
ZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlclRocmVhZGFibGVMb2FkZXI6
OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQor
ICAgIDogbV9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSkKICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlcjo6Y3JlYXRlKGNsaWVudCwgb3B0aW9ucy5pbml0aWF0b3IpKQotICAgICwgbV9icmlk
Z2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2Jh
bFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtl
ckdsb2JhbFNjb3BlKSkKKyAgICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dv
cmtlckNsaWVudFdyYXBwZXIuZ2V0KCksIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLndvcmtl
ck9yV29ya2xldFRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwg
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQogewogfQogCkBAIC02NCwxNyArNjUsMTcgQEAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIoKQogICAgIG1f
YnJpZGdlLmRlc3Ryb3koKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29w
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV29ya2VyUnVuTG9vcCYgcnVuTG9v
cCA9IHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKKyAgICBXb3JrZXJSdW5M
b29wJiBydW5Mb29wID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0
VGhyZWFkKCktPnJ1bkxvb3AoKTsKIAogICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBtb2RlIGp1c3Qg
Zm9yIHRoaXMgc3luY2hyb25vdXMgcmVzb3VyY2UgbG9hZC4KICAgICBTdHJpbmcgbW9kZSA9IG1h
a2VTdHJpbmcoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlIiwgcnVuTG9vcC5jcmVhdGVV
bmlxdWVJZCgpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMsIFN0cmluZygpKTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBX
VEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2Fp
dFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hpbGUg
KCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKLSAg
ICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2JhbFNjb3BlLCBtb2Rl
KTsKKyAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLCBtb2RlKTsKIAogICAgIGlmICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ID09
IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAgIGxvYWRlci0+Y2FuY2VsKCk7CkBAIC0x
MDcsNyArMTA4LDcgQEAgTG9hZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tPcHRpb25zKGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAogV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJv
eHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAgIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxT
Y29wZSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3dvcmtlckNsaWVu
dFdyYXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRl
clByb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKQEAgLTEz
MSwxMiArMTMyLDEzIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgb3B0aW9uc0NvcHkt
Pm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcjsKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2
aWNlV29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
ID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7Cisg
ICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gaXM8U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUg
OiBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbDsKICAgICBpZiAoYXV0byogYWN0aXZlU2VydmljZVdv
cmtlciA9IGdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAgICAgICAgb3B0aW9u
c0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3Rp
dmVTZXJ2aWNlV29ya2VyLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAjZW5kaWYKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGdsb2JhbFNjb3BlLCBt
X3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBpZiAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KGdsb2JhbFNjb3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3Bl
KSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAgICAvLyBDYW4gd2Ug
YmVuZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZp
Y2llbnRseSBpdHMgaXNvbGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0g
V1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3Zl
KGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKQEAgLTIwMCw3ICsyMDIsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNvbXB1dGVJc0RvbmUoKQogCiB2b2lkIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om5vdGlmeUlzRG9uZShib29sIGlzRG9u
ZSkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVu
dFdyYXBwZXIpLCBpc0RvbmVdKGF1dG8mKSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRX
cmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgaXNEb25lXShhdXRvJikg
ewogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5ub3RpZnlJc0RvbmUoaXNE
b25lKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTIxMiwxOSArMjE0LDIwIEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJDbGllbnRXcmFw
cGVyKCkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1h
a2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciksIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRH
bG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
U2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIH0sIG1fdGFza01v
ZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1h
a2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0g
bV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgaWRlbnRpZmllciwgcmVzcG9uc2VEYXRhID0gcmVz
cG9uc2UuY3Jvc3NUaHJlYWREYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtl
ckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhy
ZWFkRGF0YSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0Lmlz
V29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNlRGF0YSkpOwogICAg
ICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwog
ICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yMzIsNDMgKzIzNSw0NyBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsCiB7CiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihkYXRhTGVuZ3RoKTsKICAg
ICBtZW1jcHkoYnVmZmVyLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZN
b3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
LSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3By
b3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBw
ZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIs
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRl
bnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIGlmIChpczxX
b3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0
cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBpZGVudGlmaWVyXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VS
VChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1l
dHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwgaWRlbnRpZmllcl0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9i
YWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
d29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIGlm
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBw
ZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRp
ZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAg
ICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3
b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9y
ID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
IHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIFRocmVhZGFibGVM
b2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFw
cGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFp
bExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1
ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaFRpbWluZyhj
b25zdCBSZXNvdXJjZVRpbWluZyYgcmVzb3VyY2VUaW1pbmcpCiB7CiAgICAgbV9uZXR3b3JrTG9h
ZE1ldHJpY3MgPSByZXNvdXJjZVRpbWluZy5uZXR3b3JrTG9hZE1ldHJpY3MoKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdv
cmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCByZXNv
dXJjZVRpbWluZyA9IHJlc291cmNlVGltaW5nLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVy
ID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgcmVzb3VyY2VUaW1pbmcgPSByZXNv
dXJjZVRpbWluZy5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgQVNTRVJUKCFy
ZXNvdXJjZVRpbWluZy5pbml0aWF0b3IoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8vIE5vIG5l
ZWQgdG8gbm90aWZ5IGNsaWVudHMsIGp1c3QgYWRkIHRoZSBwZXJmb3JtYW5jZSB0aW1pbmcgZW50
cnkuCi0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wZXJmb3Jt
YW5jZSgpLmFkZFJlc291cmNlVGltaW5nKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKKyAgICAg
ICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAgIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wZXJmb3JtYW5jZSgpLmFkZFJlc291cmNl
VGltaW5nKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5k
ZXggYmFjMjUyYTU3YTRlMDFjOWI2MDMzYjliYmRhMDYzZWM1MzA1OGZjMC4uMjQ0NGZkYTNhYWEz
ODI0NDY3YWQ0NzA0NjIyMGZlMjE1MGIwMzdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotICAgIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOworICAgIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgIGNsYXNz
IFdvcmtlckxvYWRlclByb3h5OwogCiAgICAgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxvYWRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFk
YWJsZUxvYWRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJH
bG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKLSAgICAgICAgc3RhdGljIFJlZjxXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2Jh
bFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorICAgICAgICBzdGF0aWMg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFi
bGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclRocmVhZGFibGVMb2Fk
ZXIod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMsIHJlZmVycmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBjbGllbnQs
IHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlcikpOwogICAgICAg
ICB9CiAKICAgICAgICAgfldvcmtlclRocmVhZGFibGVMb2FkZXIoKTsKQEAgLTgxLDcgKzgxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLwogICAgICAgICAvLyBjYXNlIDEuIHdv
cmtlci50ZXJtaW5hdGUgaXMgY2FsbGVkLgogICAgICAgICAvLyAgICBJbiB0aGlzIGNhc2UsIG5v
IG1vcmUgdGFza3MgYXJlIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgb2JqZWN0J3MgdGhyZWFkIHRv
IHRoZSB3b3JrZXIKLSAgICAgICAgLy8gICAgY29udGV4dCdzIHRocmVhZCAtLSBXb3JrZXJHbG9i
YWxTY29wZVByb3h5IGltcGxlbWVudGF0aW9uIGVuZm9yY2VzIHRoaXMuCisgICAgICAgIC8vICAg
IGNvbnRleHQncyB0aHJlYWQgLS0gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGVQcm94eSBpbXBs
ZW1lbnRhdGlvbiBlbmZvcmNlcyB0aGlzLgogICAgICAgICAvLwogICAgICAgICAvLyBjYXNlIDIu
IHhociBnZXRzIGFib3J0ZWQgYW5kIHRoZSB3b3JrZXIgY29udGV4dCBjb250aW51ZXMgcnVubmlu
Zy4KICAgICAgICAgLy8gICAgVGhlIFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyIGhhcyB0
aGUgdW5kZXJseWluZyBjbGllbnQgY2xlYXJlZCwgc28gbm8gbW9yZSBjYWxscwpAQCAtOTEsNyAr
OTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1haW5UaHJlYWRCcmlk
Z2UgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAgIHB1YmxpYzoKICAg
ICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQu
Ci0gICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcm
IG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgICAgICAgICBNYWlu
VGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVy
UHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIs
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAgICAgICAgICB2b2lkIGNhbmNlbCgp
OwogICAgICAgICAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgICAgICAgICB2b2lkIGNvbXB1dGVJ
c0RvbmUoKTsKQEAgLTEyNiwxMSArMTI2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKICAgICAgICAg
fTsKIAotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpOworICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgICAgIHZvaWQgY29tcHV0ZUlzRG9uZSgp
IGZpbmFsOwogCi0gICAgICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gbV93b3JrZXJHbG9iYWxT
Y29wZTsKKyAgICAgICAgUmVmPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPiBtX1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlOwogICAgICAgICBSZWY8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKICAgICAgICAgTWFpblRocmVhZEJyaWRnZSYg
bV9icmlkZ2U7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAKaW5kZXggMWZlOTM5ODdlZjk2MWZkZmJlMzhmNDdjYTY3MWFmNWZkYTk4ZDlkZi4u
N2Q5NzgzZDkxMzBkNjZjMjc1YWFkYjYyYzQ0MTY5Yzg2OGRkN2M2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUyLDcgKzUyLDYgQEAKICNp
bmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgotI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50
cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00NDgsNyArNDQ3LDcgQEAgYm9vbCBXb3Jr
ZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
VmVjdG9yPHVpbnQ4X3QKICAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNr
VG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwga2V5LCB3cmFwcGVkS2V5Q29udGFpbmVyLCBkb25l
Q29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93bmNhc3Q8V29ya2Vy
TWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJv
b2xlYW4oY29udGV4dC53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleUNvbnRhaW5lci0+YnVm
ZmVyKCkpKTsKICAgICAgICAgZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKLSAgICAg
ICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICB3b3JrZXJN
ZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgfSk7CkBAIC00NzEsNyAr
NDcwLDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG8KICAgICBtX3RocmVhZC53b3JrZXJMb2Fk
ZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwgd3JhcHBlZEtleSwg
a2V5Q29udGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VS
ZWYoZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclBy
b3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1
bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC51bndyYXBDcnlwdG9LZXkod3JhcHBlZEtl
eSwga2V5Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29udGFpbmVyLT5zZXRC
b29sZWFuKHRydWUpOwotICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwogICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsK
ICAgICB9KTsKQEAgLTU0NCw5ICs1NDMsNCBAQCBSZWZlcnJlclBvbGljeSBXb3JrZXJHbG9iYWxT
Y29wZTo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBtX3JlZmVycmVyUG9saWN5
OwogfQogCi1UaHJlYWQqIFdvcmtlckdsb2JhbFNjb3BlOjp1bmRlcmx5aW5nVGhyZWFkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV90aHJlYWQudGhyZWFkKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRl
eCA5MGRmM2I2YWYzZDYzZWM2MWFlYzlhMTIzYzA4NzdlNzllMzRiMjY3Li43Y2VlNGMxY2U1NmMz
YzNmNWRhYTk4ZjBiYzE3ZjE2ODEyOTA3MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNz
YWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCkBAIC01Myw3ICs1NCw2IEBAIGNsYXNzIFdvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsKIGNsYXNzIFdvcmtl
ck5hdmlnYXRvcjsKIGNsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsKLWNsYXNzIFdvcmtl
clRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0ZXJzOwogCiBuYW1lc3BhY2UgSURCQ2xpZW50
IHsKQEAgLTkxLDEwICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNwZWN0b3JD
b250cm9sbGVyOyB9CiAKKyAgICBXb3JrZXJUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgp
IGZpbmFsIHsgcmV0dXJuICZtX3RocmVhZDsgfQogICAgIFdvcmtlclRocmVhZCYgdGhyZWFkKCkg
Y29uc3QgeyByZXR1cm4gbV90aHJlYWQ7IH0KIAotICAgIFRocmVhZCogdW5kZXJseWluZ1RocmVh
ZCgpIGNvbnN0IGZpbmFsOwotCiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aGFz
UGVuZGluZ0FjdGl2aXR5OwogCiAgICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsOyAvLyBF
eGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgpAQCAt
MTM4LDggKzEzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUltYWdlQml0bWFwKEltYWdl
Qml0bWFwOjpTb3VyY2UmJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
LCBpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIEltYWdlQml0bWFwT3B0aW9ucyYmLCBJ
bWFnZUJpdG1hcDo6UHJvbWlzZSYmKTsKIAotICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVl
SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcisrOyB9Ci0KICAgICBDU1NW
YWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogCiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQ
b2xpY3koKSBjb25zdCBmaW5hbDsKQEAgLTIyMSw3ICsyMTgsNiBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI+IG1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3Vu
aXF1ZUlkZW50aWZpZXIgeyAxIH07CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFJl
ZlB0cjxXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDbGllbnRDb25uZWN0aW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKaW5kZXggNjE1
MzFlZDQwODY0YjM4YWNiOTljYzA2NzU3YmZjMTExMjNkOGQ4Ny4uZWU2NDY5ZDVkNjE0ZTNhZDgy
N2EyMjUzM2NkYzBmNGE0OTIyYTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2FkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TG9hZGVyUHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzV29ya2VyTWVzc2FnaW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
Ly8gQ3JlYXRlcyBhIGNhY2hlIHN0b3JhZ2UgY29ubmVjdGlvbiB0byBiZSB1c2VkIG9uIHRoZSBt
YWluIHRocmVhZC4gTWV0aG9kIG11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAg
ICB2aXJ0dWFsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IDA7CiAKICAgICAvLyBQb3N0cyBh
IHRhc2sgdG8gdGhlIHRocmVhZCB3aGljaCBydW5zIHRoZSBsb2FkaW5nIGNvZGUgKG5vcm1hbGx5
LCB0aGUgbWFpbiB0aHJlYWQpLgogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgPSAwOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUG9zdHMgY2FsbGJhY2tzIGZyb20gbG9hZGluZyBjb2RlIHRvIHRoZSBXb3Jr
ZXJHbG9iYWxTY29wZS4gVGhlICdtb2RlJyBpcyB1c2VkIHRvIGRpZmZlcmVudGlhdGUKICAgICAv
LyBzcGVjaWZpYyBzeW5jaHJvbm91cyBsb2FkaW5nIHJlcXVlc3RzIHNvIHRoZXkgY2FuIGJlICdu
ZXN0ZWQnLCBwZXIgc3BlYy4KICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhc2sgd2FzIHBv
c3RlZCBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJp
bmcmIG1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0
IFN0cmluZyYgbW9kZSkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBjNDIx
MmIyNjU4Mjk3YjNlNDEzYTEyZDU1NWE5ODJmYjg3NjUwNWNiLi5hNjFiNDE0ODYzM2JkZjIwZDUy
YmU1NzY0ZGE5YjU1NGUxNjEwZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTUzLDE0ICsxNTMsMTQgQEAgdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaykKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1v
dmUodGFzaykpOwogfQogCi1SZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2VyTWVzc2Fn
aW5nUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorUmVmUHRyPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwog
ICAgIHJldHVybiBkb2N1bWVudC5wYWdlKCktPmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkuY3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogfQogCi1ib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAg
ICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IGU3ODEyMjdm
ZWRiYWI3ZWUyNWRlY2JjYWIxZjdiOTJjYmE5MTFlMTcuLjNiYjRkOWQ4MTVhMjA5MTRhZDlmMjVi
MzRhODdjYTkxZTFjODViYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgLy8gSW1wbGVt
ZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJveHkuCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNl
ZCBpbiB0aGUgbWFpbiB0aHJlYWQgdG8gcG9zdCB0YXNrIGJhY2sgdG8gdGhlIHdvcmtlciB0aHJl
YWQuCi0gICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKyAgICBi
b29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwogCiBwcml2
YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgpA
QCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNh
bGxiYWNrcyBiYWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgogICAgIGJvb2wgaXNXb3JrZXJNZXNz
YWdpbmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHBvc3RU
YXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKLSAgICBS
ZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigp
IGZpbmFsOworICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CiAKICAgICB2b2lkIHdvcmtlclRocmVhZENyZWF0ZWQo
RGVkaWNhdGVkV29ya2VyVGhyZWFkJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA2NTQ4ZTA4NDhiZTM1MjJiNmFk
OWMzMjg1MzM5NzQ2YzdjMzk3NDI4Li44MjA5ZmM1N2E1NWZlNjllNjc5NmMwMDJmMzQwNmIzMDQ2
ZDlmMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC0yNiwyMSArMjYsMjQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUaHJlYWQ7Ci19
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlcjsKK2NsYXNzIFdvcmtlck9yV29ya2xldFRocmVhZDsKKwogY2xhc3MgV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIFdURjo6VGhyZWFkKiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBX
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSA9IDA7CisgICAgdmlydHVh
bCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpID0gMDsKKwor
ICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpIHsgcmV0dXJuIG1fdW5p
cXVlSWRlbnRpZmllcisrOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1
ZUlkZW50aWZpZXIgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MjBkZmM0ZWNkZTM0YWNiZDQ3MTVmNWU4Y2YxNTBiMDg2ODRhOTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGhyZWFkOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckxvYWRlclByb3h5OworY2xhc3MgV29ya2Vy
UnVuTG9vcDsKKworY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFs
IFdURjo6VGhyZWFkKiB0aHJlYWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXb3JrZXJSdW5M
b29wJiBydW5Mb29wKCkgPSAwOworICAgIHZpcnR1YWwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtl
ckxvYWRlclByb3h5KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmI2MWZjNWYyYTk3ZGI4NGIx
MTNiZTIyM2M3YTdhZGM3MTliNDk0NC4uNmI3MDk1ZDI1N2E1ZjIyZGZkOTRlZGIyMzYyOGJkODE5
ZGNkZWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0x
NjEsNyArMTYxLDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5J
bk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnQKIE1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRlJiBwcmVkaWNhdGUsIFdhaXRNb2RlIHdhaXRN
b2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dW5kZXJs
eWluZ1RocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQt
Pndvcmtlck9yV29ya2xldFRocmVhZCgpLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayB0
aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9vcFRpbWVy
OjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGFj
dHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3VuZCBydW5J
bk1vZGUKQEAgLTIyNiw3ICsyMjYsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1
bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udAogdm9pZCBX
b3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUq
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT51
bmRlcmx5aW5nVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQoY29u
dGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAgICAgQVNTRVJUKG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxl
ICh0cnVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBkNzc2MzNj
MDU0NmY0M2RlZGZkNWEwNGM2ZTQ0M2E4OWY5OTBmMjNmLi42MjQ0YjNjYzAwODFjYjYwNWExN2Y2
ZDQ5YWUyODQ2MmU3Njg0MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTc1LDcgKzc2LDcgQEAg
cHVibGljOgogICAgIFdvcmtlclBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9Owog
Ci1jbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya2Vy
VGhyZWFkPiB7CitjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8V29ya2VyVGhyZWFkPiwgcHVibGljIFdvcmtlck9yV29ya2xldFRocmVhZCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V29ya2VyVGhyZWFkKCk7CiAKQEAgLTg3LDkgKzg4LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKLSAgICBUaHJlYWQq
IHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9Ci0gICAgV29ya2VyUnVu
TG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQotICAgIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJv
eHk7IH0KKyAgICBUaHJlYWQqIHRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGhyZWFk
LmdldCgpOyB9CisgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJuIG1f
cnVuTG9vcDsgfQorICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpIGZp
bmFsIHsgcmV0dXJuIG1fd29ya2VyTG9hZGVyUHJveHk7IH0KICAgICBXb3JrZXJEZWJ1Z2dlclBy
b3h5JiB3b3JrZXJEZWJ1Z2dlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJEZWJ1Z2dl
clByb3h5OyB9CiAgICAgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5
KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJSZXBvcnRpbmdQcm94eTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBiNzdmMzc0NTJiYzA2NWVlYWQzZmZiZjY0
MmQ0MWY4YTMxNTFjZGUyLi5lMTUyM2RhOTI0ZDczMzlmNTA5NDZiNGYxMTIwMjAyZjYyZmRlNDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTEyNiw3ICsxMjYs
NyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHko
KQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwogfQog
Ci1ib29sIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQorYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTgsMTIgKzE1OCwxMiBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWRCeVdlYkluc3BlY3Rvcihib29sIGRpcwogICAgIH0pOyAgIAogfQogCi1SZWY8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uKCkKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb24p
CiAgICAgICAgIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA9IG1fY2FjaGVTdG9yYWdlUHJvdmlk
ZXIuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwotICAgIHJldHVybiAqbV9jYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOworICAgIHJldHVybiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYg
YmxvYlVSTCkKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpCiAgICAgaWYgKG1faXNU
ZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShbaXNPbmxpbmVdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOwogICAgICAgICBnbG9iYWxTY29wZS5zZXRJc09ubGluZShpc09ubGluZSk7CiAgICAg
ICAgIGdsb2JhbFNjb3BlLmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtnbG9iYWxTY29wZSA9IG1ha2VSZWYoZ2xvYmFsU2NvcGUpLCBpc09ubGluZV0g
ewpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzdGFy
dEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvCiAKICAgICBBU1NF
UlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAgICAgbV9vbmdvaW5nRmV0
Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsKLSAgICBwb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNsaWVudCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlz
b2xhdGVkQ29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25z
ID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oYXV0byYpIG11dGFibGUgeworICAgIHBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVx
dWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShhdXRvJikgbXV0YWJs
ZSB7CiAgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RGTW92ZShj
bGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZl
cnJlciksIFdURk1vdmUob3B0aW9ucykpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpjYW5jZWxGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3RpCiAg
ICAgaWYgKG1fb25nb2luZ0ZldGNoVGFza3MuaXNFbXB0eSgpKQogICAgICAgICB0aHJlYWQoKS5z
dG9wRmV0Y2hFdmVudE1vbml0b3JpbmcoKTsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW2NsaWVudCA9IGNsaWVudC5yZWxlYXNlTm9uTnVsbCgpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtjbGllbnQgPSBjbGllbnQucmVsZWFzZU5vbk51bGwoKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNsaWVudC0+Y2FuY2VsKCk7CiAgICAgfSwgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dT
ZXJ2ZXJDb25uZWN0aW8KICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gbWFrZVJlZigqY2xp
ZW50KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbY2xpZW50ID0gbWFrZVJlZigqY2xpZW50KV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNsaWVudC0+Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggODU0NWU4NGNiNTg2ZTQ0YWI5
Yzc5NDE1ZTAwZDZiNmUzNjA3M2I4Zi4uMWQ0NzJlZjBlNzYyMDk4NTgzZjMzMzk2YmEzMjliYzAy
NDcyNGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTg1LDkgKzg1
LDkgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBuZXR3b3JrU3Rh
dGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKLSAg
ICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOworICAgIGJvb2wgcG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAgICAgdm9pZCBwb3N0
VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7Ci0gICAg
UmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KSBmaW5hbDsKKyAgICBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOwogCiAgICAgLy8gV29ya2VyRGVidWdnZXJQcm94eQog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0RlYnVnZ2VyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMWRm
M2IyOTc3MGY3ZjkxZWVmMWU2NmIyNTA5NzBjMzFmMmI0M2ZlMC4uNTYzODAwZGEwYmZjOTJmMzlj
NDk5M2JjNTQ1ZDYzNGJjY2I4ODMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5Qb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldvcmtl
ckV2ZW50TG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUg
IldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9u
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC01NCw3ICs1NSw3IEBA
IFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKGNvbnN0IFdvcmtsZXRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxsV29ya2xldEdsb2Jh
bFNjb3Blc1NldCgpLmFkZCh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0KTsKIAotICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9s
aWN5OjpjcmVhdGUobV90b3BPcmlnaW4uY29weVJlZigpKSk7CisgICAgc2V0U2VjdXJpdHlPcmln
aW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHRoaXMtPnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsK
IH0KIApAQCAtNzEsNyArNzIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxT
Y29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxKU0M6OlZNPiYmIHZtLCBTYwogCiAgICAgQVNT
RVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKLSAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1
cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOworICAgIHNl
dFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHRoaXMtPnVybCgp
IH0sICp0aGlzKSk7CiB9CiAKQEAgLTE4MywxMSArMTg0LDY0IEBAIFJlZmVycmVyUG9saWN5IFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBSZWZl
cnJlclBvbGljeTo6Tm9SZWZlcnJlcjsKIH0KIAotdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmZl
dGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJbnZva2VTY3JpcHQo
Y29uc3QgVVJMJiBtb2R1bGVVUkwsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklY
TUU6IEFkZCBpbXBsZW1lbnRhdGlvbi4KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOworICAgIG1fc2NyaXB0RmV0Y2hKb2JzLmFwcGVuZCh7IG1vZHVsZVVSTCwgY3JlZGVudGlh
bHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOworICAgIHByb2Nlc3NOZXh0U2NyaXB0
RmV0Y2hKb2JJZk5lZWRlZCgpOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vz
c05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9zY3JpcHRGZXRjaEpv
YnMuaXNFbXB0eSgpIHx8IG1fc2NyaXB0TG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBzY3JpcHRGZXRjaEpvYiA9IG1fc2NyaXB0RmV0Y2hKb2JzLmZpcnN0KCk7CisKKyAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IHNjcmlwdEZldGNoSm9iLm1vZHVsZVVSTCB9OworCisg
ICAgRmV0Y2hPcHRpb25zIGZldGNoT3B0aW9uczsKKyAgICBmZXRjaE9wdGlvbnMubW9kZSA9IEZl
dGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKKyAgICBmZXRjaE9wdGlvbnMuY2FjaGUgPSBG
ZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0OworICAgIGZldGNoT3B0aW9ucy5yZWRpcmVjdCA9
IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdzsKKyAgICBmZXRjaE9wdGlvbnMuZGVzdGlu
YXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7CisgICAgZmV0Y2hPcHRp
b25zLmNyZWRlbnRpYWxzID0gc2NyaXB0RmV0Y2hKb2IuY3JlZGVudGlhbHM7CisKKyAgICBhdXRv
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5KCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dDo6RG9Ob3RFbmZvcmNlIDogQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9y
Y2VDaGlsZFNyY0RpcmVjdGl2ZTsKKworICAgIG1fc2NyaXB0TG9hZGVyID0gV29ya2VyU2NyaXB0
TG9hZGVyOjpjcmVhdGUoKTsKKyAgICBtX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5
KCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGZldGNoT3B0aW9ucyksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwgKnRoaXMp
OworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworfQorCit2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6bm90aWZ5RmluaXNoZWQoKQoreworICAgIGF1dG8gY29tcGxldGVkSm9iID0g
bV9zY3JpcHRGZXRjaEpvYnMudGFrZUZpcnN0KCk7CisKKyAgICBpZiAobV9zY3JpcHRMb2FkZXIt
PmZhaWxlZCgpKSB7CisgICAgICAgIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoV1RGTW92ZShj
b21wbGV0ZWRKb2IpLCBFeGNlcHRpb24geyBOZXR3b3JrRXJyb3IsIG1ha2VTdHJpbmcoIkZhaWxl
ZCB0byBmZXRjaCBtb2R1bGUsIGVycm9yOiAiLCBtX3NjcmlwdExvYWRlci0+ZXJyb3IoKS5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgcnVuIGFzIGEgbW9kdWxlIHNjcmlwdCBidXQg
d2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIHdvcmtlcnMgeWV0LgorICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlwdFNvdXJj
ZUNvZGUobV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBVUkwobV9zY3JpcHRMb2FkZXItPnJlc3Bv
bnNlVVJMKCkpKSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICBtX3Nj
cmlwdC0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisKKyAgICBkaWRDb21wbGV0ZVNjcmlwdEZl
dGNoSm9iKFdURk1vdmUoY29tcGxldGVkSm9iKSwgeyB9KTsKK30KKwordm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoU2NyaXB0RmV0Y2hKb2ImJiBqb2Is
IE9wdGlvbmFsPEV4Y2VwdGlvbj4gcmVzdWx0KQoreworICAgIG1fc2NyaXB0TG9hZGVyID0gbnVs
bHB0cjsKKworICAgIGpvYi5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOworCisg
ICAgcHJvY2Vzc05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmgKaW5kZXggNjQ2YWQwNmExNGExNjMzODg5NmFmYzg0MTAwMzE4NzNkYjM3NDZjMi4uMWJkOGI0
YWEzOTVjYzYyYjEwNTgxNzQ2YTJlNTM0Mjg4NTJiYzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTM0LDEwICszNCwxMiBAQAogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlclNj
cmlwdExvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KQEAgLTQ3LDEzICs0OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50
TG9vcFRhc2tHcm91cDsKIGNsYXNzIFdvcmtlckV2ZW50TG9vcDsKK2NsYXNzIFdvcmtlclNjcmlw
dExvYWRlcjsKIAogc3RydWN0IFdvcmtsZXRQYXJhbWV0ZXJzOwogCiBlbnVtIFdvcmtsZXRHbG9i
YWxTY29wZUlkZW50aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBl
PjsKIAotY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xl
dEdsb2JhbFNjb3BlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSB7CitjbGFzcyBXb3JrbGV0R2xvYmFsU2NvcGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBwdWJsaWMg
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdv
cmtsZXRHbG9iYWxTY29wZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2xldEdsb2JhbFNj
b3BlKCk7CkBAIC04MCw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpk
ZXJlZjsKIAogICAgIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSBmaW5hbCB7IHJl
dHVybiBtX3NjcmlwdC5nZXQoKTsgfQorICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogd29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4mJikgZmluYWw7CiAKQEAgLTg5LDcgKzkzLDYgQEAgcHVibGljOgogICAgIFNvY2tldFBy
b3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAg
IC8vIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLgotICAgIFRocmVhZCogdW5kZXJseWluZ1Ro
cmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBib29sIGlzQ2xv
c2luZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNDbG9zaW5nOyB9CiAKICAgICBib29sIGlz
Q29udGV4dFRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTEwMSwxNSAr
MTA0LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmV0Y2hBbmRJbnZva2VTY3JpcHQoY29uc3Qg
VVJMJiwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAKKyAgICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1
bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBjb25zdCBEb2N1bWVudCog
cmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0K
KwogcHJvdGVjdGVkOgogICAgIFdvcmtsZXRHbG9iYWxTY29wZShjb25zdCBXb3JrbGV0UGFyYW1l
dGVycyYpOwogICAgIFdvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYsIFJlZjxKU0M6OlZNPiYm
LCBTY3JpcHRTb3VyY2VDb2RlJiYpOwogICAgIFdvcmtsZXRHbG9iYWxTY29wZShjb25zdCBXb3Jr
bGV0R2xvYmFsU2NvcGUmKSA9IGRlbGV0ZTsKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2xl
dEdsb2JhbFNjb3BlJiYpID0gZGVsZXRlOwogCi0gICAgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9j
dW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9Ci0gICAgY29uc3QgRG9jdW1lbnQq
IHJlc3BvbnNpYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9
Ci0KIHByaXZhdGU6CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSgpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBudWxscHRyOyB9CkBAIC0xMzIsNiArMTM1LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBsb25nKSBmaW5hbDsKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7CiAK
KyAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuCisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOworCiAgICAgRXZlbnRUYXJn
ZXQqIGVycm9yRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAKICNpZiBFTkFC
TEUoV0VCX0NSWVBUTykKQEAgLTE0Myw2ICsxNTAsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVdlYkFzc2Vt
Ymx5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCisgICAgc3RydWN0IFNjcmlwdEZldGNoSm9iIHsK
KyAgICAgICAgVVJMIG1vZHVsZVVSTDsKKyAgICAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMg
Y3JlZGVudGlhbHM7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vz
c05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVNjcmlw
dEZldGNoSm9iKFNjcmlwdEZldGNoSm9iJiYsIE9wdGlvbmFsPEV4Y2VwdGlvbj4pOworCiAgICAg
V2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CkBAIC0xNTUsNiArMTcxLDEwIEBAIHByaXZh
dGU6CiAgICAgVVJMIG1fdXJsOwogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxh
Z3M7CiAgICAgT3B0aW9uYWw8U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOworCisgICAgUmVmUHRy
PFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7CisgICAgRGVxdWU8U2NyaXB0RmV0
Y2hKb2I+IG1fc2NyaXB0RmV0Y2hKb2JzOworCiAgICAgYm9vbCBtX2lzQ2xvc2luZyB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNThkZjFiMWM2ZjVjNDIzZjhlNTJkYTA4YTQzZDE3ZTE1NDc5ZmVl
OC4uMzJiZWEwZDQyZDFmZGYyYzViNmU0MTlhNmU5NDRjNjU1OTM3ZGI0MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIwLTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXBkYXRlIFdvcmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggdGhl
IG1vZHVsZSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1
ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sOiBBZGRlZC4K
KwogMjAyMC0wOS0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBBZGQgbm9uLWFuaW1hdGVkIHN1cHBvcnQgZm9yIHRoZSBDU1MgdHJhbnNsYXRlIHByb3Bl
cnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9k
dWxlLWZhaWx1cmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3Jr
bGV0LWFkZE1vZHVsZS1mYWlsdXJlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzc0NzFlNzJl
Zjg5MDgxNjkzYTNjODBjY2Q2YmNmNmExNjRhMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVsZS1mYWlsdXJlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGF0IEF1ZGlvV29ya2xldC5hZGRNb2R1bGUoKSBy
ZWplY3RzIHRoZSBwcm9taXNlIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUo
aW52YWxpZFVSTCk7IHJlamVjdGVkIHByb21pc2UgIHdpdGggU3ludGF4RXJyb3I6IE1vZHVsZSBV
UkwgaXMgaW52YWxpZC4KK1BBU1MgY29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxlKCdkb2Vz
bm90RXhpc3QuanMnKTsgcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBOZXR3b3JrRXJyb3I6IEZhaWxl
ZCB0byBmZXRjaCBtb2R1bGUsIGVycm9yOiBUaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5k
IG9uIHRoaXMgc2VydmVyLi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmts
ZXQtYWRkTW9kdWxlLWZhaWx1cmUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29y
a2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNzU3ZDcwM2UzYjYzZTdm
OWQ0NTk3M2EwYWY4Y2M1M2RlYTYzYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUuaHRtbApAQCAtMCwwICsxLDIx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IEF1ZGlvV29ya2xldC5hZGRNb2R1bGUoKSByZWplY3RzIHRoZSBwcm9taXNlIHdoZW4g
dGhlIFVSTCBpcyBpbnZhbGlkLiIpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2NvbnN0IGlu
dmFsaWRVUkwgPSAiaHR0cDovL2ludmFsaWQ6dXJsIjsKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICBjb250ZXh0ID0gbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMiwgMTAwLCA0NDEwMCk7
CisgICAgYXdhaXQgc2hvdWxkUmVqZWN0V2l0aEVycm9yTmFtZSgiY29udGV4dC5hdWRpb1dvcmts
ZXQuYWRkTW9kdWxlKGludmFsaWRVUkwpOyIsICJTeW50YXhFcnJvciIpOworICAgIGF3YWl0IHNo
b3VsZFJlamVjdFdpdGhFcnJvck5hbWUoImNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZSgn
ZG9lc25vdEV4aXN0LmpzJyk7IiwgIk5ldHdvcmtFcnJvciIpOworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410647</attachid>
            <date>2020-10-06 09:36:41 -0700</date>
            <delta_ts>2020-10-06 09:37:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201006093640.patch</filename>
            <type>text/plain</type>
            <size>86041</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3OTU0NzFjNzJhMjZh
NzQ4NGE1OGJmOWFjYTVhYzQwNzMxOWUyOS4uOTE0ZWYzZTBkYWI3ZWZlYjBjYjE5ODk2YzUyYTFi
Yzg2Yzk5OGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0xMC0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIGFuZCBldmFsdWF0ZSB0aGUgbW9kdWxlIHNjcmlw
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVXBkYXRl
IFdvcmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggYW5kIGV2YWx1YXRlIHRoZSBt
b2R1bGUgc2NyaXB0IGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd29y
a2xldHMtMS8jZG9tLXdvcmtsZXQtYWRkbW9kdWxlCisKKyAgICAgICAgVGhlIFdvcmtsZXRHbG9i
YWxTY29wZSBtYWludGFpbnMgYSBxdWV1ZSBhIGZldGNoIHJlcXVlc3RzIChiYXNpY2FsbHkgYSBV
UkwgYW5kIGEgY29tcGxldGlvbiBoYW5kbGVyKSBhbmQgdXNlcworICAgICAgICB0aGUgZXhpc3Rp
bmcgV29ya2VyU2NyaXB0TG9hZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3RzIHNlcmlhbGx5LiBC
YXNlZCBvbiB0aGUgcmVzdWx0IG9uIHRoZSBsb2FkLCB3ZSBjYWxsIHRoZQorICAgICAgICBDb21w
bGV0aW9uSGFuZGxlciB3aGljaCB3aWxsIGNhdXNlIHRoZSBXb3JrbGV0LmFkZE1vZHVsZSgpIHBy
b21pc2UgdG8gZ2V0IHJlc29sdmVkIG9yIHJlamVjdGVkLgorCisgICAgICAgIFRlc3Q6IHdlYmF1
ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgIFByb3ZpZGUg
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgb3ZlcnJpZGUgZm9yIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKCksIHdoaWNoIGlzIGEgcmVwbGFjZW1lbnQKKyAgICAgICAgZm9yIHVuZGVybHlpbmdU
aHJlYWQoKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJv
eHk6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9h
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgIFVwZGF0
ZSBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSB0byBzdWJjbGFzcyBXb3JrZXJMb2FkZXJQcm94
eSBzbyB0aGF0IEF1ZGlvV29ya2xldCBjYW4gcmV1c2UKKyAgICAgICAgV29ya2VyU2NyaXB0TG9h
ZGVyLiBXb3JrZXJTY3JpcHRMb2FkZXIgcmVsaWVzIG9uIFdvcmtlckxvYWRlclByb3h5IHRvIGRv
IHRocmVhZCBob3BwaW5nLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjpBdWRp
b1dvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0VGhyZWFkOjp3
b3JrZXJMb2FkZXJQcm94eSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRl
KToKKyAgICAgICAgU3ViY2xhc3MgdGhlIG5ldyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaW50ZXJm
YWNlLiBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaXMgYSBuZXcgaW50ZXJmYWNlIHRoYXQKKyAgICAg
ICAgd2FzIGFkZGluZyBzbyB0aGF0IFdvcmtlclNjcmlwdExvYWRlciBjYW4gYmUgcmV1c2VkIGJ5
IEF1ZGlvV29ya2xldHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hh
a2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGdyYWRl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAgICAgICAgU2ltcGxlIHJlbmFtaW5n
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6bm90aWZ5SXNEb25lKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmluaXNoVGltaW5nKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKToKKyAgICAgICAgVXBkYXRlIFdvcmtlclRocmVhZGFibGVMb2FkZXIgc28gdGhh
dCBpdCBjYW4gYmUgcmV1c2VkIGJ5IEF1ZGlvV29ya2xldHMuCisKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNj
b3BlOjp3cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojp1bndyYXBDcnlwdG9LZXkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aDoKKyAgICAgICAgTWlub3IgY2hhbmdlcyB0byBrZWVwIGJ1aWxkaW5nIGFmdGVyIHVwZGF0ZXMg
dG8gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckxvYWRlclByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICBTaW1wbGUgcmVuYW1l
cy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKToKKyAgICAgICAgVXBkYXRlIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIHRv
IGFkZCBhIGZldyB0aGluZ3MgV29ya2VyU2NyaXB0TG9hZGVyIG5lZWRlZCB0byB3b3JrIHdpdGgK
KyAgICAgICAgYm90aCBXb3JrZXJzIGFuZCBXb3JrbGV0cy4KKworICAgICAgICAqIHdvcmtlcnMv
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6IEFkZGVkLgorICAgICAgICBBZGRlZCBuZXcgcGFyZW50
IGludGVyZmFjZSBmb3IgV29ya2VyVGhyZWFkIGFuZCBBdWRpb1dvcmtsZXRUaHJlYWQgc28gdGhh
dCBXb3JrZXJTY3JpcHRMb2FkZXIKKyAgICAgICAgY2FuIHdvcmsgZm9yIGJvdGggV29ya2VycyBh
bmQgV29ya2xldHMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyk6CisgICAgICAgIE1pbm9yIGNoYW5n
ZXMgdG8ga2VlcCBidWlsZGluZyBhZnRlciBjaGFuZ2VzIHRvIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgU3Vi
Y2xhc3MgdGhlIG5ldyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgaW50ZXJmYWNlLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
dGFydEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgU2ltcGxl
IHJlbmFtZXMuCisKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUp
OgorICAgICAgICBNYWtlIHN1cmUgd2UgY29ycmVjdGx5IGluaXRpYWxpemUgdGhlIHNlY3VyaXR5
IG9yaWdpbiBmb3IgdGhlIFdvcmtsZXRHbG9iYWxTY29wZS4KKyAgICAgICAgUHJldmlvdXNseSwg
d2Ugd2VyZSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gc28gYWxsIHNjcmlwdCBsb2FkcyB3b3VsZCBo
YXZlIGZhaWxlZAorICAgICAgICB3aXRoIGEgY3Jvc3Mtb3JpZ2luIGVycm9yLgorCisgICAgICAg
IChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmZldGNoQW5kSW52b2tlU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cHJvY2Vzc05leHRTY3JpcHRGZXRj
aEpvYklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpk
aWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cmVzcG9u
c2libGVEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJl
c3BvbnNpYmxlRG9jdW1lbnQgY29uc3QpOgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gZm9y
IG1vZHVsZSBzY3JpcHQgZmV0Y2hpbmcgdXNpbmcgV29ya2VyU2NyaXB0TG9hZGVyLiBUaGlzIGdl
dHMgY2FsbGVkCisgICAgICAgIHdoZW4gV29ya2xldC5hZGRNb2R1bGUoKSBpcyBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLgorCiAyMDIwLTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKCkgdG8gc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBldmVyeXdoZXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA0NjkxMTAyZGM5ZmY0NTBkNTAxNjVkMGQ2YjFhZWFlZmNhMzgxNzAwLi4xZmI5
NWM3ZDAwZGMwYjU3OTA0ODJmNWZmZDBhNDdmZjQyYWJhZDczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTE1MjIsNiArMTUyMiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICB3b3JrZXJzL1dvcmtlckFuaW1hdGlvbkNvbnRyb2xsZXIuaAogICAgIHdvcmtlcnMv
V29ya2VyRGVidWdnZXJQcm94eS5oCiAgICAgd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCisg
ICAgd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAogICAgIHdvcmtlcnMvV29ya2VyUnVu
TG9vcC5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggODE4ZTI0
ZDFlMGI2Mzk3OWU5YzI2ZjEwYmRmOTdhZmNiMzQ1ZTBiMi4uZTY2ZjBlMWNkZDY1ZDllODU4ZmQz
ODhkODZmYzkyY2VhMTUwOTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgogCiAjaW5jbHVkZSAi
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJBdWRpb1dvcmts
ZXRUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NCw5ICs1MywyNSBAQCB2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNj
b3BlOjpyZWdpc3RlclByb2Nlc3NvcihTdHJpbmcmJiBuYW1lLCBSZWY8QXVkaW9Xb3JrbGV0UAog
ICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKIH0KIAotVGhyZWFkKiBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZTo6dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0Cit2b2lkIEF1ZGlvV29ya2xldEdsb2JhbFNj
b3BlOjpwcmVwYXJlRm9yVGVybWluYXRpb24oKQogewotICAgIHJldHVybiBtX3RocmVhZC0+dGhy
ZWFkKCk7CisgICAgaWYgKGF1dG8qIGRlZmF1bHRUYXNrR3JvdXAgPSB0aGlzLT5kZWZhdWx0VGFz
a0dyb3VwKCkpCisgICAgICAgIGRlZmF1bHRUYXNrR3JvdXAtPnN0b3BBbmREaXNjYXJkQWxsVGFz
a3MoKTsKKyAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworCisgICAgLy8gRXZlbnQgbGlzdGVu
ZXJzIHdvdWxkIGtlZXAgRE9NV3JhcHBlcldvcmxkIG9iamVjdHMgYWxpdmUgZm9yIHRvbyBsb25n
LiBBbHNvLCB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byBKUyBvYmplY3RzLAorICAgIC8vIHdoaWNo
IGJlY29tZSBkYW5nbGluZyBvbmNlIEhlYXAgaXMgZGVzdHJveWVkLgorICAgIHJlbW92ZUFsbEV2
ZW50TGlzdGVuZXJzKCk7CisKKyAgICAvLyBNaWNyb3Rhc2tRdWV1ZSBhbmQgUmVqZWN0ZWRQcm9t
aXNlVHJhY2tlciByZWZlcmVuY2UgSGVhcC4KKyAgICBpZiAoYXV0byogZXZlbnRMb29wID0gdGhp
cy0+ZXhpc3RpbmdFdmVudExvb3AoKSkKKyAgICAgICAgZXZlbnRMb29wLT5jbGVhck1pY3JvdGFz
a1F1ZXVlKCk7CisgICAgcmVtb3ZlUmVqZWN0ZWRQcm9taXNlVHJhY2tlcigpOworfQorCit2b2lk
IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpwb3N0VGFzayhUYXNrJiYgdGFzaykKK3sKKyAgICB0
aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCAzYTQxMDYwYmM2MmQzY2IxNDJi
ZjIzNmZhZjc3NWI2MDc4NjY4MGM5Li5mZTE0NzA5YWJiNGMzYWZiNGY5MGUyZTliOWE1YTFiZjNi
ZDhjZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFk
LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUyLDEyICs1MywxNiBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVy
biA0NDEwMDsgfQogCi0gICAgVGhyZWFkKiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgZmluYWw7
CisgICAgQXVkaW9Xb3JrbGV0VGhyZWFkJiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQorICAgIHZvaWQgcHJlcGFyZUZvclRlcm1pbmF0aW9uKCk7CisKKyAgICB2b2lkIHBvc3RU
YXNrKFRhc2smJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgQXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGUoQXVkaW9Xb3JrbGV0VGhyZWFkJiwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKIAogICAg
IGJvb2wgaXNBdWRpb1dvcmtsZXRHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBBdWRpb1dvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGZp
bmFsIHsgcmV0dXJuIG1fdGhyZWFkLnB0cigpOyB9CiAKICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhy
ZWFkPiBtX3RocmVhZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGQ0MzZj
MWM4NjAxZGRmODc2NzY1OTVmYWUxMjQzNDA0YzE2YjVhYmEuLjU3MmMyY2ViNGIxY2MzMTllNmQw
NDY4M2QzNzE4Zjk2NGI4MGUxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0LmgiCiAjaW5jbHVkZSAiQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRUaHJlYWQuaCIKKyNp
bmNsdWRlICJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01MywxNCArNTQs
MTggQEAgc3RhdGljIFdvcmtsZXRQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2xldFBhcmFtZXRlcnMo
QXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQogfQogCiBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkoQXVkaW9Xb3JrbGV0JiB3b3JrbGV0KQotICAgIDog
bV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKGdlbmVyYXRlV29ya2xl
dFBhcmFtZXRlcnMod29ya2xldCkpKQorICAgIDogbV9kb2N1bWVudCgqd29ya2xldC5kb2N1bWVu
dCgpKQorICAgICwgbV93b3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldFRocmVhZDo6Y3JlYXRlKCp0
aGlzLCBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCiAgICAgbV93b3JrbGV0VGhyZWFkLT5zdGFydCgpOwogfQogCi1B
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6fkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KCkg
PSBkZWZhdWx0OworQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eSgpCit7CisgICAgbV93b3JrbGV0VGhyZWFkLT5zdG9wKCk7Cit9CiAKIGJvb2wg
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2Jh
bFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7CkBAIC02OCw2ICs3MywyMiBAQCBib29sIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdQogICAg
IHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIG1fZG9jdW1lbnQtPnBvc3RUYXNrKFdU
Rk1vdmUodGFzaykpOworfQorCitib29sIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit7CisgICAgcmV0dXJuIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFdURk1vdmUodGFzayksIG1vZGUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCmluZGV4IDc1ZmY0MTBmNTI4MjYwZmVjMDFiM2RjMTk3
YmNjOTAyZTE2Y2YzZDIuLjlkZTg5YzY0MjJkMzA0OTFiNmVmMWE5MjNkNjJmMGFmYzMxZjQ4N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
TWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgKQEAgLTI5LDE0ICsyOSwxNiBAQAogI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5
LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlUHJveHkuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdWRpb1dvcmtsZXQ7CiBjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQ7
CitjbGFzcyBEb2N1bWVudDsKIAotY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgOiBw
dWJsaWMgV29ya2xldEdsb2JhbFNjb3BlUHJveHkgeworY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHkgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJM
b2FkZXJQcm94eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eT4gY3JlYXRlKEF1ZGlvV29ya2xldCYgd29ya2xldCkKICAgICB7CkBAIC01MSw4ICs1
MywxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5KEF1ZGlvV29ya2xldCYpOwogCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkuCisg
ICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24oKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmKSBmaW5hbDsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25z
dCBTdHJpbmcmIG1vZGUpIGZpbmFsOworCiAgICAgYm9vbCBpc0F1ZGlvV29ya2xldE1lc3NhZ2lu
Z1Byb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgUmVmPERvY3VtZW50
PiBtX2RvY3VtZW50OwogICAgIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IG1fd29ya2xldFRocmVh
ZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0VGhyZWFkLmNwcAppbmRleCBjMjRlNjY0NjRlNTZkMzRjZWMyMDdjMmJiZGEwNGYy
MWRhNGIyZWYyLi44YWViN2VlZmQyMzQ2ODcyNTBiZWQ5MjU4MTU4YzRmNzQzMDdmNTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRU
aHJlYWQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFk
LmgiCiAKICNpbmNsdWRlICJBdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIkF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
I2luY2x1ZGUgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgpAQCAtNDMsMTEgKzQ0LDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9Xb3JrbGV0VGhyZWFkOjpBdWRpb1dvcmts
ZXRUaHJlYWQoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCi0gICAgOiBtX3Bh
cmFtZXRlcnMocGFyYW1ldGVycy5pc29sYXRlZENvcHkoKSkKK0F1ZGlvV29ya2xldFRocmVhZDo6
QXVkaW9Xb3JrbGV0VGhyZWFkKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNzYWdpbmdQ
cm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgOiBtX21lc3Nh
Z2luZ1Byb3h5KG1lc3NhZ2luZ1Byb3h5KQorICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMu
aXNvbGF0ZWRDb3B5KCkpCiB7CiB9CiAKK0F1ZGlvV29ya2xldFRocmVhZDo6fkF1ZGlvV29ya2xl
dFRocmVhZCgpID0gZGVmYXVsdDsKKwogdm9pZCBBdWRpb1dvcmtsZXRUaHJlYWQ6OnN0YXJ0KCkK
IHsKICAgICBhdXRvIGxvY2sgPSBob2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5kV29ya2xldEds
b2JhbFNjb3BlTG9jayk7CkBAIC02MCw2ICs2NCw0NCBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVh
ZDo6c3RhcnQoKQogICAgIG1fdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpOwogfQogCit2b2lkIEF1
ZGlvV29ya2xldFRocmVhZDo6c3RvcCgpCit7CisgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBu
ZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgbV93b3JrZXJHbG9iYWxTY29wZSBpc24ndCBjaGFuZ2Vk
IGJ5CisgICAgLy8gV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKSB3aGlsZSB3ZSdyZSBhY2Nl
c3NpbmcgaXQuIE5vdGUgYWxzbyB0aGF0IHN0b3AoKSBjYW4KKyAgICAvLyBiZSBjYWxsZWQgYmVm
b3JlIG1fd29ya2VyR2xvYmFsU2NvcGUgaXMgZnVsbHkgY3JlYXRlZC4KKyAgICBhdXRvIGxvY2tl
ciA9IHRyeUhvbGRMb2NrKG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrbGV0R2xvYmFsU2NvcGVMb2Nr
KTsKKyAgICBpZiAoIWxvY2tlcikgeworICAgICAgICAvLyBUaGUgdGhyZWFkIGlzIHN0aWxsIHN0
YXJ0aW5nLCBzcGluIHRoZSBydW5sb29wIGFuZCB0cnkgYWdhaW4gdG8gYXZvaWQgZGVhZGxvY2tz
IGlmIHRoZSB3b3JrZXIgdGhyZWFkCisgICAgICAgIC8vIG5lZWRzIHRvIGludGVyYWN0IHdpdGgg
dGhlIG1haW4gdGhyZWFkIGR1cmluZyBzdGFydHVwLgorICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzXSgpIG11dGFibGUgeworICAgICAgICAgICAgc3RvcCgpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHRhc2tzIGFyZSBiZWlu
ZyBoYW5kbGVkIGJ5IHRocmVhZCBldmVudCBsb29wLiBJZiBzY3JpcHQgZXhlY3V0aW9uIHdlcmVu
J3QgZm9yYmlkZGVuLCBhIHdoaWxlKDEpIGxvb3AgaW4gSlMgY291bGQga2VlcCB0aGUgdGhyZWFk
IGFsaXZlIGZvcmV2ZXIuCisgICAgaWYgKG1fd29ya2xldEdsb2JhbFNjb3BlKSB7CisgICAgICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlLT5zY3JpcHQoKS0+c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5h
dGlvbigpOworCisgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRlcm1pbmF0ZSh7IFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCApIHsKKyAgICAgICAgICAgIGF1dG8mIHdvcmtsZXRHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KTsKKworICAgICAg
ICAgICAgd29ya2xldEdsb2JhbFNjb3BlLnByZXBhcmVGb3JUZXJtaW5hdGlvbigpOworCisgICAg
ICAgICAgICAvLyBTdGljayBhIHNodXRkb3duIGNvbW1hbmQgYXQgdGhlIGVuZCBvZiB0aGUgcXVl
dWUsIHNvIHRoYXQgd2UgZGVhbAorICAgICAgICAgICAgLy8gd2l0aCBhbGwgdGhlIGNsZWFudXAg
dGFza3MgdGhlIGRhdGFiYXNlcyBwb3N0IGZpcnN0LgorICAgICAgICAgICAgd29ya2xldEdsb2Jh
bFNjb3BlLnBvc3RUYXNrKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRh
c2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgYXV0byYgd29ya2xldEdsb2JhbFNjb3BlID0gZG93bmNhc3Q8QXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU+KGNvbnRleHQpOworICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IHNhZmUgdG8gY2Fs
bCBjbGVhclNjcmlwdCB1bnRpbCBhbGwgdGhlIGNsZWFudXAgdGFza3MgcG9zdGVkIGJ5IGZ1bmN0
aW9ucyBpbml0aWF0ZWQgYnkgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2sgaGF2ZSBjb21w
bGV0ZWQuCisgICAgICAgICAgICAgICAgd29ya2xldEdsb2JhbFNjb3BlLmNsZWFyU2NyaXB0KCk7
CisgICAgICAgICAgICB9IH0pOworCisgICAgICAgIH0gfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9ydW5Mb29wLnRlcm1pbmF0ZSgpOworfQorCiB2b2lkIEF1ZGlvV29ya2xldFRo
cmVhZDo6d29ya2xldFRocmVhZCgpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CkBAIC0xMjksNiArMTcxLDExIEBAIHZvaWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpy
dW5FdmVudExvb3AoKQogICAgIG1fcnVuTG9vcC5ydW4obV93b3JrbGV0R2xvYmFsU2NvcGUuZ2V0
KCkpOwogfQogCitXb3JrZXJMb2FkZXJQcm94eSYgQXVkaW9Xb3JrbGV0VGhyZWFkOjp3b3JrZXJM
b2FkZXJQcm94eSgpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnaW5nUHJveHk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaApp
bmRleCA3MjNmNmE4NTIzNmMxODc4NzY0NzI2YzZiNjNiZGIwMDRhNDMxOTRmLi44MDJlZGZjZTcz
MzAwNjAzN2RhMmU1YjlhNWU5Nzk1ZTRiMjQ1NmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVk
ZSAiV29ya2xldFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzks
MjUgKzQwLDMxIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvV29ya2xldEds
b2JhbFNjb3BlOworY2xhc3MgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk7CiAKLWNsYXNzIEF1
ZGlvV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1dvcmts
ZXRUaHJlYWQ+IHsKK2NsYXNzIEF1ZGlvV29ya2xldFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb1dvcmtsZXRUaHJlYWQ+LCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvV29ya2xldFRocmVhZD4gY3JlYXRl
KGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIHN0YXRpYyBSZWY8QXVk
aW9Xb3JrbGV0VGhyZWFkPiBjcmVhdGUoQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1lc3Nh
Z2luZ1Byb3h5LCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFRocmVhZChwYXJhbWV0ZXJz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFRocmVhZChtZXNz
YWdpbmdQcm94eSwgcGFyYW1ldGVycykpOwogICAgIH0KKyAgICB+QXVkaW9Xb3JrbGV0VGhyZWFk
KCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CiAKLSAgICBXb3JrZXJS
dW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9Ci0gICAgVGhyZWFkKiB0aHJl
YWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQorICAgIC8vIFdvcmtlck9yV29y
a2xldFRocmVhZC4KKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4g
bV9ydW5Mb29wOyB9CisgICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkg
ZmluYWw7CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVh
ZC5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldFRocmVhZChj
b25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOworICAgIEF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dv
cmtsZXRNZXNzYWdpbmdQcm94eSYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAKICAgICB2
b2lkIHJ1bkV2ZW50TG9vcCgpOwogICAgIHZvaWQgd29ya2xldFRocmVhZCgpOwogCisgICAgQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkmIG1fbWVzc2FnaW5nUHJveHk7CiAgICAgUmVmUHRyPFRo
cmVhZD4gbV90aHJlYWQ7CiAgICAgV29ya2VyUnVuTG9vcCBtX3J1bkxvb3A7CiAgICAgV29ya2xl
dFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggMmRjOGUxNDIwNThhNmUyYmI3MWYyNWRmNDlmYzJhZGMzNDRhZDAx
MS4uYWM1ZjBkM2NiY2Q0MDM4ZjI4ZDNhYjJjNTBlNTk4Mzc0ZGIyYzMwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hh
bm5lbC0+c2VuZChtZXNzYWdlKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBz
ZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVz
dFJlc3VsdCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0xODYsNyArMTg2LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJh
eUJ1ZmZlciYgYmluYXJ5RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJT
b2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEsIDAsIGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgp
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0
UmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7CiAgICAgfSwg
bV90YXNrTW9kZSk7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5k
UmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3
b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVzdFJl
c3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2VyQ2xpZW50V3Jh
cHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwogICAgIH0sIG1f
dGFza01vZGUpOwogfQpAQCAtMjEwLDggKzIxMCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgdW5zaWduZWQgYnVmZmVyZWRBbW91bnQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5i
dWZmZXJlZEFtb3VudCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7
CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yNjMsOCArMjYzLDggQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiAKICAgICBTdHJp
bmcgc3VicHJvdG9jb2wgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJwcm90b2NvbCgpOwog
ICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9u
cygpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9j
b2wgPSBzdWJwcm90b2NvbC5pc29sYXRlZENvcHkoKSwgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMu
aXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
ewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxT
Y29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIHN1YnByb3RvY29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMg
PSBleHRlbnNpb25zLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwog
ICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTdWJwcm90b2NvbChzdWJwcm90b2NvbCk7
CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7
CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENvbm5lY3QoKTsKQEAgLTI3NSw4ICsy
NzUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRS
ZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lcwogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1lc3Nh
Z2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dv
cmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yODUsOCAr
Mjg1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5h
cnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNX
b3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0sIG1fdGFza01vZGUp
OwogfQpAQCAtMjk1LDggKzI5NSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGJ1CiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkp
OwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChi
dWZmZXJlZEFtb3VudCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0zMDUsOCArMzA1LDgg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAg
ICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAg
ICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTMxNiwxOCArMzE2LDE4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxl
ZEJ1ZmZlcmVkCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX21haW5XZWJTb2Nr
ZXRDaGFubmVsID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7Ci0gICAgICAgIH0sIG1fdGFza01v
ZGUpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2Rl
LCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUo
KSk7CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZl
cmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKKyAg
ICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRH
bG9iYWxTY29wZSgpKTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMzM2LDggKzMzNiw4IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFVwZ3JhZGVV
UkwoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCi0gICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3Jr
ZXJDbGllbnRXcmFwcGVyLT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9
CkBAIC0zNjEsMTAgKzM2MSwxMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQuaXNEb2N1bWVudCgpKTsKIAot
ICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoeworICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrOjpDbGVhbnVwVGFzaywKICAgICAgICAgW2NsaWVudFdyYXBwZXIsICZsb2FkZXJQcm94
eSwgcGVlciA9IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRl
clByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBj
b250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdy
YXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRv
IGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCiAgICAgICAgICAg
ICAgICAgbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IFdURk1vdmUocGVlcild
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkN2JkMzcwOTIwOWFhZWNi
NzljN2NkNmFkYjE1ZDJlMTBlNzliOTkzLi5iZGI0YTkwYTY2N2ZiMzA1NjYxZWNmZDdhNjFmMTlm
MTk2OGRkOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yNTQ5LDYgKzI1NDksNyBAQAogCQk4M0U4NjY4MDFGQkE1NjVCMDA4
ODU1QzUgLyogU2VydmljZVdvcmtlckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTg2NjdEMUZCQTU2M0YwMDg4NTVDNSAvKiBTZXJ2aWNlV29y
a2VyRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzRUU1OThGMUY1MDk1OEUwMDNFOEIzMCAvKiBKU0Vycm9yQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRUU1OThCMUY1MDk1OEIw
MDNFOEIzMCAvKiBKU0Vycm9yQ2FsbGJhY2suaCAqLzsgfTsKIAkJODNGMjhDMDAyNERCMURFMTAw
NUJBNkY2IC8qIENvbnZvbHZlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzRjI4QkZEMjREQjFERDMwMDVCQTZGNiAvKiBDb252b2x2ZXJP
cHRpb25zLmggKi87IH07CisJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBXb3JrZXJPcldv
cmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzRTgyOEIyMjUyNzk0Q0QwMDI3RTBGNyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0ZCMzM3
MTFGNTA4QTU0MDA5ODZFNTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCMzM2RDFGNTA4QTRFMDA5
ODZFNTQgLyogRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CiAJCTgzRkIzMzczMUY1
MDhBNTgwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRkIzMzZGMUY1MDhBNEUwMDk4NkU1NCAvKiBGaWxl
U3lzdGVtRW50cnkuaCAqLzsgfTsKIAkJODNGQjMzNzUxRjUwOEE1QjAwOTg2RTU0IC8qIEZpbGVT
eXN0ZW1GaWxlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzRkIzMzZDMUY1MDhBNEUwMDk4NkU1NCAvKiBGaWxlU3lzdGVtRmlsZUVudHJ5Lmgg
Ki87IH07CkBAIC0xMDgxMyw2ICsxMDgxNCw3IEBACiAJCTgzRTA0NUVGMURBQTEwNEYwMEIwRDhC
OSAvKiBKU1VJRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VUlFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFMzU5QTAxQkIx
MDMxRDAwMkNFQjk4IC8qIEpTSFRNTFRpbWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzRTM1OUExMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxUaW1lRWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRTgyOEIyMjUyNzk0Q0QwMDI3RTBG
NyAvKiBXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzRTg2NjdEMUZCQTU2M0YwMDg4NTVDNSAvKiBTZXJ2aWNlV29ya2VyRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0U4NjY3RjFGQkE1NjQwMDA4ODU1QzUgLyogU2Vydmlj
ZVdvcmtlckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vy
dmljZVdvcmtlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0U5NTlF
MTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXRpdmVOb2RlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODc4OCw2ICsxODc5MCw3IEBACiAJCQkJMkU0MzQ2M0YwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlck9iamVjdFByb3h5LmggKi8sCiAJCQkJODNENkFBRTQyNTI0RUUxMzAwNDI4
QjRCIC8qIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggKi8sCiAJCQkJODM5QTA5NUIyNTI0
RjM3NjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCAqLywKKwkJ
CQk4M0U4MjhCMjI1Mjc5NENEMDAyN0UwRjcgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggKi8s
CiAJCQkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5Lmgg
Ki8sCiAJCQkJMkU0MzQ2NDAwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuY3BwICov
LAogCQkJCTJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi8sCkBA
IC0zMTIyMSw5ICszMTIyNCw3IEBACiAJCQkJODM1RDU0QzUxRjRERTUzODAwRTYwNjcxIC8qIERp
cmVjdG9yeUZpbGVMaXN0Q3JlYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTA5RDEyMEE5
M0E5NzAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdFREFBRkM5MTlBMkNDREMwMDM0REZEMSAvKiBEaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwRjQyMjUxN0NFNkUw
MDlCQTAzNCAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2
RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQwODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBE
RTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTIz
Niw3ICszMTIzNyw2IEBACiAJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFNzAwMjMxOTJGRTgyQTAw
QjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQyOUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJ
bnRlZ3JhdGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3OTBGNDMyNTE3Q0U2RTAwOUJB
MDM0IC8qIERpc3BsYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5MTEyQjAyNkY3
MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDQwMjgzMjQ5QTdB
NjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTky
Nyw2ICszMTkyNyw3IEBACiAJCQkJNkZDM0Y5NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZUxp
bmVSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NTc3NUNFMjQxNDM3RDUwMDJERjFBMCAvKiBJ
bmxpbmVQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY0MERBODIyNTEzMDMzQTAwRUMw
NEI3IC8qIElubGluZVJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjNCMjUyQUVFQ0Qw
MDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMzYw
RTUwMjM5OTk0MjEwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUE0QzNBNzcwQjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRP
d25lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElu
bGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLApAQCAtMzI4OTUsOCArMzI4OTYsMTEgQEAKIAkJ
CQk2RjBCOThCNTIzRjI2OEVDMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQxODAyNTUyM0Q0NTQ5QjAwRkZCMDcxIC8qIExheW91dEludGVncmF0
aW9uQm94VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQwM0I3QTIyNTFCMTE5MzAwMTlFODAw
IC8qIExheW91dEludGVncmF0aW9uQ292ZXJhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NTFD
NjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRl
Z3JhdGlvbkxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkREMjM2MDg4RkUwMEZBNDM0
NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
MDNCN0EzMjUxQjExQzEwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBMYXlvdXRJbnRl
Z3JhdGlvblJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0MyNTIxRDRBRjAwNzA4MURD
IC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
QTY2NENGMjUyMUQ0RTIwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBNjY0Q0UyNTIxRDRDOTAwNzA4MURDIC8q
IExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmggaW4gSGVhZGVycyAqLywK
QEAgLTM0NzQxLDYgKzM0NzQ1LDcgQEAKIAkJCQkyRTQzNDY1MTBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRDZBQUU2MjUyNEVFMUMw
MDQyOEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODM5QTA5NUQyNTI0RjM3RjAwRUVGMzI4IC8qIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzRjZBRUJGMjUyN0JCMEMwMDM0QkNEMyAvKiBX
b3JrZXJPcldvcmtsZXRUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5
NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkU0MzQ2NTMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1QjgxQ0NGMUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzQ4MDEsNyArMzQ4MDYsNiBAQAogCQkJCUUxRUU4Qjk5MjQxMzE5
NTAwMEU3OTRENiAvKiBYUklucHV0U291cmNlc0NoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMTJBOUY0QTI0OEE5OUUyMDAzRjA2QzggLyogWFJJbnRlcmFjdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRUU4Qjg0MjQxMzE5MUYwMEU3OTRENiAvKiBYUlJlZmVyZW5jZVNw
YWNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RDMzRjNCMjUyQUVFQ0QwMDgzN0QwNSAv
KiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU4Qjc3MjQxMzE5
MUYwMEU3OTRENiAvKiBYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFFRThCNzkyNDEzMTkxRjAwRTc5NEQ2IC8qIFhSUmVuZGVyU3RhdGVJbml0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUVFOEI4RDI0MTMxOTUwMDBFNzk0RDYgLyogWFJTZXNzaW9uRXZlbnQuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFi
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGM3ZTBmMzFiZTcyMDZmZWY4ZGFhZDE4NDYxZTRmNWEyNGJiZjdkNjIuLjI3MTdjODYx
Yzc0YjBmMmFlYmNkZTQwODcwMGUyYTlhMDM3Mzc1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAyLDEwICsxMDMsMTYgQEAgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAKIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYg
Y2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIGNsaWVu
dCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgV1RGTW92ZShyZWZlcnJlcikpOworICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkgfHwgKGlzPFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkgJiYgZG93bmNhc3Q8V29y
a2xldEdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKSkpCisgICAg
ICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmPihjb250ZXh0KSwgY2xpZW50LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVy
cmVyKSk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOworICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkucmVzcG9uc2libGVEb2N1bWVudCgpOworICAg
IGVsc2UKKyAgICAgICAgZG9jdW1lbnQgPSAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwog
Ci0gICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgY2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZN
b3ZlKHJlZmVycmVyKSk7CisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKCpkb2N1bWVudCwgY2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3Zl
KHJlZmVycmVyKSk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDZmODI4NzMzOWI0ZmM1ZDAwYjdkYmE1
MDM4MzA1NDU0NmViYThiMTUuLmUxMTM5NmJmZDgzMzZlM2U4Njc0YTQ5Y2I1YzgxODRiZjE1ODBh
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTQzLDE5ICs0MywyMCBAQAogI2luY2x1ZGUgIlJlc291cmNlVGltaW5nLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlci5oIgotI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29y
a2VyTG9hZGVyUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdvcmtl
clRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQot
ICAgIDogbV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKK1dvcmtlclRocmVh
ZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQorICAgIDogbV9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSh3b3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSkKICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKGNsaWVudCwgb3B0aW9ucy5pbml0aWF0b3IpKQot
ICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBl
ci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwg
dGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/
IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIDogcmVm
ZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlKSkKKyAgICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVh
ZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCksIHdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNr
TW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkg
OiByZWZlcnJlciwgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpKQogewogfQogCkBAIC02NCwx
NyArNjUsMTcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2Fk
ZXIoKQogICAgIG1fYnJpZGdlLmRlc3Ryb3koKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlJiB3b3Jr
ZXJHbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykK
K3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV29ya2VyUnVu
TG9vcCYgcnVuTG9vcCA9IHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKTsKKyAg
ICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKTsKIAogICAgIC8vIENyZWF0ZSBhIHVuaXF1
ZSBtb2RlIGp1c3QgZm9yIHRoaXMgc3luY2hyb25vdXMgcmVzb3VyY2UgbG9hZC4KICAgICBTdHJp
bmcgbW9kZSA9IG1ha2VTdHJpbmcoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlIiwgcnVu
TG9vcC5jcmVhdGVVbmlxdWVJZCgpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIG1vZGUsIFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKKyAgICBhdXRvIGxvYWRlciA9IFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgY2xp
ZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CiAgICAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7
CiAgICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVy
bWluYXRlZCkKLSAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlckdsb2Jh
bFNjb3BlLCBtb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLCBtb2RlKTsKIAogICAgIGlmICghbG9hZGVyLT5kb25lKCkg
JiYgcmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCiAgICAgICAgIGxvYWRlci0+Y2Fu
Y2VsKCk7CkBAIC0xMDcsNyArMTA4LDcgQEAgTG9hZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tP
cHRpb25zKGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAog
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRn
ZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29y
a2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAg
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNj
b3BlJiBnbG9iYWxTY29wZSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1Jl
ZmVycmVyLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBt
X3dvcmtlckNsaWVudFdyYXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRl
clByb3h5KGxvYWRlclByb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENv
cHkoKSkKQEAgLTEzMSwxMiArMTMyLDEzIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAg
b3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6
OldvcmtlcjsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBvcHRpb25zQ29weS0+
b3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSgpID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNN
b2RlOjpBbGw7CisgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0g
aXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkgPyBTZXJ2aWNlV29ya2Vy
c01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbDsKICAgICBpZiAoYXV0byogYWN0
aXZlU2VydmljZVdvcmtlciA9IGdsb2JhbFNjb3BlLmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSkKICAg
ICAgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCk7CiAj
ZW5kaWYKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGds
b2JhbFNjb3BlLCBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0KTsKKyAgICBpZiAo
aXM8V29ya2VyR2xvYmFsU2NvcGU+KGdsb2JhbFNjb3BlKSkKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGdsb2JhbFNjb3BlKSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CiAKICAg
ICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVh
dGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNvbGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKQEAgLTIwMCw3ICsyMDIsNyBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNvbXB1dGVJc0RvbmUoKQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om5vdGlmeUlzRG9u
ZShib29sIGlzRG9uZSkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCpt
X3dvcmtlckNsaWVudFdyYXBwZXIpLCBpc0RvbmVdKGF1dG8mKSB7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRX
b3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgaXNE
b25lXShhdXRvJikgewogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5ub3Rp
ZnlJc0RvbmUoaXNEb25lKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTIxMiwxOSArMjE0
LDIwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xl
YXJDbGllbnRXcmFwcGVyKCkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwgdG90
YWxCeXRlc1RvQmVTZW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYo
Km1fd29ya2VyQ2xpZW50V3JhcHBlciksIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50XSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4
dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkU2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAg
IH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHdvcmtlclJlcXVlc3RJ
ZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgaWRlbnRpZmllciwgcmVzcG9u
c2VEYXRhID0gcmVzcG9uc2UuY3Jvc3NUaHJlYWREYXRhKCldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtl
UmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1f
d29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlRGF0YSA9IHJlc3Bv
bnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8
fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvIHJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShXVEZNb3ZlKHJlc3BvbnNl
RGF0YSkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAg
ICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
cmVzcG9uc2UpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0yMzIsNDMgKzIzNSw0NyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsCiB7CiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihkYXRh
TGVuZ3RoKTsKICAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVy
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtl
ckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVz
dElkZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3Jr
ZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAg
ICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3Rl
Y3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5l
dHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpLCBp
ZGVudGlmaWVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0g
ICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVy
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBu
ZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwg
aWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5p
c1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3Jh
cHBlci0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdvcmtMb2FkTWV0cmljcyk7
CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcoZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIG1fbG9hZGluZ0ZpbmlzaGVkID0gdHJ1ZTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yID0gZXJy
b3IuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVu
dFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50
aWZpZXIsIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAg
IFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKGNvbnRleHQsIGVycm9yLCBwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyLT5pbml0aWF0b3IoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNs
aWVudFdyYXBwZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmcoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0sIG1fdGFza01vZGUpOwog
fQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZp
bmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYgcmVzb3VyY2VUaW1pbmcpCiB7CiAgICAg
bV9uZXR3b3JrTG9hZE1ldHJpY3MgPSByZXNvdXJjZVRpbWluZy5uZXR3b3JrTG9hZE1ldHJpY3Mo
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdy
YXBwZXIpLCByZXNvdXJjZVRpbWluZyA9IHJlc291cmNlVGltaW5nLmlzb2xhdGVkQ29weSgpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VS
VChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgcmVzb3VyY2VU
aW1pbmcgPSByZXNvdXJjZVRpbWluZy5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgQVNTRVJUKCFyZXNvdXJjZVRpbWluZy5pbml0aWF0b3IoKS5pc0VtcHR5KCkpOwogCiAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gbm90aWZ5IGNsaWVudHMsIGp1c3QgYWRkIHRoZSBwZXJmb3JtYW5j
ZSB0aW1pbmcgZW50cnkuCi0gICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5wZXJmb3JtYW5jZSgpLmFkZFJlc291cmNlVGltaW5nKFdURk1vdmUocmVzb3VyY2VUaW1p
bmcpKTsKKyAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAg
ICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5wZXJmb3JtYW5jZSgp
LmFkZFJlc291cmNlVGltaW5nKFdURk1vdmUocmVzb3VyY2VUaW1pbmcpKTsKICAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmgKaW5kZXggYmFjMjUyYTU3YTRlMDFjOWI2MDMzYjliYmRhMDYzZWM1MzA1OGZjMC4u
MjQ0NGZkYTNhYWEzODI0NDY3YWQ0NzA0NjIyMGZlMjE1MGIwMzdiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC00MiwxNiArNDIsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotICAgIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOworICAgIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OwogICAgIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwogCiAgICAgY2xhc3MgV29ya2VyVGhyZWFk
YWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVMb2FkZXI+LCBw
dWJsaWMgVGhyZWFkYWJsZUxvYWRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShXb3JrZXJHbG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKLSAgICAgICAgc3Rh
dGljIFJlZjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorICAg
ICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQm
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgUmVmPFdv
cmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclRo
cmVhZGFibGVMb2FkZXIod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwgdGFza01vZGUsIFdURk1v
dmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBjbGllbnQsIHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJl
cikpOwogICAgICAgICB9CiAKICAgICAgICAgfldvcmtlclRocmVhZGFibGVMb2FkZXIoKTsKQEAg
LTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLwogICAgICAgICAv
LyBjYXNlIDEuIHdvcmtlci50ZXJtaW5hdGUgaXMgY2FsbGVkLgogICAgICAgICAvLyAgICBJbiB0
aGlzIGNhc2UsIG5vIG1vcmUgdGFza3MgYXJlIHBvc3RlZCBmcm9tIHRoZSB3b3JrZXIgb2JqZWN0
J3MgdGhyZWFkIHRvIHRoZSB3b3JrZXIKLSAgICAgICAgLy8gICAgY29udGV4dCdzIHRocmVhZCAt
LSBXb3JrZXJHbG9iYWxTY29wZVByb3h5IGltcGxlbWVudGF0aW9uIGVuZm9yY2VzIHRoaXMuCisg
ICAgICAgIC8vICAgIGNvbnRleHQncyB0aHJlYWQgLS0gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGVQcm94eSBpbXBsZW1lbnRhdGlvbiBlbmZvcmNlcyB0aGlzLgogICAgICAgICAvLwogICAgICAg
ICAvLyBjYXNlIDIuIHhociBnZXRzIGFib3J0ZWQgYW5kIHRoZSB3b3JrZXIgY29udGV4dCBjb250
aW51ZXMgcnVubmluZy4KICAgICAgICAgLy8gICAgVGhlIFRocmVhZGFibGVMb2FkZXJDbGllbnRX
cmFwcGVyIGhhcyB0aGUgdW5kZXJseWluZyBjbGllbnQgY2xlYXJlZCwgc28gbm8gbW9yZSBjYWxs
cwpAQCAtOTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1h
aW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRl
eHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAg
ICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwg
V29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAgICAgICAgICAgICB2
b2lkIGNhbmNlbCgpOwogICAgICAgICAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgICAgICAgICB2
b2lkIGNvbXB1dGVJc0RvbmUoKTsKQEAgLTEyNiwxMSArMTI2LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmlj
czsKICAgICAgICAgfTsKIAotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckds
b2JhbFNjb3BlJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFN0cmluZyYgdGFza01v
ZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0
IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgICAgIHZvaWQgY29t
cHV0ZUlzRG9uZSgpIGZpbmFsOwogCi0gICAgICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gbV93
b3JrZXJHbG9iYWxTY29wZTsKKyAgICAgICAgUmVmPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
PiBtX1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogICAgICAgICBSZWY8VGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKICAgICAgICAgTWFpblRo
cmVhZEJyaWRnZSYgbV9icmlkZ2U7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMWZlOTM5ODdlZjk2MWZkZmJlMzhmNDdjYTY3MWFm
NWZkYTk4ZDlkZi4uN2Q5NzgzZDkxMzBkNjZjMjc1YWFkYjYyYzQ0MTY5Yzg2OGRkN2M2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUyLDcg
KzUyLDYgQEAKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgogI2luY2x1ZGUgIldv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFj
ay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00NDgsNyArNDQ3LDcg
QEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3QKICAgICBtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94
eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwga2V5LCB3cmFwcGVkS2V5Q29u
dGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQcm94eSA9IG1ha2VSZWYoZG93
bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndvcmtlckxvYWRlclByb3h5KCkp
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICByZXN1bHRDb250
YWluZXItPnNldEJvb2xlYW4oY29udGV4dC53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleUNv
bnRhaW5lci0+YnVmZmVyKCkpKTsKICAgICAgICAgZG9uZUNvbnRhaW5lci0+c2V0Qm9vbGVhbih0
cnVlKTsKLSAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29w
ZSgpKTsKICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgfSk7
CkBAIC00NzEsNyArNDcwLDcgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6dW53cmFwQ3J5cHRv
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG8KICAgICBtX3RocmVh
ZC53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoW3Jlc3VsdENvbnRhaW5lciwg
d3JhcHBlZEtleSwga2V5Q29udGFpbmVyLCBkb25lQ29udGFpbmVyLCB3b3JrZXJNZXNzYWdpbmdQ
cm94eSA9IG1ha2VSZWYoZG93bmNhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHk+KG1fdGhyZWFkLndv
cmtlckxvYWRlclByb3h5KCkpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewog
ICAgICAgICByZXN1bHRDb250YWluZXItPnNldEJvb2xlYW4oY29udGV4dC51bndyYXBDcnlwdG9L
ZXkod3JhcHBlZEtleSwga2V5Q29udGFpbmVyLT5idWZmZXIoKSkpOwogICAgICAgICBkb25lQ29u
dGFpbmVyLT5zZXRCb29sZWFuKHRydWUpOwotICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKICAgICB9KTsKQEAgLTU0NCw5ICs1NDMsNCBAQCBSZWZlcnJlclBvbGljeSBX
b3JrZXJHbG9iYWxTY29wZTo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogICAgIHJldHVybiBtX3Jl
ZmVycmVyUG9saWN5OwogfQogCi1UaHJlYWQqIFdvcmtlckdsb2JhbFNjb3BlOjp1bmRlcmx5aW5n
VGhyZWFkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aHJlYWQudGhyZWFkKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAppbmRleCA5MGRmM2I2YWYzZDYzZWM2MWFlYzlhMTIzYzA4NzdlNzllMzRiMjY3Li4w
ZDViNmJlZDYxZTM4Y2ZlOTdhNGU4MzZkNDg3YzQ4YjBkZGFjODA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogCkBAIC01Myw3ICs1NCw2IEBA
IGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsK
IGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKIGNsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsK
LWNsYXNzIFdvcmtlclRocmVhZDsKIHN0cnVjdCBXb3JrZXJQYXJhbWV0ZXJzOwogCiBuYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKQEAgLTkzLDggKzkzLDYgQEAgcHVibGljOgogCiAgICAgV29ya2VyVGhy
ZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQogCi0gICAgVGhyZWFkKiB1
bmRlcmx5aW5nVGhyZWFkKCkgY29uc3QgZmluYWw7Ci0KICAgICB1c2luZyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHk7CiAKICAgICB2b2lkIHBvc3RUYXNrKFRhc2sm
JikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNo
cm9ub3VzbHkuCkBAIC0xMzgsOCArMTM2LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlSW1h
Z2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYmLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiwgSW1h
Z2VCaXRtYXA6OlByb21pc2UmJik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJpdG1hcChJbWFnZUJp
dG1hcDo6U291cmNlJiYsIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgSW1hZ2VCaXRt
YXBPcHRpb25zJiYsIEltYWdlQml0bWFwOjpQcm9taXNlJiYpOwogCi0gICAgdW5zaWduZWQgbG9u
ZyBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7
IH0KLQogICAgIENTU1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCk7CiAKICAgICBSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsOwpAQCAtMTY4LDYgKzE2NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllcikgZmluYWw7CiAKICAgICBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgV29ya2VyVGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJl
YWQoKSBmaW5hbCB7IHJldHVybiAmbV90aHJlYWQ7IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25z
dF9jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4odGhpcyk7IH0KICAgICBVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiwgRm9yY2VVVEY4ID0gRm9yY2VVVEY4OjpObykgY29uc3QgZmluYWw7CkBA
IC0yMjEsNyArMjE4LDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXb3JrZXJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOwotICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9Owog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWZQdHI8V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uPiBtX3N3Q2xpZW50Q29ubmVjdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCmluZGV4IDYxNTMxZWQ0MDg2NGIzOGFjYjk5Y2MwNjc1
N2JmYzExMTIzZDhkODcuLmVlNjQ2OWQ1ZDYxNGUzYWQ4MjdhMjI1MzNjZGMwZjRhNDkyMmE1MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIENyZWF0ZXMgYSBjYWNoZSBzdG9y
YWdlIGNvbm5lY3Rpb24gdG8gYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ldGhvZCBtdXN0
IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdmlydHVhbCBSZWY8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCkgPSAwOwogCiAgICAgLy8gUG9zdHMgYSB0YXNrIHRvIHRoZSB0aHJlYWQgd2hp
Y2ggcnVucyB0aGUgbG9hZGluZyBjb2RlIChub3JtYWxseSwgdGhlIG1haW4gdGhyZWFkKS4KICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYpID0gMDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIC8vIFBvc3RzIGNhbGxi
YWNrcyBmcm9tIGxvYWRpbmcgY29kZSB0byB0aGUgV29ya2VyR2xvYmFsU2NvcGUuIFRoZSAnbW9k
ZScgaXMgdXNlZCB0byBkaWZmZXJlbnRpYXRlCiAgICAgLy8gc3BlY2lmaWMgc3luY2hyb25vdXMg
bG9hZGluZyByZXF1ZXN0cyBzbyB0aGV5IGNhbiBiZSAnbmVzdGVkJywgcGVyIHNwZWMuCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSB0YXNrIHdhcyBwb3N0ZWQgc3VjY2Vzc2Z1bGx5LgotICAg
IHZpcnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYzQyMTJiMjY1ODI5N2IzZTQxM2ExMmQ1NTVh
OTgyZmI4NzY1MDVjYi4uYTYxYjQxNDg2MzNiZGYyMGQ1MmJlNTc2NGRhOWI1NTRlMTYxMGQ3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
QEAgLTE1MywxNCArMTUzLDE0IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KIAotUmVmPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCkKK1JlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICByZXR1cm4gZG9jdW1lbnQucGFn
ZSgpLT5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KTsKIH0KIAotYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3Qg
U3RyaW5nJiBtb2RlKQorYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5h
dGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCBlNzgxMjI3ZmVkYmFiN2VlMjVkZWNiY2FiMWY3Yjky
Y2JhOTExZTE3Li4zYmI0ZDlkODE1YTIwOTE0YWQ5ZjI1YjM0YTg3Y2E5MWUxYzg1YmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFdvcmtlckxvYWRl
clByb3h5LgogICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW4gdGhlIG1haW4gdGhyZWFkIHRv
IHBvc3QgdGFzayBiYWNrIHRvIHRoZSB3b3JrZXIgdGhyZWFkLgotICAgIGJvb2wgcG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYs
IGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwg
Y29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRh
dGlvbnMgb2YgV29ya2VyR2xvYmFsU2NvcGVQcm94eS4KQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICAvLyByZXF1ZXN0cyBhbmQgdG8gc2VuZCBjYWxsYmFja3MgYmFjayB0byBXb3JrZXJH
bG9iYWxTY29wZS4KICAgICBib29sIGlzV29ya2VyTWVzc2FnaW5nUHJveHkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7Ci0gICAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5hbDsKKyAgICBSZWZQdHI8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFs
OwogCiAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKERlZGljYXRlZFdvcmtlclRocmVhZCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgKaW5kZXggNjU0OGUwODQ4YmUzNTIyYjZhZDljMzI4NTMzOTc0NmM3YzM5NzQyOC4u
ODIwOWZjNTdhNTVmZTY5ZTY3OTZjMDAyZjM0MDZiMzA0NmQ5ZjFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjYs
MjEgKzI2LDI0IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0K
LW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGhyZWFkOwotfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI7CitjbGFzcyBXb3JrZXJP
cldvcmtsZXRUaHJlYWQ7CisKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBXVEY6OlRo
cmVhZCogdW5kZXJseWluZ1RocmVhZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXND
bG9zaW5nKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0KCkgPSAwOworICAgIHZpcnR1YWwgV29ya2VyT3JXb3JrbGV0VGhyZWFk
KiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSA9IDA7CisKKyAgICB1bnNpZ25lZCBsb25nIGNyZWF0
ZVVuaXF1ZUlkZW50aWZpZXIoKSB7IHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXIrKzsgfQorCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwZGZjNGVjZGUzNGFjYmQ0NzE1ZjVl
OGNmMTUwYjA4Njg0YTkyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgV1RGIHsKK2NsYXNzIFRocmVhZDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBXb3JrZXJMb2FkZXJQcm94eTsKK2NsYXNzIFdvcmtlclJ1bkxvb3A7CisKK2NsYXNzIFdvcmtl
ck9yV29ya2xldFRocmVhZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0
VGhyZWFkKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBXVEY6OlRocmVhZCogdGhyZWFkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpID0gMDsKKyAg
ICB2aXJ0dWFsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuY3BwCmluZGV4IGJiNjFmYzVmMmE5N2RiODRiMTEzYmUyMjNjN2E3YWRjNzE5YjQ5NDQu
LjZiNzA5NWQyNTdhNWYyMmRmZDk0ZWRiMjM2MjhiZDgxOWRjZGVhYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIE1lc3NhZ2VR
dWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKiBjb250CiBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1
bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgTW9kZVBy
ZWRpY2F0ZSYgcHJlZGljYXRlLCBXYWl0TW9kZSB3YWl0TW9kZSkKIHsKICAgICBBU1NFUlQoY29u
dGV4dCk7Ci0gICAgQVNTRVJUKGNvbnRleHQtPnVuZGVybHlpbmdUaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRUaHJlYWQo
KS0+dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTQzo6SlNSdW5Mb29w
VGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGltZXJBZGRlZFRhc2sgPSBXVEY6OmNy
ZWF0ZVNoYXJlZFRhc2s8SlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25UeXBl
PihbdGhpc10gewogICAgICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyBoZXJl
LCB3ZSBqdXN0IHdhbnQgdG8gbG9vcCBhcm91bmQgcnVuSW5Nb2RlCkBAIC0yMjYsNyArMjI2LDcg
QEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnQKIHZvaWQgV29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51
cFRhc2tzKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQogewogICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dW5kZXJseWluZ1RocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPndvcmtlck9yV29ya2xldFRo
cmVhZCgpLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX21l
c3NhZ2VRdWV1ZS5raWxsZWQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggZDc3NjMzYzA1NDZmNDNkZWRmZDVhMDRjNmU0NDNh
ODlmOTkwZjIzZi4uNjI0NGIzY2MwMDgxY2I2MDVhMTdmNmQ0OWFlMjg0NjJlNzY4NDE1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNp
bmNsdWRlIDxtZW1vcnk+CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJQYXJh
bWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKIAotY2xhc3MgV29ya2VyVGhyZWFkIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4geworY2xhc3MgV29ya2Vy
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4sIHB1Ymxp
YyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRo
cmVhZCgpOwogCkBAIC04Nyw5ICs4OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmQoKTsK
ICAgICB2b2lkIHJlc3VtZSgpOwogCi0gICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX3RocmVhZC5nZXQoKTsgfQotICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVy
biBtX3J1bkxvb3A7IH0KLSAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHko
KSBjb25zdCB7IHJldHVybiBtX3dvcmtlckxvYWRlclByb3h5OyB9CisgICAgVGhyZWFkKiB0aHJl
YWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQorICAgIFdvcmtlclJ1
bkxvb3AmIHJ1bkxvb3AoKSBmaW5hbCB7IHJldHVybiBtX3J1bkxvb3A7IH0KKyAgICBXb3JrZXJM
b2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBmaW5hbCB7IHJldHVybiBtX3dvcmtlckxv
YWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94
eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQogICAgIFdvcmtlclJl
cG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29y
a2VyUmVwb3J0aW5nUHJveHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKaW5kZXggNjA0OGJlZTM4YTY4MmU1OWVjYWI1YThkYjk1NWFkMWNmZjQ3YzViOC4uYTkwZmY2
YTM4NzdmOTNlOWRmMzRjNjMyNzFlMGRjODc2MTA1Yjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKK2Jvb2wgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7CiAgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTU0LDEyICsxNTQsMTIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkQnlXZWJJbnNwZWN0b3IoYm9vbCBk
aXMKICAgICB9KTsgICAKIH0KIAotUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCitSZWZQdHI8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmICghbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKQogICAgICAgICBtX2NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gPSBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmNyZWF0ZUNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKTsKLSAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKKyAgICBy
ZXR1cm4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0
Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRj
aExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCkBAIC0xODIsNyArMTgy
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZShib29sIGlzT25saW5lKQogICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW2lzT25saW5lXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIHBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFs
U2NvcGUuc2V0SXNPbmxpbmUoaXNPbmxpbmUpOwogICAgICAgICBnbG9iYWxTY29wZS5ldmVudExv
b3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbZ2xvYmFsU2NvcGUg
PSBtYWtlUmVmKGdsb2JhbFNjb3BlKSwgaXNPbmxpbmVdIHsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIGNvbm5lY3RpbwogCiAgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaFRhc2tz
LmNvbnRhaW5zKGtleSkpOwogICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGtleSwgY2xpZW50
LmNvcHlSZWYoKSk7Ci0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIg
PSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5
KCldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNsaWVu
dCA9IFdURk1vdmUoY2xpZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVk
Q29weSgpLCByZWZlcnJlciA9IHJlZmVycmVyLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0
aW9ucy5pc29sYXRlZENvcHkoKV0oYXV0byYpIG11dGFibGUgewogICAgICAgICB0aHJlYWQoKS5x
dWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJ
ZCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMp
KTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2VsRmV0Y2goU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmIChtX29uZ29pbmdGZXRjaFRh
c2tzLmlzRW1wdHkoKSkKICAgICAgICAgdGhyZWFkKCkuc3RvcEZldGNoRXZlbnRNb25pdG9yaW5n
KCk7CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtjbGllbnQgPSBj
bGllbnQucmVsZWFzZU5vbk51bGwoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbY2xpZW50ID0gY2xp
ZW50LnJlbGVhc2VOb25OdWxsKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAg
ICBjbGllbnQtPmNhbmNlbCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OwogfQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvCiAgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW2NsaWVudCA9IG1ha2VSZWYoKmNsaWVudCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgeworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUoW2NsaWVudCA9IG1ha2VSZWYoKmNsaWVudCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewogICAgICAgICBjbGllbnQtPmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5oCmluZGV4IDg1NDVlODRjYjU4NmU0NGFiOWM3OTQxNWUwMGQ2YjZlMzYwNzNiOGYu
LjFkNDcyZWYwZTc2MjA5ODU4M2YzMzM5NmJhMzI5YmMwMjQ3MjRkN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC04NSw5ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5l
KTsKIAogICAgIC8vIFdvcmtlckxvYWRlclByb3h5Ci0gICAgYm9vbCBwb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBmaW5hbDsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBT
dHJpbmcmIG1vZGUpIGZpbmFsOwogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwotICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CisgICAgUmVmUHRyPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5h
bDsKIAogICAgIC8vIFdvcmtlckRlYnVnZ2VyUHJveHkKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9E
ZWJ1Z2dlcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDFkZjNiMjk3NzBmN2Y5MWVlZjFlNjZiMjUw
OTcwYzMxZjJiNDNmZTAuLjU2MzgwMGRhMGJmYzkyZjM5YzQ5OTNiYzU0NWQ2MzRiY2NiODgzMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luUG9saWN5LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXb3JrZXJFdmVudExvb3AuaCIKKyNpbmNsdWRl
ICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJXb3JrbGV0UGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTTG9jay5oPgpAQCAtNTQsNyArNTUsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6Oldv
cmtsZXRHbG9iYWxTY29wZShjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IGFsbFdvcmtsZXRHbG9iYWxTY29wZXNTZXQoKS5hZGQodGhpcyk7
CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdCk7CiAKLSAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2lu
LmNvcHlSZWYoKSkpOworICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2lu
UG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0aGlzLT51cmwoKSkpKTsKICAg
ICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KFVSTCB7IHRoaXMtPnVybCgpIH0sICp0aGlzKSk7CiB9CiAKQEAgLTcxLDcgKzcyLDcgQEAg
V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8SlNDOjpWTT4mJiB2bSwgU2MKIAogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwog
Ci0gICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0
ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKKyAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShT
ZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+
dXJsKCkpKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwogfQogCkBAIC0x
ODMsMTEgKzE4NCw2NCBAQCBSZWZlcnJlclBvbGljeSBXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZmVy
cmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXI7
CiB9CiAKLXZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdChjb25z
dCBVUkwmLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXb3JrbGV0
R2xvYmFsU2NvcGU6OmZldGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIC8vIEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24u
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBtX3NjcmlwdEZldGNo
Sm9icy5hcHBlbmQoeyBtb2R1bGVVUkwsIGNyZWRlbnRpYWxzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSB9KTsKKyAgICBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZOZWVkZWQoKTsKK30K
Kwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0U2NyaXB0RmV0Y2hKb2JJZk5l
ZWRlZCgpCit7CisgICAgaWYgKG1fc2NyaXB0RmV0Y2hKb2JzLmlzRW1wdHkoKSB8fCBtX3Njcmlw
dExvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgc2NyaXB0RmV0Y2hKb2IgPSBt
X3NjcmlwdEZldGNoSm9icy5maXJzdCgpOworCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qg
eyBzY3JpcHRGZXRjaEpvYi5tb2R1bGVVUkwgfTsKKworICAgIEZldGNoT3B0aW9ucyBmZXRjaE9w
dGlvbnM7CisgICAgZmV0Y2hPcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVP
cmlnaW47CisgICAgZmV0Y2hPcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVm
YXVsdDsKKyAgICBmZXRjaE9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0
OjpGb2xsb3c7CisgICAgZmV0Y2hPcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6V29ya2VyOworICAgIGZldGNoT3B0aW9ucy5jcmVkZW50aWFscyA9IHNjcmlw
dEZldGNoSm9iLmNyZWRlbnRpYWxzOworCisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudCA9IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgp
ID8gQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSA6IENvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNlQ2hpbGRTcmNEaXJlY3RpdmU7CisK
KyAgICBtX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7CisgICAg
bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShmZXRjaE9wdGlvbnMpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVu
dCwgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwsICp0aGlzKTsKK30KKwordm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikKK3sKK30KKwordm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6Om5vdGlmeUZpbmlz
aGVkKCkKK3sKKyAgICBhdXRvIGNvbXBsZXRlZEpvYiA9IG1fc2NyaXB0RmV0Y2hKb2JzLnRha2VG
aXJzdCgpOworCisgICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkgeworICAgICAgICBk
aWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFdURk1vdmUoY29tcGxldGVkSm9iKSwgRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yLCBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlLCBlcnJv
cjogIiwgbV9zY3JpcHRMb2FkZXItPmVycm9yKCkubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIHJ1biBhcyBhIG1vZHVsZSBzY3JpcHQgYnV0IHdlIGRvbid0IHN1cHBvcnQgdGhpcyBp
biB3b3JrZXJzIHlldC4KKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwor
ICAgIG1fc2NyaXB0LT5ldmFsdWF0ZShTY3JpcHRTb3VyY2VDb2RlKG1fc2NyaXB0TG9hZGVyLT5z
Y3JpcHQoKSwgVVJMKG1fc2NyaXB0TG9hZGVyLT5yZXNwb25zZVVSTCgpKSksIGV4Y2VwdGlvbik7
CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNl
cHRpb24pOworCisgICAgZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihXVEZNb3ZlKGNvbXBsZXRl
ZEpvYiksIHsgfSk7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpkaWRDb21wbGV0ZVNj
cmlwdEZldGNoSm9iKFNjcmlwdEZldGNoSm9iJiYgam9iLCBPcHRpb25hbDxFeGNlcHRpb24+IHJl
c3VsdCkKK3sKKyAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisKKyAgICBqb2IuY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKKworICAgIHByb2Nlc3NOZXh0U2NyaXB0RmV0
Y2hKb2JJZk5lZWRlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDY0NmFkMDZhMTRhMTYz
Mzg4OTZhZmM4NDEwMDMxODczZGIzNzQ2YzIuLjE0OGJiYjUzM2M1ZDJkNmY3ZjA4OWJkOTNkN2My
MDYxYWU3Yzg5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5oCkBAIC0zNCwxMCArMzQsMTIgQEAKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
CiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZs
YWdzLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NywxMyArNDksMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudExvb3BUYXNrR3JvdXA7CiBjbGFzcyBX
b3JrZXJFdmVudExvb3A7CitjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7CiAKIHN0cnVjdCBXb3Jr
bGV0UGFyYW1ldGVyczsKIAogZW51bSBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZSB7
IH07CiB1c2luZyBXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxXb3JrbGV0R2xvYmFsU2NvcGVJZGVudGlmaWVyVHlwZT47CiAKLWNsYXNzIFdvcmtsZXRHbG9i
YWxTY29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtsZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUgeworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2xl
dEdsb2JhbFNjb3BlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgcHVibGljIFdvcmtlclNjcmlwdExvYWRlckNsaWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXb3JrbGV0R2xvYmFsU2NvcGUpOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfldvcmtsZXRHbG9iYWxTY29wZSgpOwpAQCAtODAsNiArODMsOCBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKICAgICBXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlciogc2NyaXB0KCkgZmluYWwgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0K
KyAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KKyAgICBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogCkBAIC04OSw3ICs5NCw2
IEBAIHB1YmxpYzoKICAgICBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIoKSBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS4K
LSAgICBUaHJlYWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
Q2xvc2luZzsgfQogCiAgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CkBAIC0xMDEsMjEgKzEwNSwyNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZl
dGNoQW5kSW52b2tlU2NyaXB0KGNvbnN0IFVSTCYsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpOwogCisgICAg
RG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgp
OyB9CisgICAgY29uc3QgRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBXb3JrbGV0R2xvYmFs
U2NvcGUoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKICAgICBXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmLCBSZWY8SlNDOjpWTT4mJiwgU2NyaXB0U291cmNlQ29kZSYmKTsKICAgICBXb3Jr
bGV0R2xvYmFsU2NvcGUoY29uc3QgV29ya2xldEdsb2JhbFNjb3BlJikgPSBkZWxldGU7CiAgICAg
V29ya2xldEdsb2JhbFNjb3BlKFdvcmtsZXRHbG9iYWxTY29wZSYmKSA9IGRlbGV0ZTsKIAotICAg
IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQo
KTsgfQotICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorICAgIFdvcmtlckV2ZW50TG9vcCogZXhpc3RpbmdF
dmVudExvb3AoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50TG9vcC5nZXQoKTsgfQorICAgIEV2ZW50
TG9vcFRhc2tHcm91cCogZGVmYXVsdFRhc2tHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVs
dFRhc2tHcm91cC5nZXQoKTsgfQogCiBwcml2YXRlOgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogICAgIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJv
eHkoKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCiAKLSAgICB2b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZvaWQgcG9zdFRhc2soVGFzayYmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5h
bCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KQEAgLTEzMiw2ICsxMzksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4mJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwog
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKIAorICAgIC8vIFdvcmtlclNjcmlw
dExvYWRlckNsaWVudC4KKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKCkgZmluYWw7CisKICAgICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdl
dCgpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAt
MTQzLDYgKzE1NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAKKyAgICBzdHJ1Y3QgU2NyaXB0RmV0Y2hKb2IgeworICAgICAgICBVUkwgbW9kdWxl
VVJMOworICAgICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFsczsKKyAgICAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiBjb21wbGV0
aW9uSGFuZGxlcjsKKyAgICB9OworCisgICAgdm9pZCBwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9i
SWZOZWVkZWQoKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoU2NyaXB0RmV0
Y2hKb2ImJiwgT3B0aW9uYWw8RXhjZXB0aW9uPik7CisKICAgICBXZWFrUHRyPERvY3VtZW50PiBt
X2RvY3VtZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
PiBtX3NjcmlwdDsKQEAgLTE1NSw2ICsxNzUsMTAgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91cmw7
CiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9qc1J1bnRpbWVGbGFnczsKICAgICBPcHRpb25hbDxT
Y3JpcHRTb3VyY2VDb2RlPiBtX2NvZGU7CisKKyAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVy
PiBtX3NjcmlwdExvYWRlcjsKKyAgICBEZXF1ZTxTY3JpcHRGZXRjaEpvYj4gbV9zY3JpcHRGZXRj
aEpvYnM7CisKICAgICBib29sIG1faXNDbG9zaW5nIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3
Y2QwMWUzMDU2ZTMyMmNlNjkzY2JjYWI5OWViMDg1YjA3NTk0MmRkLi40YjUwOGNkMGUwMjA1NTBm
NTY3NWJkMDUxYTliNTkxODEwZTkwNTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAt
MDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgV29y
a2xldC5hZGRNb2R1bGUoKSB0byBhY3R1YWxseSBmZXRjaCB0aGUgbW9kdWxlIHNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQWRkIGxheW91dCB0
ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVs
ZS1mYWlsdXJlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vYXVkaW93
b3JrbGV0LWFkZE1vZHVsZS1mYWlsdXJlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTEwLTA2ICBEaWVn
byBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2
aWV3ZWQgdGVzdCBnYXJkZW5pbmcuIFJlbW92ZSB0ZXN0cyBwYXNzaW5nLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVsZS1mYWlsdXJlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFp
bHVyZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3NDcxZTcyZWY4OTA4MTY5M2EzYzgwY2Nk
NmJjZjZhMTY0YTM1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1
ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBA
QAorVGVzdHMgdGhhdCBBdWRpb1dvcmtsZXQuYWRkTW9kdWxlKCkgcmVqZWN0cyB0aGUgcHJvbWlz
ZSB3aGVuIHRoZSBVUkwgaXMgaW52YWxpZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgY29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxlKGludmFsaWRVUkwpOyByZWpl
Y3RlZCBwcm9taXNlICB3aXRoIFN5bnRheEVycm9yOiBNb2R1bGUgVVJMIGlzIGludmFsaWQuCitQ
QVNTIGNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZSgnZG9lc25vdEV4aXN0LmpzJyk7IHJl
amVjdGVkIHByb21pc2UgIHdpdGggTmV0d29ya0Vycm9yOiBGYWlsZWQgdG8gZmV0Y2ggbW9kdWxl
LCBlcnJvcjogVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci4u
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVsZS1mYWls
dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZh
aWx1cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzc1N2Q3MDNlM2I2M2U3ZjlkNDU5NzNhMGFmOGNjNTNk
ZWE2M2I2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3Jr
bGV0LWFkZE1vZHVsZS1mYWlsdXJlLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBBdWRpb1dvcmts
ZXQuYWRkTW9kdWxlKCkgcmVqZWN0cyB0aGUgcHJvbWlzZSB3aGVuIHRoZSBVUkwgaXMgaW52YWxp
ZC4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitjb25zdCBpbnZhbGlkVVJMID0gImh0dHA6
Ly9pbnZhbGlkOnVybCI7CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgY29udGV4dCA9
IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDIsIDEwMCwgNDQxMDApOworICAgIGF3YWl0IHNob3Vs
ZFJlamVjdFdpdGhFcnJvck5hbWUoImNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZShpbnZh
bGlkVVJMKTsiLCAiU3ludGF4RXJyb3IiKTsKKyAgICBhd2FpdCBzaG91bGRSZWplY3RXaXRoRXJy
b3JOYW1lKCJjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoJ2RvZXNub3RFeGlzdC5qcycp
OyIsICJOZXR3b3JrRXJyb3IiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410648</attachid>
            <date>2020-10-06 09:37:25 -0700</date>
            <delta_ts>2020-10-06 10:18:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217242-20201006093724.patch</filename>
            <type>text/plain</type>
            <size>86042</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3OTU0NzFjNzJhMjZh
NzQ4NGE1OGJmOWFjYTVhYzQwNzMxOWUyOS4uNDMwY2YyNGUwMWViZWEzNGFkMzFhOTliM2M2NzE2
Nzc4ZGJiYzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0xMC0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBXb3JrbGV0LmFk
ZE1vZHVsZSgpIHRvIGFjdHVhbGx5IGZldGNoIGFuZCBldmFsdWF0ZSB0aGUgbW9kdWxlIHNjcmlw
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MjQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVXBkYXRl
IFdvcmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggYW5kIGV2YWx1YXRlIHRoZSBt
b2R1bGUgc2NyaXB0IGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL3d3dy53My5vcmcvVFIvd29y
a2xldHMtMS8jZG9tLXdvcmtsZXQtYWRkbW9kdWxlCisKKyAgICAgICAgVGhlIFdvcmtsZXRHbG9i
YWxTY29wZSBtYWludGFpbnMgYSBxdWV1ZSBvZiBmZXRjaCByZXF1ZXN0cyAoYmFzaWNhbGx5IGEg
VVJMIGFuZCBhIGNvbXBsZXRpb24gaGFuZGxlcikgYW5kIHVzZXMKKyAgICAgICAgdGhlIGV4aXN0
aW5nIFdvcmtlclNjcmlwdExvYWRlciB0byBwcm9jZXNzIHRoZSByZXF1ZXN0cyBzZXJpYWxseS4g
QmFzZWQgb24gdGhlIHJlc3VsdCBvbiB0aGUgbG9hZCwgd2UgY2FsbCB0aGUKKyAgICAgICAgQ29t
cGxldGlvbkhhbmRsZXIgd2hpY2ggd2lsbCBjYXVzZSB0aGUgV29ya2xldC5hZGRNb2R1bGUoKSBw
cm9taXNlIHRvIGdldCByZXNvbHZlZCBvciByZWplY3RlZC4KKworICAgICAgICBUZXN0OiB3ZWJh
dWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUuaHRtbAorCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICBQcm92aWRl
IHdvcmtlck9yV29ya2xldFRocmVhZCgpIG92ZXJyaWRlIGZvciBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSgpLCB3aGljaCBpcyBhIHJlcGxhY2VtZW50CisgICAgICAgIGZvciB1bmRlcmx5aW5n
VGhyZWFkKCkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1By
b3h5OjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICBVcGRh
dGUgQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkgdG8gc3ViY2xhc3MgV29ya2VyTG9hZGVyUHJv
eHkgc28gdGhhdCBBdWRpb1dvcmtsZXQgY2FuIHJldXNlCisgICAgICAgIFdvcmtlclNjcmlwdExv
YWRlci4gV29ya2VyU2NyaXB0TG9hZGVyIHJlbGllcyBvbiBXb3JrZXJMb2FkZXJQcm94eSB0byBk
byB0aHJlYWQgaG9wcGluZy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6QXVk
aW9Xb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFRocmVhZDo6
d29ya2VyTG9hZGVyUHJveHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0
ZSk6CisgICAgICAgIFN1YmNsYXNzIHRoZSBuZXcgV29ya2VyT3JXb3JrbGV0VGhyZWFkIGludGVy
ZmFjZS4gV29ya2VyT3JXb3JrbGV0VGhyZWFkIGlzIGEgbmV3IGludGVyZmFjZSB0aGF0CisgICAg
ICAgIHdhcyBhZGRpbmcgc28gdGhhdCBXb3JrZXJTY3JpcHRMb2FkZXIgY2FuIGJlIHJldXNlZCBi
eSBBdWRpb1dvcmtsZXRzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFtb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVl
cjo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVCaW5hcnlE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkVXBncmFk
ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZSk6CisgICAgICAgIFNpbXBsZSByZW5hbWlu
Zy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Oldv
cmtlclRocmVhZGFibGVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6Om5vdGlmeUlzRG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZpbmlzaFRpbWluZyk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIFVwZGF0ZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHNvIHRo
YXQgaXQgY2FuIGJlIHJldXNlZCBieSBBdWRpb1dvcmtsZXRzLgorCisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxT
Y29wZTo6d3JhcENyeXB0b0tleSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29w
ZTo6dW53cmFwQ3J5cHRvS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
Lmg6CisgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8ga2VlcCBidWlsZGluZyBhZnRlciB1cGRhdGVz
IHRvIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLgorCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJMb2FkZXJQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgU2ltcGxlIHJlbmFt
ZXMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlVW5pcXVl
SWRlbnRpZmllcik6CisgICAgICAgIFVwZGF0ZSBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSB0
byBhZGQgYSBmZXcgdGhpbmdzIFdvcmtlclNjcmlwdExvYWRlciBuZWVkZWQgdG8gd29yayB3aXRo
CisgICAgICAgIGJvdGggV29ya2VycyBhbmQgV29ya2xldHMuCisKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgbmV3IHBhcmVu
dCBpbnRlcmZhY2UgZm9yIFdvcmtlclRocmVhZCBhbmQgQXVkaW9Xb3JrbGV0VGhyZWFkIHNvIHRo
YXQgV29ya2VyU2NyaXB0TG9hZGVyCisgICAgICAgIGNhbiB3b3JrIGZvciBib3RoIFdvcmtlcnMg
YW5kIFdvcmtsZXRzLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MpOgorICAgICAgICBNaW5vciBjaGFu
Z2VzIHRvIGtlZXAgYnVpbGRpbmcgYWZ0ZXIgY2hhbmdlcyB0byBXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgIFN1
YmNsYXNzIHRoZSBuZXcgV29ya2VyT3JXb3JrbGV0VGhyZWFkIGludGVyZmFjZS4KKworICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisgICAgICAgIFNpbXBs
ZSByZW5hbWVzLgorCisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3Bl
KToKKyAgICAgICAgTWFrZSBzdXJlIHdlIGNvcnJlY3RseSBpbml0aWFsaXplIHRoZSBzZWN1cml0
eSBvcmlnaW4gZm9yIHRoZSBXb3JrbGV0R2xvYmFsU2NvcGUuCisgICAgICAgIFByZXZpb3VzbHks
IHdlIHdlcmUgdXNpbmcgYSB1bmlxdWUgb3JpZ2luIHNvIGFsbCBzY3JpcHQgbG9hZHMgd291bGQg
aGF2ZSBmYWlsZWQKKyAgICAgICAgd2l0aCBhIGNyb3NzLW9yaWdpbiBlcnJvci4KKworICAgICAg
ICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnByb2Nlc3NOZXh0U2NyaXB0RmV0
Y2hKb2JJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
ZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYik6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnJlc3Bv
bnNpYmxlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpy
ZXNwb25zaWJsZURvY3VtZW50IGNvbnN0KToKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIGZv
ciBtb2R1bGUgc2NyaXB0IGZldGNoaW5nIHVzaW5nIFdvcmtlclNjcmlwdExvYWRlci4gVGhpcyBn
ZXRzIGNhbGxlZAorICAgICAgICB3aGVuIFdvcmtsZXQuYWRkTW9kdWxlKCkgaXMgY2FsbGVkIG9u
IHRoZSBtYWluIHRocmVhZC4KKwogMjAyMC0xMC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpIHRvIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgZXZlcnl3aGVyZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggNDY5MTEwMmRjOWZmNDUwZDUwMTY1ZDBkNmIxYWVhZWZjYTM4MTcwMC4uMWZi
OTVjN2QwMGRjMGI1NzkwNDgyZjVmZmQwYTQ3ZmY0MmFiYWQ3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xNTIyLDYgKzE1MjIsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgd29ya2Vycy9Xb3JrZXJBbmltYXRpb25Db250cm9sbGVyLmgKICAgICB3b3JrZXJz
L1dvcmtlckRlYnVnZ2VyUHJveHkuaAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAor
ICAgIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKICAgICB3b3JrZXJzL1dvcmtlclJ1
bkxvb3AuaAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKICAgICB3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlckNsaWVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDgxOGUy
NGQxZTBiNjM5NzllOWMyNmYxMGJkZjk3YWZjYjM0NWUwYjIuLmU2NmYwZTFjZGQ2NWQ5ZTg1OGZk
Mzg4ZDg2ZmM5MmNlYTE1MDk0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKIAogI2luY2x1ZGUg
IkF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiQXVkaW9Xb3Jr
bGV0VGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTQsOSArNTMsMjUgQEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZTo6cmVnaXN0ZXJQcm9jZXNzb3IoU3RyaW5nJiYgbmFtZSwgUmVmPEF1ZGlvV29ya2xldFAK
ICAgICBVTlVTRURfUEFSQU0obmFtZSk7CiB9CiAKLVRocmVhZCogQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcGU6OnVuZGVybHlpbmdUaHJlYWQoKSBjb25zdAordm9pZCBBdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZTo6cHJlcGFyZUZvclRlcm1pbmF0aW9uKCkKIHsKLSAgICByZXR1cm4gbV90aHJlYWQtPnRo
cmVhZCgpOworICAgIGlmIChhdXRvKiBkZWZhdWx0VGFza0dyb3VwID0gdGhpcy0+ZGVmYXVsdFRh
c2tHcm91cCgpKQorICAgICAgICBkZWZhdWx0VGFza0dyb3VwLT5zdG9wQW5kRGlzY2FyZEFsbFRh
c2tzKCk7CisgICAgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKworICAgIC8vIEV2ZW50IGxpc3Rl
bmVycyB3b3VsZCBrZWVwIERPTVdyYXBwZXJXb3JsZCBvYmplY3RzIGFsaXZlIGZvciB0b28gbG9u
Zy4gQWxzbywgdGhleSBoYXZlIHJlZmVyZW5jZXMgdG8gSlMgb2JqZWN0cywKKyAgICAvLyB3aGlj
aCBiZWNvbWUgZGFuZ2xpbmcgb25jZSBIZWFwIGlzIGRlc3Ryb3llZC4KKyAgICByZW1vdmVBbGxF
dmVudExpc3RlbmVycygpOworCisgICAgLy8gTWljcm90YXNrUXVldWUgYW5kIFJlamVjdGVkUHJv
bWlzZVRyYWNrZXIgcmVmZXJlbmNlIEhlYXAuCisgICAgaWYgKGF1dG8qIGV2ZW50TG9vcCA9IHRo
aXMtPmV4aXN0aW5nRXZlbnRMb29wKCkpCisgICAgICAgIGV2ZW50TG9vcC0+Y2xlYXJNaWNyb3Rh
c2tRdWV1ZSgpOworICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRyYWNrZXIoKTsKK30KKwordm9p
ZCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cG9zdFRhc2soVGFzayYmIHRhc2spCit7CisgICAg
dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggM2E0MTA2MGJjNjJkM2NiMTQy
YmYyMzZmYWY3NzViNjA3ODY2ODBjOS4uZmUxNDcwOWFiYjRjM2FmYjRmOTBlMmU5YjlhNWExYmYz
YmQ4Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUgIkF1ZGlvV29ya2xldFRocmVh
ZC5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MiwxMiArNTMsMTYgQEAgcHVibGljOgogICAgIGRvdWJsZSBjdXJyZW50VGltZSgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gNDQxMDA7IH0KIAotICAgIFRocmVhZCogdW5kZXJseWluZ1RocmVhZCgpIGNvbnN0IGZpbmFs
OworICAgIEF1ZGlvV29ya2xldFRocmVhZCYgdGhyZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0
KCk7IH0KKyAgICB2b2lkIHByZXBhcmVGb3JUZXJtaW5hdGlvbigpOworCisgICAgdm9pZCBwb3N0
VGFzayhUYXNrJiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIEF1ZGlvV29ya2xldEdsb2JhbFNj
b3BlKEF1ZGlvV29ya2xldFRocmVhZCYsIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAKICAg
ICBib29sIGlzQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgQXVkaW9Xb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBm
aW5hbCB7IHJldHVybiBtX3RocmVhZC5wdHIoKTsgfQogCiAgICAgUmVmPEF1ZGlvV29ya2xldFRo
cmVhZD4gbV90aHJlYWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBkNDM2
YzFjODYwMWRkZjg3Njc2NTk1ZmFlMTI0MzQwNGMxNmI1YWJhLi41NzJjMmNlYjRiMWNjMzE5ZTZk
MDQ2ODNkMzcxOGY5NjRiODBlMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5LmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvV29ya2xldC5oIgogI2luY2x1ZGUgIkF1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0VGhyZWFkLmgiCisj
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNTMsMTQgKzU0
LDE4IEBAIHN0YXRpYyBXb3JrbGV0UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtsZXRQYXJhbWV0ZXJz
KEF1ZGlvV29ya2xldCYgd29ya2xldCkKIH0KIAogQXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6
OkF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5KEF1ZGlvV29ya2xldCYgd29ya2xldCkKLSAgICA6
IG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZShnZW5lcmF0ZVdvcmts
ZXRQYXJhbWV0ZXJzKHdvcmtsZXQpKSkKKyAgICA6IG1fZG9jdW1lbnQoKndvcmtsZXQuZG9jdW1l
bnQoKSkKKyAgICAsIG1fd29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRUaHJlYWQ6OmNyZWF0ZSgq
dGhpcywgZ2VuZXJhdGVXb3JrbGV0UGFyYW1ldGVycyh3b3JrbGV0KSkpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fd29ya2xldFRocmVhZC0+c3RhcnQoKTsKIH0KIAot
QXVkaW9Xb3JrbGV0TWVzc2FnaW5nUHJveHk6On5BdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSgp
ID0gZGVmYXVsdDsKK0F1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojp+QXVkaW9Xb3JrbGV0TWVz
c2FnaW5nUHJveHkoKQoreworICAgIG1fd29ya2xldFRocmVhZC0+c3RvcCgpOworfQogCiBib29s
IEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQogewpAQCAtNjgsNiArNzMsMjIgQEAgYm9vbCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQ
cm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3UKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IEF1ZGlv
V29ya2xldE1lc3NhZ2luZ1Byb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAgICBtX2RvY3VtZW50LT5wb3N0VGFzayhX
VEZNb3ZlKHRhc2spKTsKK30KKworYm9vbCBBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eTo6cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQoreworICAgIHJldHVybiBw
b3N0VGFza0Zvck1vZGVUb1dvcmtsZXRHbG9iYWxTY29wZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0TWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0TWVzc2FnaW5nUHJveHkuaAppbmRleCA3NWZmNDEwZjUyODI2MGZlYzAxYjNkYzE5
N2JjYzkwMmUxNmNmM2QyLi45ZGU4OWM2NDIyZDMwNDkxYjZlZjFhOTIzZDYyZjBhZmMzMWY0ODdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE1lc3NhZ2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oCkBAIC0yOSwxNCArMjksMTYgQEAKICNwcmFnbWEg
b25jZQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94
eS5oIgogI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZVByb3h5LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Xb3JrbGV0OwogY2xhc3MgQXVkaW9Xb3JrbGV0VGhyZWFk
OworY2xhc3MgRG9jdW1lbnQ7CiAKLWNsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5IDog
cHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5IHsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3Nh
Z2luZ1Byb3h5IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZVByb3h5LCBwdWJsaWMgV29ya2Vy
TG9hZGVyUHJveHkgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QXVkaW9Xb3JrbGV0TWVzc2Fn
aW5nUHJveHk+IGNyZWF0ZShBdWRpb1dvcmtsZXQmIHdvcmtsZXQpCiAgICAgewpAQCAtNTEsOCAr
NTMsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRNZXNz
YWdpbmdQcm94eShBdWRpb1dvcmtsZXQmKTsKIAorICAgIC8vIFdvcmtlckxvYWRlclByb3h5Lgor
ICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCkgZmluYWw7CisgICAgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJikgZmluYWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29u
c3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKwogICAgIGJvb2wgaXNBdWRpb1dvcmtsZXRNZXNzYWdp
bmdQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIFJlZjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKICAgICBSZWY8QXVkaW9Xb3JrbGV0VGhyZWFkPiBtX3dvcmtsZXRUaHJl
YWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFRocmVhZC5jcHAKaW5kZXggYzI0ZTY2NDY0ZTU2ZDM0Y2VjMjA3YzJiYmRhMDRm
MjFkYTRiMmVmMi4uOGFlYjdlZWZkMjM0Njg3MjUwYmVkOTI1ODE1OGM0Zjc0MzA3ZjUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
VGhyZWFkLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1ZGlvV29ya2xldFRocmVh
ZC5oIgogCiAjaW5jbHVkZSAiQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJB
dWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eS5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCIKQEAgLTQzLDExICs0NCwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvV29ya2xldFRocmVhZDo6QXVkaW9Xb3Jr
bGV0VGhyZWFkKGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMuaXNvbGF0ZWRDb3B5KCkpCitBdWRpb1dvcmtsZXRUaHJlYWQ6
OkF1ZGlvV29ya2xldFRocmVhZChBdWRpb1dvcmtsZXRNZXNzYWdpbmdQcm94eSYgbWVzc2FnaW5n
UHJveHksIGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9tZXNz
YWdpbmdQcm94eShtZXNzYWdpbmdQcm94eSkKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJz
Lmlzb2xhdGVkQ29weSgpKQogewogfQogCitBdWRpb1dvcmtsZXRUaHJlYWQ6On5BdWRpb1dvcmts
ZXRUaHJlYWQoKSA9IGRlZmF1bHQ7CisKIHZvaWQgQXVkaW9Xb3JrbGV0VGhyZWFkOjpzdGFydCgp
CiB7CiAgICAgYXV0byBsb2NrID0gaG9sZExvY2sobV90aHJlYWRDcmVhdGlvbkFuZFdvcmtsZXRH
bG9iYWxTY29wZUxvY2spOwpAQCAtNjAsNiArNjQsNDQgQEAgdm9pZCBBdWRpb1dvcmtsZXRUaHJl
YWQ6OnN0YXJ0KCkKICAgICBtX3RocmVhZCA9IFdURk1vdmUodGhyZWFkKTsKIH0KIAordm9pZCBB
dWRpb1dvcmtsZXRUaHJlYWQ6OnN0b3AoKQoreworICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMg
bmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IG1fd29ya2VyR2xvYmFsU2NvcGUgaXNuJ3QgY2hhbmdl
ZCBieQorICAgIC8vIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkgd2hpbGUgd2UncmUgYWNj
ZXNzaW5nIGl0LiBOb3RlIGFsc28gdGhhdCBzdG9wKCkgY2FuCisgICAgLy8gYmUgY2FsbGVkIGJl
Zm9yZSBtX3dvcmtlckdsb2JhbFNjb3BlIGlzIGZ1bGx5IGNyZWF0ZWQuCisgICAgYXV0byBsb2Nr
ZXIgPSB0cnlIb2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5kV29ya2xldEdsb2JhbFNjb3BlTG9j
ayk7CisgICAgaWYgKCFsb2NrZXIpIHsKKyAgICAgICAgLy8gVGhlIHRocmVhZCBpcyBzdGlsbCBz
dGFydGluZywgc3BpbiB0aGUgcnVubG9vcCBhbmQgdHJ5IGFnYWluIHRvIGF2b2lkIGRlYWRsb2Nr
cyBpZiB0aGUgd29ya2VyIHRocmVhZAorICAgICAgICAvLyBuZWVkcyB0byBpbnRlcmFjdCB3aXRo
IHRoZSBtYWluIHRocmVhZCBkdXJpbmcgc3RhcnR1cC4KKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0YXNrcyBhcmUgYmVp
bmcgaGFuZGxlZCBieSB0aHJlYWQgZXZlbnQgbG9vcC4gSWYgc2NyaXB0IGV4ZWN1dGlvbiB3ZXJl
bid0IGZvcmJpZGRlbiwgYSB3aGlsZSgxKSBsb29wIGluIEpTIGNvdWxkIGtlZXAgdGhlIHRocmVh
ZCBhbGl2ZSBmb3JldmVyLgorICAgIGlmIChtX3dvcmtsZXRHbG9iYWxTY29wZSkgeworICAgICAg
ICBtX3dvcmtsZXRHbG9iYWxTY29wZS0+c2NyaXB0KCktPnNjaGVkdWxlRXhlY3V0aW9uVGVybWlu
YXRpb24oKTsKKworICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJtaW5hdGUoeyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQgKSB7CisgICAgICAgICAgICBhdXRvJiB3b3JrbGV0R2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxBdWRpb1dvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCk7CisKKyAgICAg
ICAgICAgIHdvcmtsZXRHbG9iYWxTY29wZS5wcmVwYXJlRm9yVGVybWluYXRpb24oKTsKKworICAg
ICAgICAgICAgLy8gU3RpY2sgYSBzaHV0ZG93biBjb21tYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHF1
ZXVlLCBzbyB0aGF0IHdlIGRlYWwKKyAgICAgICAgICAgIC8vIHdpdGggYWxsIHRoZSBjbGVhbnVw
IHRhc2tzIHRoZSBkYXRhYmFzZXMgcG9zdCBmaXJzdC4KKyAgICAgICAgICAgIHdvcmtsZXRHbG9i
YWxTY29wZS5wb3N0VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBU
YXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgIGF1dG8mIHdvcmtsZXRHbG9iYWxTY29wZSA9IGRvd25jYXN0PEF1ZGlvV29ya2xldEdsb2Jh
bFNjb3BlPihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBzYWZlIHRvIGNh
bGwgY2xlYXJTY3JpcHQgdW50aWwgYWxsIHRoZSBjbGVhbnVwIHRhc2tzIHBvc3RlZCBieSBmdW5j
dGlvbnMgaW5pdGlhdGVkIGJ5IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrIGhhdmUgY29t
cGxldGVkLgorICAgICAgICAgICAgICAgIHdvcmtsZXRHbG9iYWxTY29wZS5jbGVhclNjcmlwdCgp
OworICAgICAgICAgICAgfSB9KTsKKworICAgICAgICB9IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKK30KKwogdm9pZCBBdWRpb1dvcmtsZXRU
aHJlYWQ6OndvcmtsZXRUaHJlYWQoKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOwpAQCAtMTI5LDYgKzE3MSwxMSBAQCB2b2lkIEF1ZGlvV29ya2xldFRocmVhZDo6
cnVuRXZlbnRMb29wKCkKICAgICBtX3J1bkxvb3AucnVuKG1fd29ya2xldEdsb2JhbFNjb3BlLmdl
dCgpKTsKIH0KIAorV29ya2VyTG9hZGVyUHJveHkmIEF1ZGlvV29ya2xldFRocmVhZDo6d29ya2Vy
TG9hZGVyUHJveHkoKQoreworICAgIHJldHVybiBtX21lc3NhZ2luZ1Byb3h5OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0VGhyZWFkLmgK
aW5kZXggNzIzZjZhODUyMzZjMTg3ODc2NDcyNmM2YjYzYmRiMDA0YTQzMTk0Zi4uODAyZWRmY2U3
MzMwMDYwMzdkYTJlNWI5YTVlOTc5NWU0YjI0NTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFRocmVhZC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCisjaW5jbHVkZSAiV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgogI2luY2x1
ZGUgIldvcmtsZXRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM5
LDI1ICs0MCwzMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1dvcmtsZXRH
bG9iYWxTY29wZTsKK2NsYXNzIEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5OwogCi1jbGFzcyBB
dWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Xb3Jr
bGV0VGhyZWFkPiB7CitjbGFzcyBBdWRpb1dvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QXVkaW9Xb3JrbGV0VGhyZWFkPiwgcHVibGljIFdvcmtlck9yV29ya2xldFRo
cmVhZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1dvcmtsZXRUaHJlYWQ+IGNyZWF0
ZShjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvV29ya2xldFRocmVhZD4gY3JlYXRlKEF1ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtZXNz
YWdpbmdQcm94eSwgY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQocGFyYW1ldGVy
cykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRUaHJlYWQobWVz
c2FnaW5nUHJveHksIHBhcmFtZXRlcnMpKTsKICAgICB9CisgICAgfkF1ZGlvV29ya2xldFRocmVh
ZCgpOwogCiAgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOwogCi0gICAgV29ya2Vy
UnVuTG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQotICAgIFRocmVhZCogdGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KKyAgICAvLyBXb3JrZXJPcldv
cmtsZXRUaHJlYWQuCisgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIGZpbmFsIHsgcmV0dXJu
IG1fcnVuTG9vcDsgfQorICAgIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSgp
IGZpbmFsOworICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJl
YWQuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRUaHJlYWQo
Y29uc3QgV29ya2xldFBhcmFtZXRlcnMmKTsKKyAgICBBdWRpb1dvcmtsZXRUaHJlYWQoQXVkaW9X
b3JrbGV0TWVzc2FnaW5nUHJveHkmLCBjb25zdCBXb3JrbGV0UGFyYW1ldGVycyYpOwogCiAgICAg
dm9pZCBydW5FdmVudExvb3AoKTsKICAgICB2b2lkIHdvcmtsZXRUaHJlYWQoKTsKIAorICAgIEF1
ZGlvV29ya2xldE1lc3NhZ2luZ1Byb3h5JiBtX21lc3NhZ2luZ1Byb3h5OwogICAgIFJlZlB0cjxU
aHJlYWQ+IG1fdGhyZWFkOwogICAgIFdvcmtlclJ1bkxvb3AgbV9ydW5Mb29wOwogICAgIFdvcmts
ZXRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDJkYzhlMTQyMDU4YTZlMmJiNzFmMjVkZjQ5ZmMyYWRjMzQ0YWQw
MTEuLmFjNWYwZDNjYmNkNDAzOGYyOGQzYWIyYzUwZTU5ODM3NGRiMmMzMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNvY2tldENo
YW5uZWwtPnNlbmQobWVzc2FnZSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBzZW5kUmVxdWVzdFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwg
c2VuZFJlcXVlc3RSZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVl
c3RSZXN1bHQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgQXJy
YXlCdWZmZXImIGJpbmFyeURhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgo
KSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBzZW5kUmVxdWVz
dFJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHRd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0U2VuZFJlcXVlc3RSZXN1bHQoc2VuZFJlcXVlc3RSZXN1bHQpOwogICAgIH0s
IG1fdGFza01vZGUpOwogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoQmxvYiYgYmluYXJ5RGF0YSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2Vu
ZFJlcXVlc3RSZXN1bHQgPSBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEp
OwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShb
d29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RS
ZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNs
aWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0XShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPnNldFNlbmRSZXF1ZXN0UmVzdWx0KHNlbmRSZXF1ZXN0UmVzdWx0KTsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KQEAgLTIxMCw4ICsyMTAsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFtb3VudCgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
YnVmZmVyZWRBbW91bnQoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAg
ICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQp
OwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjYzLDggKzI2Myw4IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QoKQogCiAgICAgU3Ry
aW5nIHN1YnByb3RvY29sID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKTsK
ICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmV4dGVuc2lv
bnMoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHN1YnByb3Rv
Y29sID0gc3VicHJvdG9jb2wuaXNvbGF0ZWRDb3B5KCksIGV4dGVuc2lvbnMgPSBleHRlbnNpb25z
Lmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFw
cGVyLCBzdWJwcm90b2NvbCA9IHN1YnByb3RvY29sLmlzb2xhdGVkQ29weSgpLCBleHRlbnNpb25z
ID0gZXh0ZW5zaW9ucy5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsK
ICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wp
OwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lvbnMp
OwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDb25uZWN0KCk7CkBAIC0yNzUsOCAr
Mjc1LDggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNX
b3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMjg1LDgg
KzI4NSw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90CiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYmlu
YXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0Lmlz
V29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRS
ZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9LCBtX3Rhc2tNb2Rl
KTsKIH0KQEAgLTI5NSw4ICsyOTUsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQo
YnVmZmVyZWRBbW91bnQpOwogICAgIH0sIG1fdGFza01vZGUpOwogfQpAQCAtMzA1LDggKzMwNSw4
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBl
ciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAg
ICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0zMTYsMTggKzMxNiwxOCBAQCB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRs
ZWRCdWZmZXJlZAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9tYWluV2ViU29j
a2V0Q2hhbm5lbCA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwotICAgICAgICB9LCBtX3Rhc2tN
b2RlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29k
ZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3Bl
KCkpOworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7Cisg
ICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXJdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0
R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IoKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTMzNiw4ICszMzYsOCBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGdyYWRl
VVJMKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIAotICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2Jh
bFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgd29y
a2VyQ2xpZW50V3JhcHBlci0+ZGlkVXBncmFkZVVSTCgpOwogICAgIH0sIG1fdGFza01vZGUpOwog
fQpAQCAtMzYxLDEwICszNjEsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAK
LSAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2Jh
bFNjb3BlKHsKKyAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzazo6Q2xlYW51cFRhc2ssCiAgICAgICAgIFtjbGllbnRXcmFwcGVyLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2Fk
ZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkgfHwg
Y29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRX
cmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAg
ICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0
byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgogICAgICAgICAg
ICAgICAgIGxvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIgPSBXVEZNb3ZlKHBlZXIp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDdiZDM3MDkyMDlhYWVj
Yjc5YzdjZDZhZGIxNWQyZTEwZTc5Yjk5My4uYmRiNGE5MGE2NjdmYjMwNTY2MWVjZmQ3YTYxZjE5
ZjE5NjhkZDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjU0OSw2ICsyNTQ5LDcgQEAKIAkJODNFODY2ODAxRkJBNTY1QjAw
ODg1NUM1IC8qIFNlcnZpY2VXb3JrZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U4NjY3RDFGQkE1NjNGMDA4ODU1QzUgLyogU2VydmljZVdv
cmtlckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4M0VFNTk4RjFGNTA5NThFMDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0VFNTk4QjFGNTA5NThC
MDAzRThCMzAgLyogSlNFcnJvckNhbGxiYWNrLmggKi87IH07CiAJCTgzRjI4QzAwMjREQjFERTEw
MDVCQTZGNiAvKiBDb252b2x2ZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0YyOEJGRDI0REIxREQzMDA1QkE2RjYgLyogQ29udm9sdmVy
T3B0aW9ucy5oICovOyB9OworCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJDRDMgLyogV29ya2VyT3JX
b3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0U4MjhCMjI1Mjc5NENEMDAyN0UwRjcgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNGQjMz
NzExRjUwOEE1NDAwOTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNGQjMzNkQxRjUwOEE0RTAw
OTg2RTU0IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwogCQk4M0ZCMzM3MzFG
NTA4QTU4MDA5ODZFNTQgLyogRmlsZVN5c3RlbUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0ZCMzM2RjFGNTA4QTRFMDA5ODZFNTQgLyogRmls
ZVN5c3RlbUVudHJ5LmggKi87IH07CiAJCTgzRkIzMzc1MUY1MDhBNUIwMDk4NkU1NCAvKiBGaWxl
U3lzdGVtRmlsZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0ZCMzM2QzFGNTA4QTRFMDA5ODZFNTQgLyogRmlsZVN5c3RlbUZpbGVFbnRyeS5o
ICovOyB9OwpAQCAtMTA4MTMsNiArMTA4MTQsNyBAQAogCQk4M0UwNDVFRjFEQUExMDRGMDBCMEQ4
QjkgLyogSlNVSUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1VJRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTM1OUEwMUJC
MTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxUaW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0hUTUxUaW1lRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0UzNTlBMTFCQjEwMzFEMDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVGltZUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0U4MjhCMjI1Mjc5NENEMDAyN0Uw
RjcgLyogV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlck9yV29ya2xldFRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0U4NjY3RDFGQkE1NjNGMDA4ODU1QzUgLyogU2VydmljZVdvcmtlckRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFODY2N0YxRkJBNTY0MDAwODg1NUM1IC8qIFNlcnZp
Y2VXb3JrZXJEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
cnZpY2VXb3JrZXJEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNFOTU5
RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlTm9kZUZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg3ODgsNiArMTg3OTAsNyBAQAogCQkJCTJFNDM0NjNGMEY1NDZBODIwMEIw
RjFCQSAvKiBXb3JrZXJPYmplY3RQcm94eS5oICovLAogCQkJCTgzRDZBQUU0MjUyNEVFMTMwMDQy
OEI0QiAvKiBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oICovLAogCQkJCTgzOUEwOTVCMjUy
NEYzNzYwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggKi8sCisJ
CQkJODNFODI4QjIyNTI3OTRDRDAwMjdFMEY3IC8qIFdvcmtlck9yV29ya2xldFRocmVhZC5oICov
LAogCQkJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5o
ICovLAogCQkJCTJFNDM0NjQwMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmNwcCAq
LywKIAkJCQkyRTQzNDY0MTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyUnVuTG9vcC5oICovLApA
QCAtMzEyMjEsOSArMzEyMjQsNyBAQAogCQkJCTgzNUQ1NEM1MUY0REU1MzgwMEU2MDY3MSAvKiBE
aXJlY3RvcnlGaWxlTGlzdENyZWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0EwOUQxMjBB
OTNBOTcwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3RURBQUZDOTE5QTJDQ0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRvckNvY29hLmggaW4g
SGVhZGVycyAqLywKLQkJCQlFNDUxQzYzNDIzOTQwNThGMDA5OTMxOTAgLyogTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5MEY0MjI1MTdDRTZF
MDA5QkEwMzQgLyogRGlzcGxheUxheWVyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIExheW91dEludGVncmF0aW9uTGluZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFNUZCRDMxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDk0MDI0MDg5NjQwMDBERTREMkYgLyogRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAw
REU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzEy
MzYsNyArMzEyMzcsNiBAQAogCQkJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERTcwMDIzMTkyRkU4MkEw
MEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogTGF5b3V0
SW50ZWdyYXRpb25SdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzkwRjQzMjUxN0NFNkUwMDlC
QTAzNCAvKiBEaXNwbGF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTExMkIwMjZG
NzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0MDI4MzI0OUE3
QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzE5
MjcsNiArMzE5MjcsNyBAQAogCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0OUJFQSAvKiBJbmxpbmVM
aW5lUnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDU3NzVDRTI0MTQzN0Q1MDAyREYxQTAgLyog
SW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGNDBEQTgyMjUxMzAzM0EwMEVD
MDRCNyAvKiBJbmxpbmVSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEQzM0YzQjI1MkFFRUNE
MDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjM2
MEU1MDIzOTk5NDIxMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0ZW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFBNEMzQTc3MEIyQjE2NzkwMDIzMzRBMiAvKiBJbmxpbmVTdHlsZVNoZWV0
T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODVBMDk3RDkzMDIwMDk0QzlFNCAvKiBJ
bmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKQEAgLTMyODk1LDggKzMyODk2LDExIEBACiAJ
CQkJNkYwQjk4QjUyM0YyNjhFQzAwRUVDMkYyIC8qIExheW91dElubGluZVRleHRCb3guaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0MTgwMjU1MjNENDU0OUIwMEZGQjA3MSAvKiBMYXlvdXRJbnRlZ3Jh
dGlvbkJveFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDNCN0EyMjUxQjExOTMwMDE5RTgw
MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDUx
QzYzNDIzOTQwNThGMDA5OTMxOTAgLyogTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogTGF5b3V0SW50
ZWdyYXRpb25MaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFCQUJERDIzNjA4OEZFMDBGQTQz
NDUgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDAzQjdBMzI1MUIxMUMxMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogTGF5b3V0SW50
ZWdyYXRpb25SdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2NENDMjUyMUQ0QUYwMDcwODFE
QyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NEE2NjRDRjI1MjFENEUyMDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxl
Z2FjeVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTY2NENFMjUyMUQ0QzkwMDcwODFEQyAv
KiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNDc0MSw2ICszNDc0NSw3IEBACiAJCQkJMkU0MzQ2NTEwRjU0NkE4MjAwQjBGMUJBIC8q
IFdvcmtlck9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Q2QUFFNjI1MjRFRTFD
MDA0MjhCNEIgLyogV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzOUEwOTVEMjUyNEYzN0YwMEVFRjMyOCAvKiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Y2QUVCRjI1MjdCQjBDMDAzNEJDRDMgLyog
V29ya2VyT3JXb3JrbGV0VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFMjlBNjEwMkZB
OTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFNDM0NjUzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUI4MUNDRjFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyUnVudGltZUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTM0ODAxLDcgKzM0ODA2LDYgQEAKIAkJCQlFMUVFOEI5OTI0MTMx
OTUwMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyQTlGNEEyNDhBOTlFMjAwM0YwNkM4IC8qIFhSSW50ZXJhY3Rpb25Nb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUVFOEI4NDI0MTMxOTFGMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VT
cGFjZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUg
LyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVFOEI3NzI0MTMx
OTFGMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VTcGFjZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxRUU4Qjc5MjQxMzE5MUYwMEU3OTRENiAvKiBYUlJlbmRlclN0YXRlSW5pdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFFRThCOEQyNDEzMTk1MDAwRTc5NEQ2IC8qIFhSU2Vzc2lvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCBjN2UwZjMxYmU3MjA2ZmVmOGRhYWQxODQ2MWU0ZjVhMjRiYmY3ZDYyLi4yNzE3Yzg2
MWM3NGIwZjJhZWJjZGU0MDg3MDBlMmE5YTAzNzM3NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMiwxMCArMTAzLDE2IEBAIFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zIFRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkoKSBj
b25zdAogCiBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQm
IGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQogewotICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBjbGll
bnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIFdURk1vdmUocmVmZXJyZXIpKTsKKyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpIHx8IChpczxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdv
cmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VyT3JXb3JrbGV0VGhyZWFkKCkpKQorICAg
ICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShyZWZl
cnJlcikpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKKyAgICBpZiAoaXM8
V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgZG9jdW1lbnQgPSBkb3duY2Fz
dDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlc3BvbnNpYmxlRG9jdW1lbnQoKTsKKyAg
ICBlbHNlCisgICAgICAgIGRvY3VtZW50ID0gJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsK
IAotICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCksIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RG
TW92ZShyZWZlcnJlcikpOworICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZSgqZG9jdW1lbnQsIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92
ZShyZWZlcnJlcikpOwogfQogCiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA2ZjgyODczMzliNGZjNWQwMGI3ZGJh
NTAzODMwNTQ1NDZlYmE4YjE1Li5lMTEzOTZiZmQ4MzM2ZTNlODY3NGE0OWNiNWM4MTg0YmYxNTgw
YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC00MywxOSArNDMsMjAgQEAKICNpbmNsdWRlICJSZXNvdXJjZVRpbWluZy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNj
b3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBj
b25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikK
LSAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCitXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5n
JiByZWZlcnJlcikKKyAgICA6IG1fV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUod29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJs
ZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlhdG9yKSkK
LSAgICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBw
ZXIuZ2V0KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCks
IHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkg
PyB3b3JrZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJl
ZmVycmVyLCB3b3JrZXJHbG9iYWxTY29wZSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJl
YWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSwgdGFz
a01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/IHdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigp
IDogcmVmZXJyZXIsIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKSkKIHsKIH0KIApAQCAtNjQs
MTcgKzY1LDE3IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6On5Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKCkKICAgICBtX2JyaWRnZS5kZXN0cm95KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
Cit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIFdvcmtlclJ1
bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCk7Cisg
ICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLndv
cmtlck9yV29ya2xldFRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICAvLyBDcmVhdGUgYSB1bmlx
dWUgbW9kZSBqdXN0IGZvciB0aGlzIHN5bmNocm9ub3VzIHJlc291cmNlIGxvYWQuCiAgICAgU3Ry
aW5nIG1vZGUgPSBtYWtlU3RyaW5nKCJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZSIsIHJ1
bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7CiAKLSAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7CisgICAgYXV0byBsb2FkZXIgPSBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIGNs
aWVudCwgbW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwogICAgIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVk
OwogICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRl
cm1pbmF0ZWQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJHbG9i
YWxTY29wZSwgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgbW9kZSk7CiAKICAgICBpZiAoIWxvYWRlci0+ZG9uZSgp
ICYmIHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICBsb2FkZXItPmNh
bmNlbCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIExvYWRlclRhc2tPcHRpb25zOjpMb2FkZXJUYXNr
T3B0aW9ucyhjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uCiB9CiAK
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlk
Z2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImIHdvcmtlckNsaWVudFdyYXBwZXIsIFdv
cmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwKLSAg
ICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxT
Y29wZSYgZ2xvYmFsU2NvcGUpCisgICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdS
ZWZlcnJlciwgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlKQogICAgIDog
bV93b3JrZXJDbGllbnRXcmFwcGVyKCZ3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2Fk
ZXJQcm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUuaXNvbGF0ZWRD
b3B5KCkpCkBAIC0xMzEsMTIgKzEzMiwxMyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAg
IG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRleHQgPSBJbml0aWF0b3JDb250ZXh0
OjpXb3JrZXI7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgb3B0aW9uc0NvcHkt
Pm9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gZ2xvYmFsU2NvcGUuaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSA6IFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsOworICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9
IGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oZ2xvYmFsU2NvcGUpID8gU2VydmljZVdvcmtl
cnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7CiAgICAgaWYgKGF1dG8qIGFj
dGl2ZVNlcnZpY2VXb3JrZXIgPSBnbG9iYWxTY29wZS5hY3RpdmVTZXJ2aWNlV29ya2VyKCkpCiAg
ICAgICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlci0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpOwog
I2VuZGlmCiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChn
bG9iYWxTY29wZSwgbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdCk7CisgICAgaWYg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPihnbG9iYWxTY29wZSkpCisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PihnbG9iYWxTY29wZSksIG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3QpOwogCiAg
ICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUgdG8gY3Jl
YXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHko
KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0yMDAsNyArMjAyLDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjb21wdXRlSXNEb25lKCkKIAog
dm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpub3RpZnlJc0Rv
bmUoYm9vbCBpc0RvbmUpCiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigq
bV93b3JrZXJDbGllbnRXcmFwcGVyKSwgaXNEb25lXShhdXRvJikgeworICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVk
V29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIGlz
RG9uZV0oYXV0byYpIHsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+bm90
aWZ5SXNEb25lKGlzRG9uZSk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yMTIsMTkgKzIx
NCwyMCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNs
ZWFyQ2xpZW50V3JhcHBlcigpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCBieXRlc1NlbnQsIHRv
dGFsQnl0ZXNUb0JlU2VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBtYWtlUmVm
KCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudF0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRl
eHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKICAg
ICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVu
dFdyYXBwZXIgPSBtYWtlUmVmKCptX3dvcmtlckNsaWVudFdyYXBwZXIpLCB3b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGlkZW50aWZpZXIsIHJlc3Bv
bnNlRGF0YSA9IHJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFr
ZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBt
X3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBpZGVudGlmaWVyLCByZXNwb25zZURhdGEgPSByZXNw
b25zZS5jcm9zc1RocmVhZERhdGEoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkg
fHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byByZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2U6OmZyb21Dcm9zc1RocmVhZERhdGEoV1RGTW92ZShyZXNwb25z
ZURhdGEpKTsKICAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7Cisg
ICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIs
IHJlc3BvbnNlKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMjMyLDQzICsyMzUsNDcg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLAogewogICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoZGF0
YUxlbmd0aCk7CiAgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCksIGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBl
ciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
YnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVl
c3RJZGVudGlmaWVyLCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAg
ICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29y
a2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAg
ICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBtX2xvYWRpbmdGaW5pc2hlZCA9IHRydWU7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90
ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVy
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBu
ZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5pc29sYXRlZENvcHkoKSwg
aWRlbnRpZmllcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewot
ICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJv
dGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBl
ciksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwg
bmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCks
IGlkZW50aWZpZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQu
aXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIG5ldHdv
cmtMb2FkTWV0cmljcyk7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKICAgICBtX2xvYWRpbmdGaW5pc2hlZCA9IHRydWU7Ci0gICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3Jr
ZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgd29ya2Vy
UmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvciA9IGVy
cm9yLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Cisg
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGll
bnRXcmFwcGVyKSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVu
dGlmaWVyLCBlcnJvciA9IGVycm9yLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwogICAgICAg
ICBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihjb250ZXh0LCBlcnJvciwgcHJvdGVjdGVkV29y
a2VyQ2xpZW50V3JhcHBlci0+aW5pdGlhdG9yKCkpOwogICAgICAgICBwcm90ZWN0ZWRXb3JrZXJD
bGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsTG9hZGluZyhkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIGlmIChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxMb2FkaW5nKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsK
IH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRG
aW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmIHJlc291cmNlVGltaW5nKQogewogICAg
IG1fbmV0d29ya0xvYWRNZXRyaWNzID0gcmVzb3VyY2VUaW1pbmcubmV0d29ya0xvYWRNZXRyaWNz
KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gbWFrZVJlZigqbV93b3JrZXJDbGllbnRX
cmFwcGVyKSwgcmVzb3VyY2VUaW1pbmcgPSByZXNvdXJjZVRpbWluZy5pc29sYXRlZENvcHkoKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBBU1NF
UlQoY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2Vy
Q2xpZW50V3JhcHBlciA9IG1ha2VSZWYoKm1fd29ya2VyQ2xpZW50V3JhcHBlciksIHJlc291cmNl
VGltaW5nID0gcmVzb3VyY2VUaW1pbmcuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQuaXNXb3Jr
ZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSk7CiAgICAg
ICAgIEFTU0VSVCghcmVzb3VyY2VUaW1pbmcuaW5pdGlhdG9yKCkuaXNFbXB0eSgpKTsKIAogICAg
ICAgICAvLyBObyBuZWVkIHRvIG5vdGlmeSBjbGllbnRzLCBqdXN0IGFkZCB0aGUgcGVyZm9ybWFu
Y2UgdGltaW5nIGVudHJ5LgotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkucGVyZm9ybWFuY2UoKS5hZGRSZXNvdXJjZVRpbWluZyhXVEZNb3ZlKHJlc291cmNlVGlt
aW5nKSk7CisgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCisgICAg
ICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkucGVyZm9ybWFuY2Uo
KS5hZGRSZXNvdXJjZVRpbWluZyhXVEZNb3ZlKHJlc291cmNlVGltaW5nKSk7CiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oCmluZGV4IGJhYzI1MmE1N2E0ZTAxYzliNjAzM2I5YmJkYTA2M2VjNTMwNThmYzAu
LjI0NDRmZGEzYWFhMzgyNDQ2N2FkNDcwNDYyMjBmZTIxNTBiMDM3YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtNDIsMTYgKzQyLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLSAgICBjbGFz
cyBXb3JrZXJHbG9iYWxTY29wZTsKKyAgICBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZTsKICAgICBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIAogICAgIGNsYXNzIFdvcmtlclRocmVh
ZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiwg
cHVibGljIFRocmVhZGFibGVMb2FkZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyR2xvYmFsU2NvcGUmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7Ci0gICAgICAgIHN0
YXRpYyBSZWY8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKKyAg
ICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFJlZjxX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlLCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlcikpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSwgY2xpZW50LCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJy
ZXIpKTsKICAgICAgICAgfQogCiAgICAgICAgIH5Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyKCk7CkBA
IC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8KICAgICAgICAg
Ly8gY2FzZSAxLiB3b3JrZXIudGVybWluYXRlIGlzIGNhbGxlZC4KICAgICAgICAgLy8gICAgSW4g
dGhpcyBjYXNlLCBubyBtb3JlIHRhc2tzIGFyZSBwb3N0ZWQgZnJvbSB0aGUgd29ya2VyIG9iamVj
dCdzIHRocmVhZCB0byB0aGUgd29ya2VyCi0gICAgICAgIC8vICAgIGNvbnRleHQncyB0aHJlYWQg
LS0gV29ya2VyR2xvYmFsU2NvcGVQcm94eSBpbXBsZW1lbnRhdGlvbiBlbmZvcmNlcyB0aGlzLgor
ICAgICAgICAvLyAgICBjb250ZXh0J3MgdGhyZWFkIC0tIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlUHJveHkgaW1wbGVtZW50YXRpb24gZW5mb3JjZXMgdGhpcy4KICAgICAgICAgLy8KICAgICAg
ICAgLy8gY2FzZSAyLiB4aHIgZ2V0cyBhYm9ydGVkIGFuZCB0aGUgd29ya2VyIGNvbnRleHQgY29u
dGludWVzIHJ1bm5pbmcuCiAgICAgICAgIC8vICAgIFRoZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlciBoYXMgdGhlIHVuZGVybHlpbmcgY2xpZW50IGNsZWFyZWQsIHNvIG5vIG1vcmUgY2Fs
bHMKQEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBN
YWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgICAg
ICBwdWJsaWM6CiAgICAgICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250
ZXh0J3MgdGhyZWFkLgotICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwg
Y29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYpOworICAg
ICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYs
IFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvdXRn
b2luZ1JlZmVycmVyLCBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwogICAgICAgICAgICAg
dm9pZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogICAgICAgICAgICAg
dm9pZCBjb21wdXRlSXNEb25lKCk7CkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJp
Y3M7CiAgICAgICAgIH07CiAKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJH
bG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgICAgICB2b2lkIGNv
bXB1dGVJc0RvbmUoKSBmaW5hbDsKIAotICAgICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IG1f
d29ya2VyR2xvYmFsU2NvcGU7CisgICAgICAgIFJlZjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZT4gbV9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKICAgICAgICAgUmVmPFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CiAgICAgICAgIE1haW5U
aHJlYWRCcmlkZ2UmIG1fYnJpZGdlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDFmZTkzOTg3ZWY5NjFmZGZiZTM4ZjQ3Y2E2NzFh
ZjVmZGE5OGQ5ZGYuLjdkOTc4M2Q5MTMwZDY2YzI3NWFhZGI2MmM0NDE2OWM4NjhkZDdjNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01Miw3
ICs1Miw2IEBACiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKICNpbmNsdWRlICJX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIu
aCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3Rh
Y2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNDQ4LDcgKzQ0Nyw3
IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90CiAgICAgbV90aHJlYWQud29ya2VyTG9hZGVyUHJv
eHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIsIGtleSwgd3JhcHBlZEtleUNv
bnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5nUHJveHkgPSBtYWtlUmVmKGRv
d25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53b3JrZXJMb2FkZXJQcm94eSgp
KSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgcmVzdWx0Q29u
dGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQud3JhcENyeXB0b0tleShrZXksIHdyYXBwZWRLZXlD
b250YWluZXItPmJ1ZmZlcigpKSk7CiAgICAgICAgIGRvbmVDb250YWluZXItPnNldEJvb2xlYW4o
dHJ1ZSk7Ci0gICAgICAgIHdvcmtlck1lc3NhZ2luZ1Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFtdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7CiAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgIH0p
OwpAQCAtNDcxLDcgKzQ3MCw3IEBAIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OnVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvCiAgICAgbV90aHJl
YWQud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFtyZXN1bHRDb250YWluZXIs
IHdyYXBwZWRLZXksIGtleUNvbnRhaW5lciwgZG9uZUNvbnRhaW5lciwgd29ya2VyTWVzc2FnaW5n
UHJveHkgPSBtYWtlUmVmKGRvd25jYXN0PFdvcmtlck1lc3NhZ2luZ1Byb3h5PihtX3RocmVhZC53
b3JrZXJMb2FkZXJQcm94eSgpKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgcmVzdWx0Q29udGFpbmVyLT5zZXRCb29sZWFuKGNvbnRleHQudW53cmFwQ3J5cHRv
S2V5KHdyYXBwZWRLZXksIGtleUNvbnRhaW5lci0+YnVmZmVyKCkpKTsKICAgICAgICAgZG9uZUNv
bnRhaW5lci0+c2V0Qm9vbGVhbih0cnVlKTsKLSAgICAgICAgd29ya2VyTWVzc2FnaW5nUHJveHkt
PnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW10oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICB3b3JrZXJNZXNzYWdpbmdQcm94eS0+cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CiAgICAgfSk7CkBAIC01NDQsOSArNTQzLDQgQEAgUmVmZXJyZXJQb2xpY3kg
V29ya2VyR2xvYmFsU2NvcGU6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICByZXR1cm4gbV9y
ZWZlcnJlclBvbGljeTsKIH0KIAotVGhyZWFkKiBXb3JrZXJHbG9iYWxTY29wZTo6dW5kZXJseWlu
Z1RocmVhZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGhyZWFkLnRocmVhZCgpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKaW5kZXggOTBkZjNiNmFmM2Q2M2VjNjFhZWM5YTEyM2MwODc3ZTc5ZTM0YjI2Ny4u
MGQ1YjZiZWQ2MWUzOGNmZTk3YTRlODM2ZDQ4N2M0OGIwZGRhYzgwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KIApAQCAtNTMsNyArNTQsNiBA
QCBjbGFzcyBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgV29ya2VyTG9jYXRpb247
CiBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiBjbGFzcyBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb247
Ci1jbGFzcyBXb3JrZXJUaHJlYWQ7CiBzdHJ1Y3QgV29ya2VyUGFyYW1ldGVyczsKIAogbmFtZXNw
YWNlIElEQkNsaWVudCB7CkBAIC05Myw4ICs5Myw2IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlclRo
cmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQ7IH0KIAotICAgIFRocmVhZCog
dW5kZXJseWluZ1RocmVhZCgpIGNvbnN0IGZpbmFsOwotCiAgICAgdXNpbmcgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5OwogCiAgICAgdm9pZCBwb3N0VGFzayhUYXNr
JiYpIGZpbmFsOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5j
aHJvbm91c2x5LgpAQCAtMTM4LDggKzEzNiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUlt
YWdlQml0bWFwKEltYWdlQml0bWFwOjpTb3VyY2UmJiwgSW1hZ2VCaXRtYXBPcHRpb25zJiYsIElt
YWdlQml0bWFwOjpQcm9taXNlJiYpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCaXRtYXAoSW1hZ2VC
aXRtYXA6OlNvdXJjZSYmLCBpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIEltYWdlQml0
bWFwT3B0aW9ucyYmLCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmKTsKIAotICAgIHVuc2lnbmVkIGxv
bmcgY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpIHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcisr
OyB9Ci0KICAgICBDU1NWYWx1ZVBvb2wmIGNzc1ZhbHVlUG9vbCgpOwogCiAgICAgUmVmZXJyZXJQ
b2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCBmaW5hbDsKQEAgLTE2OCw2ICsxNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpIGZpbmFsOwogCiAgICAgYm9vbCBpc1dvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFdvcmtlclRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhy
ZWFkKCkgZmluYWwgeyByZXR1cm4gJm1fdGhyZWFkOyB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29u
c3RfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOyB9CiAgICAgVVJMIGNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0IGZpbmFsOwpA
QCAtMjIxLDcgKzIxOCw2IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4gbV9tZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjsKLSAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFdvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbj4gbV9zd0NsaWVudENvbm5lY3Rpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaAppbmRleCA2MTUzMWVkNDA4NjRiMzhhY2I5OWNjMDY3
NTdiZmMxMTEyM2Q4ZDg3Li5lZTY0NjlkNWQ2MTRlM2FkODI3YTIyNTMzY2RjMGY0YTQ5MjJhNTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2FkZXJQcm94eS5oCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJNZXNzYWdpbmdQcm94
eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBDcmVhdGVzIGEgY2FjaGUgc3Rv
cmFnZSBjb25uZWN0aW9uIHRvIGJlIHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLiBNZXRob2QgbXVz
dCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZpcnR1YWwgUmVmPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbigpID0gMDsKIAogICAgIC8vIFBvc3RzIGEgdGFzayB0byB0aGUgdGhyZWFkIHdo
aWNoIHJ1bnMgdGhlIGxvYWRpbmcgY29kZSAobm9ybWFsbHksIHRoZSBtYWluIHRocmVhZCkuCiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmKSA9IDA7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAvLyBQb3N0cyBjYWxs
YmFja3MgZnJvbSBsb2FkaW5nIGNvZGUgdG8gdGhlIFdvcmtlckdsb2JhbFNjb3BlLiBUaGUgJ21v
ZGUnIGlzIHVzZWQgdG8gZGlmZmVyZW50aWF0ZQogICAgIC8vIHNwZWNpZmljIHN5bmNocm9ub3Vz
IGxvYWRpbmcgcmVxdWVzdHMgc28gdGhleSBjYW4gYmUgJ25lc3RlZCcsIHBlciBzcGVjLgogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFzayB3YXMgcG9zdGVkIHN1Y2Nlc3NmdWxseS4KLSAg
ICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGM0MjEyYjI2NTgyOTdiM2U0MTNhMTJkNTU1
YTk4MmZiODc2NTA1Y2IuLmE2MWI0MTQ4NjMzYmRmMjBkNTJiZTU3NjRkYTliNTU0ZTE2MTBkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CkBAIC0xNTMsMTQgKzE1MywxNCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFz
a1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKLVJlZjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6Y3JlYXRlQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpCitSZWZQdHI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gV29ya2Vy
TWVzc2FnaW5nUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LnBh
Z2UoKS0+Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCk7CiB9CiAKLWJvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0
IFN0cmluZyYgbW9kZSkKK2Jvb2wgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWlu
YXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggZTc4MTIyN2ZlZGJhYjdlZTI1ZGVjYmNhYjFmN2I5
MmNiYTkxMWUxNy4uM2JiNGQ5ZDgxNWEyMDkxNGFkOWYyNWIzNGE4N2NhOTFlMWM4NWJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJMb2Fk
ZXJQcm94eS4KICAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGluIHRoZSBtYWluIHRocmVhZCB0
byBwb3N0IHRhc2sgYmFjayB0byB0aGUgd29ya2VyIHRocmVhZC4KLSAgICBib29sIHBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
LCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOworICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYs
IGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50
YXRpb25zIG9mIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCkBAIC03OCw3ICs3OCw3IEBAIHByaXZh
dGU6CiAgICAgLy8gcmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8gV29ya2Vy
R2xvYmFsU2NvcGUuCiAgICAgYm9vbCBpc1dvcmtlck1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOwotICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmluYWw7CisgICAgUmVmUHRyPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSBmaW5h
bDsKIAogICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChEZWRpY2F0ZWRXb3JrZXJUaHJlYWQm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCmluZGV4IDY1NDhlMDg0OGJlMzUyMmI2YWQ5YzMyODUzMzk3NDZjN2MzOTc0Mjgu
LjgyMDlmYzU3YTU1ZmU2OWU2Nzk2YzAwMmYzNDA2YjMwNDZkOWYxZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTI2
LDIxICsyNiwyNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIgot
Ci1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRocmVhZDsKLX0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOworY2xhc3MgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkOworCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgV1RGOjpU
aHJlYWQqIHVuZGVybHlpbmdUaHJlYWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
Q2xvc2luZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdCgpID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlck9yV29ya2xldFRocmVh
ZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgPSAwOworCisgICAgdW5zaWduZWQgbG9uZyBjcmVh
dGVVbmlxdWVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyKys7IH0KKwor
cHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFRocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMGRmYzRlY2RlMzRhY2JkNDcxNWY1
ZThjZjE1MGIwODY4NGE5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBUaHJlYWQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgV29ya2VyTG9hZGVyUHJveHk7CitjbGFzcyBXb3JrZXJSdW5Mb29wOworCitjbGFzcyBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldvcmtlck9yV29ya2xl
dFRocmVhZCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgV1RGOjpUaHJlYWQqIHRocmVhZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSA9IDA7Cisg
ICAgdmlydHVhbCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcAppbmRleCBiYjYxZmM1ZjJhOTdkYjg0YjExM2JlMjIzYzdhN2FkYzcxOWI0OTQ0
Li42YjcwOTVkMjU3YTVmMjJkZmQ5NGVkYjIzNjI4YmQ4MTlkY2RlYWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBNZXNzYWdl
UXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSogY29udAogTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpy
dW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IE1vZGVQ
cmVkaWNhdGUmIHByZWRpY2F0ZSwgV2FpdE1vZGUgd2FpdE1vZGUpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT51bmRlcmx5aW5nVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKKyAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFk
KCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBKU0M6OkpTUnVuTG9v
cFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvbkNhbGxiYWNrIHRpbWVyQWRkZWRUYXNrID0gV1RGOjpj
cmVhdGVTaGFyZWRUYXNrPEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uVHlw
ZT4oW3RoaXNdIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgaGVy
ZSwgd2UganVzdCB3YW50IHRvIGxvb3AgYXJvdW5kIHJ1bkluTW9kZQpAQCAtMjI2LDcgKzIyNiw3
IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250CiB2b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bkNsZWFu
dXBUYXNrcyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsKICAgICBBU1NF
UlQoY29udGV4dCk7Ci0gICAgQVNTRVJUKGNvbnRleHQtPnVuZGVybHlpbmdUaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRU
aHJlYWQoKS0+dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9t
ZXNzYWdlUXVldWUua2lsbGVkKCkpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGQ3NzYzM2MwNTQ2ZjQzZGVkZmQ1YTA0YzZlNDQz
YTg5Zjk5MGYyM2YuLjYyNDRiM2NjMDA4MWNiNjA1YTE3ZjZkNDlhZTI4NDYyZTc2ODQxNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRUaHJlYWQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CiAj
aW5jbHVkZSA8bWVtb3J5PgpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyUGFy
YW1ldGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKLWNsYXNzIFdvcmtlclRocmVhZCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKK2NsYXNzIFdvcmtl
clRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+LCBwdWJs
aWMgV29ya2VyT3JXb3JrbGV0VGhyZWFkIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJU
aHJlYWQoKTsKIApAQCAtODcsOSArODgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7
CiAgICAgdm9pZCByZXN1bWUoKTsKIAotICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1
cm4gbV90aHJlYWQuZ2V0KCk7IH0KLSAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1
cm4gbV9ydW5Mb29wOyB9Ci0gICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5
KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJMb2FkZXJQcm94eTsgfQorICAgIFRocmVhZCogdGhy
ZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KKyAgICBXb3JrZXJS
dW5Mb29wJiBydW5Mb29wKCkgZmluYWwgeyByZXR1cm4gbV9ydW5Mb29wOyB9CisgICAgV29ya2Vy
TG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgZmluYWwgeyByZXR1cm4gbV93b3JrZXJM
b2FkZXJQcm94eTsgfQogICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KICAgICBXb3JrZXJS
ZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dv
cmtlclJlcG9ydGluZ1Byb3h5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCmluZGV4IDYwNDhiZWUzOGE2ODJlNTllY2FiNWE4ZGI5NTVhZDFjZmY0N2M1YjguLmE5MGZm
NmEzODc3ZjkzZTlkZjM0YzYzMjcxZTBkYzg3NjEwNWI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCiAgICAgYWxsU2VydmljZVdvcmtl
clRocmVhZFByb3hpZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKLWJvb2wgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQogewogICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE1NCwxMiArMTU0LDEyIEBAIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEJ5V2ViSW5zcGVjdG9yKGJvb2wg
ZGlzCiAgICAgfSk7ICAgCiB9CiAKLVJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQorUmVmUHRy
PENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRl
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbikKICAgICAgICAgbV9jYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uID0gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5jcmVhdGVDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuICptX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CisgICAg
cmV0dXJuIG1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZl
dGNoTG9hZGVyPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIoRmV0
Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVVJMJiBibG9iVVJMKQpAQCAtMTgyLDcgKzE4
Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpub3RpZnlOZXR3b3JrU3RhdGVD
aGFuZ2UoYm9vbCBpc09ubGluZSkKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNj
b3BlKFtpc09ubGluZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBw
b3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFtpc09ubGluZV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byYgZ2xvYmFsU2Nv
cGUgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGdsb2Jh
bFNjb3BlLnNldElzT25saW5lKGlzT25saW5lKTsKICAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3Bl
ID0gbWFrZVJlZihnbG9iYWxTY29wZSksIGlzT25saW5lXSB7CkBAIC0yMDIsNyArMjAyLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25uZWN0aW8KIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNr
cy5jb250YWlucyhrZXkpKTsKICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVu
dC5jb3B5UmVmKCkpOwotICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2xpZW50ID0gV1RGTW92ZShjbGll
bnQpLCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVy
ID0gcmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29w
eSgpXShhdXRvJikgbXV0YWJsZSB7CisgICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRl
ZENvcHkoKSwgcmVmZXJyZXIgPSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9w
dGlvbnMuaXNvbGF0ZWRDb3B5KCldKGF1dG8mKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkKCku
cXVldWVUYXNrVG9GaXJlRmV0Y2hFdmVudChXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUoY2xpZW50
SWQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25z
KSk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CkBAIC0yMTgsNyAr
MjE4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNhbmNlbEZldGNoKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGkKICAgICBpZiAobV9vbmdvaW5nRmV0Y2hU
YXNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmlu
ZygpOwogCi0gICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0g
Y2xpZW50LnJlbGVhc2VOb25OdWxsKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW2NsaWVudCA9IGNs
aWVudC5yZWxlYXNlTm9uTnVsbCgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgY2xpZW50LT5jYW5jZWwoKTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgp
KTsKIH0KQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTV1NlcnZlckNvbm5lY3RpbwogICAgIGlm
ICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFtjbGllbnQgPSBtYWtlUmVmKCpjbGllbnQpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKKyAgICBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKFtjbGllbnQgPSBtYWtlUmVmKCpjbGllbnQpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKICAgICAgICAgY2xpZW50LT5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwogICAgIH0s
IFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaAppbmRleCA4NTQ1ZTg0Y2I1ODZlNDRhYjljNzk0MTVlMDBkNmI2ZTM2MDczYjhm
Li4xZDQ3MmVmMGU3NjIwOTg1ODNmMzMzOTZiYTMyOWJjMDI0NzI0ZDdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtODUsOSArODUsOSBAQCBwcml2YXRlOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09uTGlu
ZSk7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQotICAgIGJvb2wgcG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0
IFN0cmluZyYgbW9kZSkgZmluYWw7CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKSBmaW5hbDsKICAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKLSAgICBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpIGZpbmFsOworICAgIFJlZlB0cjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZmlu
YWw7CiAKICAgICAvLyBXb3JrZXJEZWJ1Z2dlclByb3h5CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
RGVidWdnZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAxZGYzYjI5NzcwZjdmOTFlZWYxZTY2YjI1
MDk3MGMzMWYyYjQzZmUwLi41NjM4MDBkYTBiZmM5MmYzOWM0OTkzYmM1NDVkNjM0YmNjYjg4MzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCisjaW5jbHVk
ZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2xldFBhcmFtZXRlcnMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0xvY2suaD4KQEAgLTU0LDcgKzU1LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUoY29uc3QgV29ya2xldFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBhbGxXb3JrbGV0R2xvYmFsU2NvcGVzU2V0KCkuYWRkKHRoaXMp
OwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQpOwogCi0gICAgc2V0U2Vj
dXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdp
bi5jb3B5UmVmKCkpKTsKKyAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdp
blBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGhpcy0+dXJsKCkpKSk7CiAg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyB0aGlzLT51cmwoKSB9LCAqdGhpcykpOwogfQogCkBAIC03MSw3ICs3Miw3IEBA
IFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPEpTQzo6Vk0+JiYgdm0sIFNjCiAKICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgpKTsK
IAotICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVh
dGUobV90b3BPcmlnaW4uY29weVJlZigpKSk7CisgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
U2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRoaXMt
PnVybCgpKSkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgdGhpcy0+dXJsKCkgfSwgKnRoaXMpKTsKIH0KIApAQCAt
MTgzLDExICsxODQsNjQgQEAgUmVmZXJyZXJQb2xpY3kgV29ya2xldEdsb2JhbFNjb3BlOjpyZWZl
cnJlclBvbGljeSgpIGNvbnN0CiAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
OwogfQogCi12b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZmV0Y2hBbmRJbnZva2VTY3JpcHQoY29u
c3QgVVJMJiwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjpmZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmIG1vZHVsZVVSTCwg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9u
LgotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgbV9zY3JpcHRGZXRj
aEpvYnMuYXBwZW5kKHsgbW9kdWxlVVJMLCBjcmVkZW50aWFscywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikgfSk7CisgICAgcHJvY2Vzc05leHRTY3JpcHRGZXRjaEpvYklmTmVlZGVkKCk7Cit9
CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcm9jZXNzTmV4dFNjcmlwdEZldGNoSm9iSWZO
ZWVkZWQoKQoreworICAgIGlmIChtX3NjcmlwdEZldGNoSm9icy5pc0VtcHR5KCkgfHwgbV9zY3Jp
cHRMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHNjcmlwdEZldGNoSm9iID0g
bV9zY3JpcHRGZXRjaEpvYnMuZmlyc3QoKTsKKworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
IHsgc2NyaXB0RmV0Y2hKb2IubW9kdWxlVVJMIH07CisKKyAgICBGZXRjaE9wdGlvbnMgZmV0Y2hP
cHRpb25zOworICAgIGZldGNoT3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1l
T3JpZ2luOworICAgIGZldGNoT3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRl
ZmF1bHQ7CisgICAgZmV0Y2hPcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVj
dDo6Rm9sbG93OworICAgIGZldGNoT3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OldvcmtlcjsKKyAgICBmZXRjaE9wdGlvbnMuY3JlZGVudGlhbHMgPSBzY3Jp
cHRGZXRjaEpvYi5jcmVkZW50aWFsczsKKworICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQgPSBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ko
KSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNoaWxkU3JjRGlyZWN0aXZlOwor
CisgICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOworICAg
IG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoKnRoaXMsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUoZmV0Y2hPcHRpb25zKSwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQsIFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLCAqdGhpcyk7Cit9CisKK3ZvaWQgV29ya2xldEds
b2JhbFNjb3BlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpub3RpZnlGaW5p
c2hlZCgpCit7CisgICAgYXV0byBjb21wbGV0ZWRKb2IgPSBtX3NjcmlwdEZldGNoSm9icy50YWtl
Rmlyc3QoKTsKKworICAgIGlmIChtX3NjcmlwdExvYWRlci0+ZmFpbGVkKCkpIHsKKyAgICAgICAg
ZGlkQ29tcGxldGVTY3JpcHRGZXRjaEpvYihXVEZNb3ZlKGNvbXBsZXRlZEpvYiksIEV4Y2VwdGlv
biB7IE5ldHdvcmtFcnJvciwgbWFrZVN0cmluZygiRmFpbGVkIHRvIGZldGNoIG1vZHVsZSwgZXJy
b3I6ICIsIG1fc2NyaXB0TG9hZGVyLT5lcnJvcigpLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJl
YWxseSBiZSBydW4gYXMgYSBtb2R1bGUgc2NyaXB0IGJ1dCB3ZSBkb24ndCBzdXBwb3J0IHRoaXMg
aW4gd29ya2VycyB5ZXQuCisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsK
KyAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCksIFVSTChtX3NjcmlwdExvYWRlci0+cmVzcG9uc2VVUkwoKSkpLCBleGNlcHRpb24p
OworICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIG1fc2NyaXB0LT5zZXRFeGNlcHRpb24oZXhj
ZXB0aW9uKTsKKworICAgIGRpZENvbXBsZXRlU2NyaXB0RmV0Y2hKb2IoV1RGTW92ZShjb21wbGV0
ZWRKb2IpLCB7IH0pOworfQorCit2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6ZGlkQ29tcGxldGVT
Y3JpcHRGZXRjaEpvYihTY3JpcHRGZXRjaEpvYiYmIGpvYiwgT3B0aW9uYWw8RXhjZXB0aW9uPiBy
ZXN1bHQpCit7CisgICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRyOworCisgICAgam9iLmNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0KSk7CisKKyAgICBwcm9jZXNzTmV4dFNjcmlwdEZl
dGNoSm9iSWZOZWVkZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA2NDZhZDA2YTE0YTE2
MzM4ODk2YWZjODQxMDAzMTg3M2RiMzc0NmMyLi4xNDhiYmI1MzNjNWQyZDZmN2YwODliZDkzZDdj
MjA2MWFlN2M4OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuaApAQCAtMzQsMTAgKzM0LDEyIEBACiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVG
bGFncy5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDcsMTMgKzQ5LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3Mg
V29ya2VyRXZlbnRMb29wOworY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwogCiBzdHJ1Y3QgV29y
a2xldFBhcmFtZXRlcnM7CiAKIGVudW0gV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGUg
eyB9OwogdXNpbmcgV29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZp
ZXI8V29ya2xldEdsb2JhbFNjb3BlSWRlbnRpZmllclR5cGU+OwogCi1jbGFzcyBXb3JrbGV0R2xv
YmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrbGV0R2xvYmFsU2NvcGU+LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlIHsKK2NsYXNzIFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmts
ZXRHbG9iYWxTY29wZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIHB1YmxpYyBXb3JrZXJTY3JpcHRMb2FkZXJDbGll
bnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV29ya2xldEdsb2JhbFNjb3BlKTsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrbGV0R2xvYmFsU2NvcGUoKTsKQEAgLTgwLDYgKzgzLDgg
QEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiAgICAgV29ya2xldFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpIGZpbmFsIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9
CisgICAgdm9pZCBjbGVhclNjcmlwdCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9CisgICAgV29y
a2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKSBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIApAQCAtODksNyArOTQs
NiBAQCBwdWJsaWM6CiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCkgZmluYWwg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUu
Ci0gICAgVGhyZWFkKiB1bmRlcmx5aW5nVGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0Nsb3Npbmc7IH0KIAogICAgIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTAxLDIxICsxMDUsMjQgQEAgcHVibGljOgogCiAgICAgdm9pZCBm
ZXRjaEFuZEludm9rZVNjcmlwdChjb25zdCBVUkwmLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFscywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKIAorICAg
IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQo
KTsgfQorICAgIGNvbnN0IERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2xldEdsb2Jh
bFNjb3BlKGNvbnN0IFdvcmtsZXRQYXJhbWV0ZXJzJik7CiAgICAgV29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiwgUmVmPEpTQzo6Vk0+JiYsIFNjcmlwdFNvdXJjZUNvZGUmJik7CiAgICAgV29y
a2xldEdsb2JhbFNjb3BlKGNvbnN0IFdvcmtsZXRHbG9iYWxTY29wZSYpID0gZGVsZXRlOwogICAg
IFdvcmtsZXRHbG9iYWxTY29wZShXb3JrbGV0R2xvYmFsU2NvcGUmJikgPSBkZWxldGU7CiAKLSAg
ICBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0
KCk7IH0KLSAgICBjb25zdCBEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBXb3JrZXJFdmVudExvb3AqIGV4aXN0aW5n
RXZlbnRMb29wKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudExvb3AuZ2V0KCk7IH0KKyAgICBFdmVu
dExvb3BUYXNrR3JvdXAqIGRlZmF1bHRUYXNrR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1
bHRUYXNrR3JvdXAuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblBy
b3h5KCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhUYXNrJiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2b2lkIHBvc3RUYXNrKFRhc2smJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmlu
YWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CkBAIC0xMzIsNiArMTM5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsK
ICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbG9uZykgZmluYWw7CiAKKyAgICAvLyBXb3JrZXJTY3Jp
cHRMb2FkZXJDbGllbnQuCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBu
b3RpZnlGaW5pc2hlZCgpIGZpbmFsOworCiAgICAgRXZlbnRUYXJnZXQqIGVycm9yRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKQEAg
LTE0Myw2ICsxNTQsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCisgICAgc3RydWN0IFNjcmlwdEZldGNoSm9iIHsKKyAgICAgICAgVVJMIG1vZHVs
ZVVSTDsKKyAgICAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7CisgICAg
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4gY29tcGxl
dGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIHZvaWQgcHJvY2Vzc05leHRTY3JpcHRGZXRjaEpv
YklmTmVlZGVkKCk7CisgICAgdm9pZCBkaWRDb21wbGV0ZVNjcmlwdEZldGNoSm9iKFNjcmlwdEZl
dGNoSm9iJiYsIE9wdGlvbmFsPEV4Y2VwdGlvbj4pOworCiAgICAgV2Vha1B0cjxEb2N1bWVudD4g
bV9kb2N1bWVudDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cj4gbV9zY3JpcHQ7CkBAIC0xNTUsNiArMTc1LDEwIEBAIHByaXZhdGU6CiAgICAgVVJMIG1fdXJs
OwogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fanNSdW50aW1lRmxhZ3M7CiAgICAgT3B0aW9uYWw8
U2NyaXB0U291cmNlQ29kZT4gbV9jb2RlOworCisgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRl
cj4gbV9zY3JpcHRMb2FkZXI7CisgICAgRGVxdWU8U2NyaXB0RmV0Y2hKb2I+IG1fc2NyaXB0RmV0
Y2hKb2JzOworCiAgICAgYm9vbCBtX2lzQ2xvc2luZyB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
N2NkMDFlMzA1NmUzMjJjZTY5M2NiY2FiOTllYjA4NWIwNzU5NDJkZC4uNGI1MDhjZDBlMDIwNTUw
ZjU2NzViZDA1MWE5YjU5MTgxMGU5MDU3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEw
LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFdv
cmtsZXQuYWRkTW9kdWxlKCkgdG8gYWN0dWFsbHkgZmV0Y2ggdGhlIG1vZHVsZSBzY3JpcHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzI0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBsYXlvdXQg
dGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1
bGUtZmFpbHVyZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlv
d29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMC0wNiAgRGll
Z28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJl
dmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBSZW1vdmUgdGVzdHMgcGFzc2luZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFpbHVyZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZh
aWx1cmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjNzQ3MWU3MmVmODkwODE2OTNhM2M4MGNj
ZDZiY2Y2YTE2NGEzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9h
dWRpb3dvcmtsZXQtYWRkTW9kdWxlLWZhaWx1cmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKK1Rlc3RzIHRoYXQgQXVkaW9Xb3JrbGV0LmFkZE1vZHVsZSgpIHJlamVjdHMgdGhlIHByb21p
c2Ugd2hlbiB0aGUgVVJMIGlzIGludmFsaWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGNvbnRleHQuYXVkaW9Xb3JrbGV0LmFkZE1vZHVsZShpbnZhbGlkVVJMKTsgcmVq
ZWN0ZWQgcHJvbWlzZSAgd2l0aCBTeW50YXhFcnJvcjogTW9kdWxlIFVSTCBpcyBpbnZhbGlkLgor
UEFTUyBjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoJ2RvZXNub3RFeGlzdC5qcycpOyBy
ZWplY3RlZCBwcm9taXNlICB3aXRoIE5ldHdvcmtFcnJvcjogRmFpbGVkIHRvIGZldGNoIG1vZHVs
ZSwgZXJyb3I6IFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIu
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29ya2xldC1hZGRNb2R1bGUtZmFp
bHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW93b3JrbGV0LWFkZE1vZHVsZS1m
YWlsdXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM3NTdkNzAzZTNiNjNlN2Y5ZDQ1OTczYTBhZjhjYzUz
ZGVhNjNiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvd29y
a2xldC1hZGRNb2R1bGUtZmFpbHVyZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgQXVkaW9Xb3Jr
bGV0LmFkZE1vZHVsZSgpIHJlamVjdHMgdGhlIHByb21pc2Ugd2hlbiB0aGUgVVJMIGlzIGludmFs
aWQuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworY29uc3QgaW52YWxpZFVSTCA9ICJodHRw
Oi8vaW52YWxpZDp1cmwiOworCithc3luYyBmdW5jdGlvbiB0ZXN0KCkgeworICAgIGNvbnRleHQg
PSBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgyLCAxMDAsIDQ0MTAwKTsKKyAgICBhd2FpdCBzaG91
bGRSZWplY3RXaXRoRXJyb3JOYW1lKCJjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoaW52
YWxpZFVSTCk7IiwgIlN5bnRheEVycm9yIik7CisgICAgYXdhaXQgc2hvdWxkUmVqZWN0V2l0aEVy
cm9yTmFtZSgiY29udGV4dC5hdWRpb1dvcmtsZXQuYWRkTW9kdWxlKCdkb2Vzbm90RXhpc3QuanMn
KTsiLCAiTmV0d29ya0Vycm9yIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>